Oracle 安全體系數據字典速查手冊
掌握 DBA_、ALL_、USER_ 三大前綴視圖,快速定位用戶、角色、系統/對象權限及其關係。
一、基礎實體視圖
| 實體 | DBA_ 視圖 (全庫) | ALL_ 視圖 (可訪問) | USER_ 視圖 (當前用戶) |
| 用戶 | DBA_USERS | ALL_USERS | USER_USERS |
| 角色 | DBA_ROLES | — | — |
| 系統權限定義 | SYSTEM_PRIVILEGE_MAP | — | — |
| 對象權限定義 | TABLE_PRIVILEGE_MAP | — | — |
二、授權關係視圖 (含 _PRIVS 後綴)
1. 用戶 ↔ 角色
| 視圖 | 說明 | 關鍵列 |
DBA_ROLE_PRIVS | 所有用戶/角色擁有的角色 | GRANTEE (用戶/角色), GRANTED_ROLE |
USER_ROLE_PRIVS | 當前用戶擁有的角色 | USERNAME, GRANTED_ROLE |
ROLE_ROLE_PRIVS | 角色被授予的角色 | ROLE, GRANTED_ROLE |
注意:無 ALL_ROLE_PRIVS;DBA_ROLE_PRIVS.GRANTEE 同時包含用戶與角色名。
2. 用戶 ↔ 系統權限
| 視圖 | 說明 |
DBA_SYS_PRIVS | 所有用戶/角色的系統權限 |
USER_SYS_PRIVS | 當前用戶的系統權限 |
無 ALL_SYS_PRIVS。
3. 用戶/角色 ↔ 對象權限 (表/視圖/列)
| 視圖 | 範圍 | 粒度 |
DBA_TAB_PRIVS / ALL_TAB_PRIVS / USER_TAB_PRIVS | 表/視圖權限 | 對象級 |
DBA_COL_PRIVS / ALL_COL_PRIVS / USER_COL_PRIVS | 列權限 | 列級 |
4. 角色 ↔ 權限
| 視圖 | 說明 |
ROLE_SYS_PRIVS | 角色擁有的系統權限 |
ROLE_TAB_PRIVS | 角色擁有的對象權限 |
三、授予/被授予方向視圖
| 視圖 | 含義 |
USER_TAB_PRIVS_MADE / ALL_TAB_PRIVS_MADE | 當前用戶/可訪問用戶 授出 的表權限 |
USER_TAB_PRIVS_RECD / ALL_TAB_PRIVS_RECD | 當前用戶/可訪問用戶 獲得 的表權限 |
USER_COL_PRIVS_MADE / ALL_COL_PRIVS_MADE | 授出的列權限 |
USER_COL_PRIVS_RECD / ALL_COL_PRIVS_RECD | 獲得的列權限 |
四、實用查詢範例
-- 查某用戶所有系統權限
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'SCOTT';
-- 查某角色包含的對象權限
SELECT * FROM ROLE_TAB_PRIVS WHERE ROLE = 'DBA';
-- 查用戶 SCOTT 直接擁有的角色
SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'SCOTT';
來源:CSDN huang_xw