Oracle用户无法从角色

时间:2017-03-15 11:25:09

标签: oracle grant role privilege

我正在运行Oracle XE(11.2.0.2.0)。我有一个用户U1创建/拥有表,另一个用户U2使用它们。当U1授予U2特权时,一切正常。

现在U1创建了一个TESTROLE角色,授予了一些特权,并授予U2 TESTROLE。 U2可以在USER_ROLE_PRIVS中看到TESTROLE,但不继承其权限:它无法访问表,并且USER_TAB_PRIVS中未列出权限。

这是我做的(作为U1):

CREATE TABLE TABLE1 ( FIELD1 VARCHAR2(20) );
CREATE ROLE TESTROLE NOT IDENTIFIED;
GRANT SELECT ON TABLE1 TO TESTROLE;
GRANT TESTROLE TO U2;
ALTER USER U2 DEFAULT ROLE ALL;

(是的,我为U1提供了此测试的ALTER USER权限。)

现在,当U2生成SELECT * FROM U1.TABLE1时,它获得ORA-00942(表或视图不存在)。当我将SELECT权限直接授予U2时,访问有效。当U2调用SELECT * FROM USER_ROLE_PRIVS时,TESTROLE就在那里,DEFAULT_ROLE = YES。

起初我认为可能XE不支持角色,但我发现没有这样的限制。我错过了什么?任何提示都表示赞赏。

1 个答案:

答案 0 :(得分:2)

如果在您向其授予角色时已登录U2,请尝试重新登录U2并重新登录。