| 類別 | 說明 | 典型授予對象 |
|---|---|---|
| 系統權限 | 資料庫操作權限 (建表、建表空間、備份...) | 用戶/角色 |
| 實體權限 | 具體物件存取權 (SELECT/INSERT/UPDATE/EXECUTE...) | 用戶/角色/PUBLIC |
CONNECT:僅 CREATE SESSION (登入)。RESOURCE:建立表/序列/觸發器/程序等實體權限。DBA:所有系統權限 + WITH ADMIN OPTION,最高權限。一般用戶:GRANT CONNECT, RESOURCE TO user;
DBA 用戶:GRANT CONNECT, RESOURCE, DBA TO user;
GRANT ... TO user WITH ADMIN OPTION 可轉授;REVOKE 不連鎖 (A 回收 B,B 已轉授 C 不受影響),且可跨用戶回收。GRANT ... ON obj TO user WITH GRANT OPTION 可轉授;REVOKE 連鎖失效 (A 回收 B,B 轉授 C 同步失效)。CREATE USER acc01 IDENTIFIED BY "12345"
DEFAULT TABLESPACE account
TEMPORARY TABLESPACE temp
PROFILE default
QUOTA 50M ON account;
ALTER USER acc01 IDENTIFIED BY new_pass;
ALTER USER acc01 DEFAULT TABLESPACE users;
ALTER USER acc01 TEMPORARY TABLESPACE temp_data;
ALTER USER acc01 PROFILE strict_profile;
ALTER USER acc01 ACCOUNT LOCK/UNLOCK;
ALTER USER acc01 PASSWORD EXPIRE; -- 強制下次登入改密碼
DROP USER acc01; -- 無物件
DROP USER acc01 CASCADE; -- 連同物件刪除
CREATE PROFILE strict LIMIT
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LOCK_TIME 1
PASSWORD_LIFE_TIME 90
PASSWORD_REUSE_TIME 365
PASSWORD_REUSE_MAX 10
PASSWORD_VERIFY_FUNCTION verify_fn
SESSIONS_PER_USER 10
CPU_PER_SESSION UNLIMITED
CONNECT_TIME 480
IDLE_TIME 30;
指派:ALTER USER acc01 PROFILE strict;
-- 查詢活躍會話
SELECT username, sid, serial#, machine, program, logon_time
FROM v$session WHERE username IS NOT NULL;
-- 強制中斷會話
ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;
-- 查詢會話正在執行 SQL
SELECT s.username, sq.sql_text
FROM v$session s JOIN v$sql sq ON s.sql_id = sq.sql_id
WHERE s.sid = :target_sid;
CREATE ROLE app_read IDENTIFIED BY pwd;
GRANT SELECT ON schema.table TO app_read;
GRANT app_read TO user1;
SET ROLE app_read; -- 啟用角色 (可在觸發器/程式中動態控制)