如果您可以控制应用程序的连接方式(例如,连接池的初始化语句),则只需运行:
ALTER SESSION SET CURRENT_SCHEMA = PRODUCTS;
从那时起(在会话的生存期内),将在
PRODUCTS模式中搜索任何不合格的对象名称。
授予的所有补助金
PRODUCTS_READONLY将生效。该会话将在用于登录的原始用户的凭据(和安全限制)下运行。
如果您无法更改建立或初始化连接的方式,则登录触发器也应完成以下操作:
create or replace trigger logon_trg after logon on databasebegin 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 exceptionend logon_trg;/
请注意,捕获 任何 异常至关重要,因为否则执行的SQL中潜在的错误将有效地使所有人退出数据库。因此,在投入生产之前请谨慎使用并进行良好的测试。



