| 視圖前綴 | 可見範圍 | 典型用途 | 需求權限 |
|---|---|---|---|
| DBA_* | 全庫 | 審計、合規、故障排查 | SELECT_CATALOG_ROLE / DBA |
| ALL_* | 當前用戶可訪問 | 開發自查 | CREATE SESSION |
| USER_* | 當前用戶擁有 | 應用自服務 | CREATE SESSION |
| SESSION_* | 當前會話生效 | 運行時調試 | CREATE SESSION |
| ROLE_* | 角色定義層面 | 角色設計審計 | DBA / SELECT_CATALOG_ROLE |
-- 當前會話生效系統權限
SELECT * FROM SESSION_PRIVS ORDER BY PRIVILEGE;
-- 當前用戶直接授予系統權限
SELECT * FROM USER_SYS_PRIVS ORDER BY PRIVILEGE;
-- 指定用戶系統權限(需DBA)
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'APP_USER' ORDER BY PRIVILEGE;
-- 角色擁有的系統權限(需DBA)
SELECT PRIVILEGE FROM ROLE_SYS_PRIVS WHERE ROLE = 'APP_ADMIN';
-- 當前會話激活角色
SELECT * FROM SESSION_ROLES ORDER BY ROLE;
-- 當前用戶被授予角色(含嵌套)
SELECT * FROM USER_ROLE_PRIVS ORDER BY GRANTED_ROLE;
-- 指定用戶角色(需DBA)
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'APP_USER';
-- 角色被授予的角色(嵌套)
SELECT GRANTED_ROLE FROM ROLE_ROLE_PRIVS WHERE ROLE = 'DBA';
-- 當前用戶擁有的對象權限(授出/收到)
SELECT * FROM USER_TAB_PRIVS_MADE; -- 我授予別人的
SELECT * FROM USER_TAB_PRIVS_RECD; -- 別人授予我的
-- 全庫對象權限矩陣(需DBA)
SELECT GRANTEE, OWNER, TABLE_NAME, PRIVILEGE, GRANTABLE, HIERARCHY
FROM DBA_TAB_PRIVS
WHERE OWNER = 'SCHEMA_A'
ORDER BY GRANTEE, TABLE_NAME, PRIVILEGE;
-- 案例1:某用戶完整權限畫像
SELECT 'SYS_PRIV' type, PRIVILEGE name, 'YES' admin_option FROM DBA_SYS_PRIVS WHERE GRANTEE = 'APP_USER'
UNION ALL
SELECT 'ROLE', GRANTED_ROLE, ADMIN_OPTION FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'APP_USER'
UNION ALL
SELECT 'TAB_PRIV', TABLE_NAME, GRANTABLE FROM DBA_TAB_PRIVS WHERE GRANTEE = 'APP_USER'
ORDER BY 1, 2;
-- 案例2:某角色完整權限畫像(含嵌套角色展開)
WITH RECURSIVE role_tree(role, granted_role) AS (
SELECT ROLE, GRANTED_ROLE FROM ROLE_ROLE_PRIVS WHERE ROLE = 'APP_ADMIN'
UNION ALL
SELECT rp.ROLE, rp.GRANTED_ROLE FROM ROLE_ROLE_PRIVS rp JOIN role_tree rt ON rp.ROLE = rt.GRANTED_ROLE
)
SELECT 'SYS_PRIV' type, PRIVILEGE name FROM ROLE_SYS_PRIVS WHERE ROLE IN (SELECT role FROM role_tree UNION SELECT 'APP_ADMIN' FROM DUAL)
UNION ALL
SELECT 'TAB_PRIV', TABLE_NAME || '.' || PRIVILEGE FROM ROLE_TAB_PRIVS WHERE ROLE IN (SELECT role FROM role_tree UNION SELECT 'APP_ADMIN' FROM DUAL);
-- 口令文件成員(SYSDBA/SYSOPER/SYSASM等)
SELECT * FROM V$PWFILE_USERS;
-- USERNAME | SYSDBA | SYSOPER | SYSASM | SYSBACKUP | SYSDG | SYSKM | CON_ID
SELECT_CATALOG_ROLE,按需分配,定期認證。WITH RECURSIVE,11g用CONNECT BY或PL/SQL循環。DBA_TAB_PRIVS全量導出CSV,離線分析/合規留存。權限視圖體系 = DBA(全局) / ALL(可見) / USER(自有) / SESSION(生效) / ROLE(定義) 五維矩陣。掌握SESSION_PRIVS(調試)、USER_ROLE_PRIVS(自查)、DBA_SYS_PRIVS/ROLE_PRIVS/TAB_PRIVS(審計)、V$PWFILE_USERS(特權),即可覆蓋95%權限排查場景。