Wenn Sie die Art und Weise kontrollieren können, wie Ihre Anwendung eine Verbindung herstellt (z. B. eine Initialisierungsanweisung für Ihren Verbindungspool), müssen Sie nur Folgendes ausführen:
ALTER SESSION SET CURRENT_SCHEMA = PRODUCTS;
Ab diesem Zeitpunkt (während der Lebensdauer der Sitzung) wird in den PRODUCTS
nach jedem nicht qualifizierten Objektnamen gesucht Schema.
Alle Zuschüsse für PRODUCTS_READONLY
wird in Kraft treten. Die Sitzung wird unter den Anmeldeinformationen (und Sicherheitseinschränkungen) des ursprünglichen Benutzers ausgeführt, der für die Anmeldung verwendet wurde.
Wenn Sie die Art und Weise, wie die Verbindung hergestellt oder initialisiert wird, nicht ändern können, sollte dies auch durch einen Logon-Trigger erreicht werden:
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;
/
Beachten Sie, dass es entscheidend ist, alle zu trappen Ausnahme, da sonst ein potenzieller Fehler in der ausgeführten SQL alle effektiv von der Datenbank abmelden wird. Verwenden Sie es also mit Vorsicht und testen Sie es gut, bevor Sie es in Produktion nehmen.