mak*_*aks 3 sql oracle roles oracle10g
我有拥有管理员权限的用户admin和默认的oracle XE用户hr.用户admin已创建表CAR,角色S并已在表CAR上授予此角色SELECT.然后管理员将角色S授予用户hr.但是当hr尝试时select * from admin.car,数据库会给出一个错误,表明该表或视图不存在.这是代码:
create role S;
grant select on admin.car to S;
grant S to hr;
Run Code Online (Sandbox Code Playgroud)
问题是什么?
当用户登录Oracle时,将启用所有默认角色,但必须使用SET ROLE语句启用非默认角色:
SET ROLE S;
Run Code Online (Sandbox Code Playgroud)
默认角色表示始终在登录时为当前会话启用该角色.它还使得不再需要发布SET ROLE声明.要将角色设置为DEFAULT角色,您需要发出ALTER USER语句:
ALTER USER hr
DEFAULT ROLE S;
Run Code Online (Sandbox Code Playgroud)
参考: