Oracle 用户没有从角色中获得特权

Oracle user does not get privilege from role

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

现在U1已经创建了一个角色TESTROLE,赋予了它一些权限,并授予了U2 TESTROLE。 U2 可以看到 USER_ROLE_PRIVS 中的 TESTROLE 但不继承其权限:它无法访问 table,并且权限未在 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(table 或视图不存在)。当我将 SELECT 权限直接授予 U2 时,访问有效。当 U2 调用 SELECT * FROM USER_ROLE_PRIVS 时,TESTROLE 就在那里,DEFAULT_ROLE=YES。

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

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