掌握用戶權限的查詢與授權是 Oracle DBA 的基本功。本文提供查詢當前會話權限、檢視系統權限視圖、以及透過 SYS 用戶授權新用戶的標準操作流程。
最直接的方法是查詢 SESSION_PRIVS 視圖,它只顯示當前會話生效的權限(含角色繼承)。
SELECT * FROM session_privs;
輸出範例:
PRIVILEGE
----------------------------------------
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE VIEW
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE ANY DIRECTORY
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE
DEBUG CONNECT SESSION
若需查詢特定用戶(而非當前會話)的權限,需查詢 DBA_SYS_PRIVS(需 DBA 權限)或 USER_SYS_PRIVS(查自己的)。
-- 查詢用戶 CONQUER 的系統權限
SELECT * FROM dba_sys_privs WHERE grantee = 'CONQUER';
SELECT * FROM dba_role_privs WHERE grantee = 'CONQUER';
SELECT * FROM role_sys_privs WHERE role = 'DBA';
CONN sys/123456@10.10.1.111/orcl AS SYSDBA
CREATE USER conquer IDENTIFIED BY conquer_password
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;
GRANT CREATE SESSION TO conquer;
-- 授予建立表、序列、程序等開發常用權限
GRANT CREATE TABLE, CREATE SEQUENCE, CREATE PROCEDURE, CREATE VIEW TO conquer;
-- 或授予 RESOURCE 角色(含上述權限,12c 後不含 UNLIMITED TABLESPACE)
GRANT RESOURCE TO conquer;
-- 指定表空間配額(否則無法建表)
ALTER USER conquer QUOTA UNLIMITED ON users;
APP_READONLY, APP_DEVELOPER),將權限授予角色,再將角色授予用戶,便於批量維護。DBA_SYS_PRIVS、DBA_TAB_PRIVS 核對權限異動。從 SESSION_PRIVS 快速檢視當前權限,到透過 DBA_* 視圖全面掌握用戶權限全貌,再到標準化的建用戶、授權流程,構成了 Oracle 權限管理的閉環。遵循最小權限、角色化管理,能有效降低安全風險與維護成本。