Pokud máte kontrolu nad způsobem, jakým se vaše aplikace připojuje (např. inicializační příkaz pro váš fond připojení), vše, co musíte udělat, je spustit:
ALTER SESSION SET CURRENT_SCHEMA = PRODUCTS;
Od tohoto okamžiku (během doby trvání relace) bude jakýkoli nekvalifikovaný název objektu vyhledáván v PRODUCTS
schéma.
Všechny granty udělené PRODUCTS_READONLY
bude v platnosti. Relace bude probíhat pod přihlašovacími údaji (a bezpečnostními omezeními) původního uživatele použitého k přihlášení.
Pokud nemůžete změnit způsob navázání nebo inicializaci připojení, měl by to provést také spouštěč přihlášení:
create or replace trigger logon_trg
after logon on database
begin
if (user = 'PRODUCTS_READONLY') then
execute immediate 'alter session set current_schema = products';
end if;
exception
when others then null; -- prevent a login failure due to an exception
end logon_trg;
/
Všimněte si, že je důležité zachytit jakékoli výjimku, protože jinak případná chyba ve spuštěném SQL efektivně odhlásí každého z databáze. Používejte jej proto opatrně a před uvedením do výroby jej dobře otestujte.