我在自治数据库中使用基于版本的重新定义。如何强制用户使用我想要的版本?
免责声明:我是自治数据库的产品经理。
这可以使用登录触发器和 dbms_session 包来完成。
这是一个例子。我使用管理员用户创建了两个版本,并为测试用户授予了访问权限。
SQL> create edition e1;
Edition created.
SQL> create edition e2;
Edition created.
SQL> grant use on edition e2 to test;
Grant succeeded.
然后我创建一个登录触发器,在该用户登录时设置该用户的版本。
create or replace trigger sess_logon
after logon on database
begin
if sys_context('USERENV','SESSION_USER') = 'TEST'
then
DBMS_SESSION.SET_EDITION_DEFERRED ('E2');
end if;
END;
/
当此用户登录时,她可以通过此查询查看当前版本。
SQL> select sys_context('userenv', 'current_edition_name') from dual;
SYS_CONTEXT('USERENV','CURRENT_EDITION_NAME')
--------------------------------------------------------------------------------
E2
免责声明:我是自治数据库的产品经理。