0

我在自治数据库中使用基于版本的重新定义。如何强制用户使用我想要的版本?

免责声明:我是自治数据库的产品经理。

4

1 回答 1

0

这可以使用登录触发器和 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

免责声明:我是自治数据库的产品经理。

于 2021-11-24T23:29:29.897 回答