Oracle中使用者、角色、與許可權涉及的相關表及檢視

bitifi發表於2015-09-22

相信許多朋友在學習oracle資料庫的時候對user_、all_、dba_
ORACLE中靜態資料字典檢視按照字首的不同通常被分為三類:
1. USER_ 類檢視包含了使用者所擁有的相關物件資訊,使用者可以透過這個檢視查詢自己擁有的物件資訊。
2. ALL_ 類檢視包含了使用者有許可權訪問的所有物件的資訊。
3. DBA_ 類檢視包含了資料庫所有相關物件的資訊,使用者需要 SELECT ANY TABLE 許可權才能訪問。

這三者的關係大致可以用如下示意圖描述:



以下為三者的相關內容。
1 、
三者的資料字典表

1.1 使用者

select * from dba_users;

select * from all_users;

select * from user_users;

1.2 角色

select * from dba_roles;

1.3 許可權

分為系統許可權與物件許可權:

select * from system_privilege_map;(系統)

select * from table_privilege_map;

三者之間關係的字典表

這類關係字典表的表名字尾都包含"_privs"

2.1 使用者與角色

使用者擁有的角色:

select * from dba_role_privs;

select * from user_role_privs;

select * from role_role_privs;

role_role_privsuser_role_privs 都是dba_role_privs的子集.

dba_role_privsgrantee欄位包括使用者名稱與角色名.

user_role_privsusername欄位包括操作使用者的使用者名稱.

role_role_privsrole欄位只是角色名.

2.2 使用者與許可權

使用者擁有的系統許可權:

select * from dba_sys_privs;

select * from user_sys_privs;

注意沒有all_sys_privs.

 

使用者擁有的物件許可權:

select * from dba_tab_privs;

select * from all_tab_privs;

select * from user_tab_privs;

select * from dba_col_privs;

select * from all_col_privs;

select * from user_col_privs;

2.3 角色與許可權

查詢授出去的物件許可權(通常是屬主自己查)

select * from role_sys_privs;

select * from role_tab_privs;

其他

查詢授出去的物件許可權(通常是屬主自己查)

select * from user_tab_privs_made;

select * from all_tab_privs_made;

使用者擁有的物件許可權

select * from user_tab_privs_recd;

select * from all_tab_privs_recd;

使用者分配出去的列的物件許可權

select * from user_col_privs_made;

select * from all_col_privs_made;

使用者擁有的關於列的物件許可權

select * from user_col_privs_recd;

select * from all_col_privs_recd;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30496894/viewspace-1806072/,如需轉載,請註明出處,否則將追究法律責任。

相關文章