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特性是我们经常忽视的一个问题知识点。