Oracle 11g+ 默認配置文件 DEFAULT 設定 PASSWORD_LIFE_TIME = 180 天,導致應用賬號定期鎖定 (ORA-28001/ORA-28002),影響業務連續性。
SELECT username, profile FROM dba_users WHERE username = 'APP_USER';
-- 典型輸出:APP_USER | DEFAULT
SELECT resource_name, limit
FROM dba_profiles
WHERE profile = 'DEFAULT'
AND resource_name IN ('PASSWORD_LIFE_TIME','PASSWORD_GRACE_TIME',
'PASSWORD_REUSE_TIME','PASSWORD_REUSE_MAX',
'FAILED_LOGIN_ATTEMPTS','PASSWORD_LOCK_TIME');
關鍵輸出:PASSWORD_LIFE_TIME = 180。
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
驗證:
SELECT limit FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
-- 輸出 UNLIMITED
-- 創建應用專用配置文件
CREATE PROFILE app_profile LIMIT
PASSWORD_LIFE_TIME UNLIMITED
PASSWORD_GRACE_TIME 7
FAILED_LOGIN_ATTEMPTS 10
PASSWORD_LOCK_TIME 1/24 -- 1 小時
PASSWORD_REUSE_TIME UNLIMITED
PASSWORD_REUSE_MAX UNLIMITED;
-- 分配給應用用戶
ALTER USER app_user PROFILE app_profile;
-- 1. 解鎖
ALTER USER app_user ACCOUNT UNLOCK;
-- 2. 重置密碼 (可保持原密碼)
ALTER USER app_user IDENTIFIED BY original_password;
-- 3. 或使用密碼驗證函數放行
-- 注意:12c+ 密碼大小寫敏感 (SEC_CASE_SENSITIVE_LOGON)
SELECT * FROM dba_users WHERE expiry_date < SYSDATE+30 預警即將過期賬號。PASSWORD_ROLLOVER_TIME 實現密碼平滑輪換 (雙密碼並存期)。SET LINES 200 PAGES 100
COL username FORMAT A30
COL profile FORMAT A20
COL expiry_date FORMAT A20
SELECT username, profile,
TO_CHAR(expiry_date,'YYYY-MM-DD') expiry_date,
account_status
FROM dba_users
WHERE profile = 'DEFAULT'
AND account_status IN ('OPEN','EXPIRED','EXPIRED(GRACE)','LOCKED(TIMED)')
ORDER BY expiry_date;