角色并不属于对象,因此角色并不存储在数据库的用户下。
角色和用户属于同一个命名空间,角色的名称和用户的名称不能相同。
SQL> CREATE USER U1 IDENTIFIED BY U1;
用户已创建。
SQL> CREATE ROLE U1;
CREATE ROLE U1
*
第 1 行出现错误:
ORA-01921: 角色名 'U1' 与另一个用户名或角色名发生冲突
用户拥有CREATE ROLE权限后,可以建立角色,在建立角色后,被自动授予这个角色且包含管理权限。
不过这个权限可以由其他由管理权限的用户从创建者收回,而且删除创建者并不会影响这个角色的存在:
SQL> GRANT DBA TO U1;
授权成功。
SQL> CONN U1/U1
已连接。
SQL> CREATE ROLE R_U1;
角色已创建。
SQL> SELECT *
2 FROM DBA_ROLE_PRIVS
3 WHERE GRANTEE = USER;
GRANTEE GRANTED_ROLE ADM DEF
------------------------------ ------------------------------ --- ---
U1 DBA NO YES
U1 R_U1 YES YES
SQL> GRANT R_U1 TO YANGTK WITH ADMIN OPTION;
授权成功。
SQL> CONN YANGTK
输入口令:
已连接。
SQL> REVOKE R_U1 FROM U1;
撤销成功。
SQL> SELECT *
2 FROM DBA_ROLE_PRIVS
3 WHERE GRANTEE = 'U1';
GRANTEE GRANTED_ROLE ADM DEF
------------------------------ ------------------------------ --- ---
U1 DBA NO YES
SQL> DROP USER U1;
用户已删除。
SQL> SELECT *
2 FROM DBA_ROLE_PRIVS
3 WHERE GRANTEE = USER;
GRANTEE GRANTED_ROLE ADM DEF
------------------------------ ------------------------------ --- ---
YANGTK R_U1 YES YES
YANGTK RESOURCE NO YES
YANGTK DBA NO YES
YANGTK CONNECT NO YES
其实要说角色不存在任何用户内也不准确,毕竟角色信息是保存在数据字典中,也就是SYS用户下,不过角色并不像其他对象那样需要一个明确的OWNER,即使角色的创建者被删除也不会影响到角色本身。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-674913/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/4227/viewspace-674913/