CREATE PROFILE app_profile LIMIT
FAILED_LOGIN_ATTEMPTS 5 -- 登入失敗鎖定次數
PASSWORD_LOCK_TIME 1 -- 鎖定天數
PASSWORD_LIFE_TIME 90 -- 密碼有效天數
PASSWORD_REUSE_TIME 365 -- 密碼重用間隔天數
PASSWORD_REUSE_MAX 10 -- 重用前需更換次數
SESSIONS_PER_USER 50 -- 單用戶最大並發 Session
CPU_PER_SESSION UNLIMITED -- Session CPU 上限 (百分之一秒)
CPU_PER_CALL 10000 -- 單呼叫 CPU 上限
CONNECT_TIME 480 -- 連線總分鐘數
IDLE_TIME 30; -- 閒置分鐘數
-- 建立角色
CREATE ROLE app_dba NOT IDENTIFIED;
GRANT DBA, EXP_FULL_DATABASE, IMP_FULL_DATABASE TO app_dba;
-- 建立使用者
CREATE USER app_user IDENTIFIED BY password
DEFAULT TABLESPACE app_data
TEMPORARY TABLESPACE app_temp
PROFILE app_profile
QUOTA UNLIMITED ON app_data;
-- 授權角色
GRANT app_dba TO app_user WITH ADMIN OPTION;
GRANT UNLIMITED TABLESPACE TO app_user WITH ADMIN OPTION;
-- 個別系統權限
GRANT SELECT ON sys.v_$mystat TO app_user;
GRANT SELECT ON sys.v_$session TO app_user;
GRANT SELECT ON sys.dba_jobs TO app_user;
-- 設定預設角色
ALTER USER app_user DEFAULT ROLE ALL;
-- 修改密碼/表空間/Profile/Quota
ALTER USER app_user IDENTIFIED BY new_pass
DEFAULT TABLESPACE new_data
TEMPORARY TABLESPACE new_temp
PROFILE new_profile
QUOTA 100M ON new_data;
-- 鎖定/解鎖帳號
ALTER USER app_user ACCOUNT LOCK;
ALTER USER app_user ACCOUNT UNLOCK;
-- 強制密碼過期 (下次登入必改)
ALTER USER app_user PASSWORD EXPIRE;
-- 無物件
DROP USER app_user;
-- 有物件 (含級聯刪除)
DROP USER app_user CASCADE;
⚠️ 當前連線中的使用者無法刪除。
-- 查看當前 Session
SELECT username, machine, sid, serial#
FROM v$session
WHERE username = 'APP_USER';
-- 強制中斷 Session
ALTER SYSTEM KILL SESSION 'sid,serial#';
-- 查看 Session 執行 SQL
SELECT s.username, sq.sql_text
FROM v$session s, v$sql sq
WHERE s.sql_address = sq.address
AND s.username = 'APP_USER';
CONNECT, RESOURCE 及必要物件權限。DBA_USERS、DBA_ROLE_PRIVS、DBA_TAB_PRIVS。