首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

Oracle 11g 密碼過期問題完整解決方案與最佳實踐

     編輯:Oracle 教學

Oracle 11g 密碼過期問題完整解決方案與最佳實踐

在 Oracle 11g 環境中,使用者常會遇到 ORA-28002: the password will expire within 或 ORA-28000: the account is locked 等提示。這類問題主要源於預設設定檔的兩項核心參數限制,本文將系統性分析成因並提供生產環境可直接套用的解決方案。

核心成因分析

Oracle 11g 預設的 DEFAULT 設定檔包含兩項關鍵限制:

  • PASSWORD_LIFE_TIME = 180 天:密碼有效期預設為 180 天,到期後需強制變更
  • FAILED_LOGIN_ATTEMPTS = 10 次:連續輸入錯誤密碼 10 次即鎖定帳號

這兩項參數獨立運作,可能單獨或同時觸發問題。值得注意的是,resource_limit 參數無論設為 TRUE 或 FALSE,密碼有效期限制皆會生效,必須透過修改設定檔方式解決。

情況一:密碼有效期到期 (ORA-28002)

步驟 1:確認使用者所屬設定檔

SQL> SELECT username, profile FROM dba_users;

USERNAME                     PROFILE
------------------------------ ------------------------------
SYS                          DEFAULT
SYSTEM                       DEFAULT
EKPUSER                      DEFAULT

步驟 2:檢視設定檔密碼有效期設定

SQL> SELECT * FROM dba_profiles 
     WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';

PROFILE  RESOURCE_NAME        RESOURCE_TYPE LIMIT
-------- -------------------- ------------- --------
DEFAULT  PASSWORD_LIFE_TIME   PASSWORD      180

步驟 3:修改密碼有效期為無限制

SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
Profile altered.

注意: 修改即時生效,無需重啟資料庫。

步驟 4:處理已受影響的帳號

  • 未出現警告的帳號:後續不再受影響
  • 已出現 ORA-28002 警告的帳號:必須重新設定一次密碼(可沿用原密碼)
SQL> ALTER USER smsc IDENTIFIED BY 原密碼;
SQL> ALTER USER system IDENTIFIED BY root;
SQL> ALTER USER scott IDENTIFIED BY tiger;

情況二:登入失敗次數過多導致鎖定 (ORA-28000)

步驟 1~2:確認設定檔與參數值

SQL> SELECT username, profile FROM dba_users;
SQL> SELECT * FROM dba_profiles 
     WHERE profile='DEFAULT' AND resource_name='FAILED_LOGIN_ATTEMPTS';

步驟 3:將失敗嘗試次數設為無限制

SQL> ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;

步驟 4:解鎖已被鎖定的帳號

SQL> ALTER USER smsc IDENTIFIED BY oracle ACCOUNT UNLOCK;
-- 或單純解鎖
SQL> ALTER USER 用戶名 ACCOUNT UNLOCK;

步驟 5:驗證修改結果

SQL> SELECT * FROM dba_profiles WHERE profile='DEFAULT';

PROFILE  RESOURCE_NAME            RESOURCE_TYPE LIMIT
-------- ------------------------ ------------- ----------------------
DEFAULT  FAILED_LOGIN_ATTEMPTS    PASSWORD      UNLIMITED
DEFAULT  PASSWORD_LIFE_TIME       PASSWORD      UNLIMITED

進階:自訂設定檔範例

若需更精細的密碼策略,可建立專用設定檔:

CREATE PROFILE app_users2 LIMIT
  FAILED_LOGIN_ATTEMPTS 5
  PASSWORD_LIFE_TIME 60
  PASSWORD_REUSE_TIME 60
  PASSWORD_REUSE_MAX 5
  PASSWORD_VERIFY_FUNCTION verify_function
  PASSWORD_LOCK_TIME 1/24
  PASSWORD_GRACE_TIME 10;

-- 指派給使用者
ALTER USER username PROFILE app_users2;

關鍵重點總結

  1. 修改 DEFAULT 設定檔為最快解決方案,影響所有使用該設定檔的使用者
  2. 生產環境建議建立專屬設定檔,避免影響系統帳號 (SYS, SYSTEM 等)
  3. 參數修改即時生效,無需重啟資料庫實例
  4. 已觸發警告/鎖定的帳號需額外處理(重設密碼或解鎖)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved