聊聊Oracle Default Role
作者:网络转载 发布时间:[ 2014/12/16 14:32:44 ] 推荐标签:数据库 Oracle 权限
5、Default Role效果
设置之后,我们登录test进行效果观察。
SQL> conn test/test@sicsdb_linux
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.4.0
Connected as test
SQL> select * from user_role_privs;
USERNAME GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE OS_GRANTED
------------------------------ ------------------------------ ------------ ------------ ------------
TEST CONNECT NO YES NO
TEST RESOURCE NO NO NO
TEST SICSPCCGROLE NO NO NO
TEST SICSPCTBCGROLE NO NO NO
TEST SICSPCTBTRROLE NO NO NO
TEST SICSPCTRROLE NO NO NO
TEST TESTROLE NO NO NO
7 rows selected
在session层面,权限如下:
SQL> select * from session_roles;
ROLE
------------------------------
CONNECT
登录之后,只有default role才能进行赋予,其他角色权限不能自动添加。
--典型resource权限
SQL> create table t (id number(10));
create table t (id number(10))
ORA-01031: 权限不足
显示设置角色权限:
SQL> set role resource;
Role set
SQL> create table t (id number(10));
Table created
SQL> select * from session_roles;
ROLE
------------------------------
RESOURCE
设置其他角色之后,原有权限不能使用。
SQL> select * from session_roles;
ROLE
------------------------------
TESTROLE
SQL> create table m (id number(10));
create table m (id number(10))
ORA-01031: 权限不足
使用set role all,可以将所有角色权限一并赋予。
SQL> set role all;
Role set
SQL> select * from session_roles;
ROLE
------------------------------
CONNECT
RESOURCE
SICSPCCGROLE
SICSPCTRROLE
SICSPCTBCGROLE
SICSPCTBTRROLE
TESTROLE
7 rows selected
重新登录之后,依然是default role才能自动赋予。
SQL> conn test/test@sicsdb_linux
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.4.0
Connected as test
SQL> select * from session_roles;
ROLE
------------------------------
CONNECT
另外,使用set role all except xxx,可以将指定的role剔除。
SQL> set role all except resource;
Role set
SQL> select * from session_roles;
ROLE
------------------------------
CONNECT
SICSPCCGROLE
SICSPCTRROLE
SICSPCTBCGROLE
SICSPCTBTRROLE
TESTROLE
6 rows selected
6、结论
Oracle角色role权限是一种非常常用的授权机制,default role特性是我们经常忽视的一个问题知识点。

sales@spasvo.com