我正在运行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 回答
如果在您向其授予角色时登录了U2,则尝试重新登录U2并重新登录 .