1

我正在运行 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 生成 a 时SELECT * FROM U1.TABLE1,它会得到 ORA-00942(表或视图不存在)。当我将 SELECT 权限直接授予 U2 时,访问工作正常。当 U2 调用SELECT * FROM USER_ROLE_PRIVSTESTROLE 时,DEFAULT_ROLE=YES。

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

4

1 回答 1

2

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

于 2017-03-15T12:52:13.757 回答