设置具有授权选择的Oracle数据库角色 - '表不存在'

时间:2014-12-09 18:25:24

标签: sql oracle

我有两个用户,ADAM1和ADAM2。我想创建一个角色,只对ADAM1中的表提供ADAM2的只读访问/选择。

作为ADAM1,我这样做了:

create role ECN_READ_ONLY not identified;
grant select on ADAM1.T_ADMIN to ECN_READ_ONLY;
grant ECN_READ_ONLY to ADAM2;

然后在ADAM2中我这样做了:

select * from ADAM1.T_ADMIN; 
--Error! table does not exist.

select * from USER_ROLE_PRIVS where USERNAME = 'ADAM2'; 


USERNAME=ADAM2
GRANTED_ROLE=ECN_READ_ONLY
ADMIN_OPTION=NO
DEFAULT_ROLE=YES
OS_GRANTED=NO

select * from ROLE_TAB_PRIVS where ROLE = 'ECN_READ_ONLY';    


ROLE=ECN_READ_ONLY
OWNER=ADAM1
TABLE_NAME=T_ADMIN
COLUMN_NAME=
PRIVILEGE=SELECT
GRANTABLE=NO

出了什么问题?

如果我只是对ADAM2进行直接GRANT SELECT,那么它可以正常工作。

1 个答案:

答案 0 :(得分:0)

由Multisync评论:

检查

select * from session_roles; 

也许用户在您获得此授权之前已登录。他仍然活跃