我有两个用户,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,那么它可以正常工作。
答案 0 :(得分:0)
由Multisync评论:
检查
select * from session_roles;
也许用户在您获得此授权之前已登录。他仍然活跃