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

Oracle 11g 帳號鎖定機制深度解析:FAILED_LOGIN_ATTEMPTS 與 LCOUNT 實測

     編輯:DB2 教學

Oracle 11g 帳號鎖定機制深度解析:FAILED_LOGIN_ATTEMPTS 與 LCOUNT 實測

環境資訊

Oracle Database 11g Enterprise Edition 11.2.0.1.0
Enterprise Linux Server 5.5

背景:10g 起引入登入失敗限制

Oracle 10g 開始,預設 Profile 將 FAILED_LOGIN_ATTEMPTS 設為 10。連續 10 次登入失敗,帳號會被鎖定(ORA-28000: the account is locked)。

查看與修改 Profile 設定

-- 查看當前設定
SELECT * FROM dba_profiles WHERE resource_name = 'FAILED_LOGIN_ATTEMPTS';

-- 修改為 2 次鎖定(測試用)
ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS 2;

-- 設為無限制
ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;

實測:模擬連續登入失敗

SQL> conn hr/w
ERROR: ORA-01017: invalid username/password; logon denied

SQL> conn hr/w
ERROR: ORA-01017: invalid username/password; logon denied

SQL> conn hr/w
ERROR: ORA-28000: the account is locked

第三次嘗試即提示帳號已鎖定,驗證設定生效。

核心發現:USER$.LCOUNT 記錄失敗次數

用戶狀態資訊儲於 DBA_USERS,底層對應 SYS.USER$ 表。其中 LCOUNT 欄位專門記錄連續登入失敗次數。

SQL> SELECT name, lcount FROM user$ WHERE name = 'HR';
NAME  LCOUNT
HR    0

實測 LCOUNT 遞增與歸零

-- 第 1 次失敗
SQL> conn hr/s
ERROR: ORA-01017...
SQL> SELECT name, lcount FROM user$ WHERE name = 'HR';
NAME  LCOUNT
HR    1

-- 第 2 次失敗
SQL> conn hr/s
ERROR: ORA-01017...
SQL> SELECT name, lcount FROM user$ WHERE name = 'HR';
NAME  LCOUNT
HR    2

-- 登入成功後
SQL> conn hr/correct_password
Connected.
SQL> SELECT name, lcount FROM user$ WHERE name = 'HR';
NAME  LCOUNT
HR    0  -- 自動歸零

實驗證實:LCOUNT 精確記錄連續失敗次數,登入成功即歸零。此機制有助於 DBA 監控可疑登入活動,強化資料庫安全。

延伸閱讀

更深層的邏輯可參考核心腳本 ?/rdbms/admin/sql.bsq,有興趣的讀者可自行研究。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved