延遲密碼驗證特性引起的資料庫HANG死及當機

ZQqzz發表於2021-01-25

 

延遲密碼驗證特性  特性簡述

為了防止使用者密碼的暴力破解,從11G開始引入了一個新特性:密碼延遲認證。

等待使用者輸入密碼的時間,隨著輸入錯誤密碼的次數而不斷延長。以此緩解暴力破解Oracle使用者密碼。

特性潛在引發問題

  • 修改使用者密碼引發大量Library Cache Lock 資料庫密碼應該是定時修改,以提高資料庫安全性,防止駭客攻擊。但是, 大部署大量程式的業務 系統裡,難免會有遺漏的情況。在修改完密碼後,資料庫會出現大量的Library Cache Lock等待事件。在MOS 上有說明:High 'library cache lock' Wait Time Due to Invalid Login Attempts(1309738.1)
  • BUG 使用者登入資料庫,哪怕正常登入,每次登入的時間都在延長。

問題說明

10日17點左右得知某資料庫出現資料庫使用者鎖定的情況,登上去後發現一節點資料庫hang死,二節點資料庫當機,進行處理排查後,業務正常執行,以下為排查過程。

 

 

 

 

故障具體日誌分析

報告分析

我們取一節點故障點16 點到17 點以及9 日相同時間點的AWR 報告進行對比發現: 

發現故障點dbtime 相比高了24 倍,其中top10 的等待事件中, library cache lock 達到了總dbtime 75.5%

檢視時間模型:

connection management call elapsed time 該統計資訊達到了dbtime 77%

 

 

 

 

報告分析

同樣我們取故障點的addm 報告:

 

Activity During the Analysis Period

-----------------------------------

Total database time was 499730 seconds.

The average number of active sessions was 138.12.

Summary of Findings

-------------------

     Description                         Active Sessions        Recommendations

                                     Percent   of Activity

   --------------------------------  -------------------  ---------------

1    Session Connect and Disconnect      106.79 | 77.32       1

2  Shared Pool   Latches               104.22 |   75.45       0

3  Unusual   "Cluster" Wait Event        11.32 | 8.2          2

4  Unusual   "Concurrency" Wait Event    4.42 | 3.2           4

5  Buffer Busy   - Hot Objects         4.18 | 3.03          0

6  Unusual   "Cluster" Wait Event        2.83 | 2.05          2

 

可以看到在同一時間,排名第一 Session Connect and Disconnect

Finding 1: Session Connect and Disconnect

Impact is 106.76 active sessions, 77.32%   of total activity.

-----------------------------------------------------------

Session connect and   disconnect calls were consuming significant database time.

 

     Recommendation 1: Application Analysis

     Estimated benefit is 106.79 active sessions, 77.32% of total activity.

     ----------------------------------------------------------------------

   Action

        Investigate application logic for possible reduction of connect and

        disconnect calls. For example, you might use a connection pool scheme   in

        the middle tier.

 

報告給出的分析為:會話連線和斷開連線呼叫消耗了大量的資料庫時間。

 

 

 

故障時間ash 報告分析

我們取故障時間點16 點至17 點的ash 報告:

 

 

同樣的,我們可以獲取到跟awr 報告相同的等待時間及時間模型。

我們可以看到16:35 開始資料出現大量的library cache lock

我們獲取到該等待事件的p1,p2,p3 值,分別代表該等待事件的控制程式碼地址,鎖地址,鎖模式及名稱空間。

 

我們將p3 的值十進位制轉換為16 進位制獲取到它的名稱空間值為79 ,再在資料庫中將其查出:

select distinct KGLHDNSP, KGLHDNSD from x$kglob where KGLHDNSP=79

KGLHDNSP KGLHDNSD

----------   ------

79 ACCOUNT_STATUS

 

 

 

可以看到,該鎖指向了賬戶狀態,綜上所述,結合之前應用反饋的使用者鎖問題,我們有理由認定此次故障是由於錯誤密碼的大規模登入資料庫,導致出現大量的library cache lock ,最終拖垮了資料庫,導致資料庫的hang 死。

故障總結

故障結論分析

結合第二章節的故障分析,結合之前應用反饋的使用者鎖問題,我們有理由認定此次故障是由於錯誤密碼的大規模登入資料庫,導致出現大量的library cache lock ,最終拖垮了資料庫,導致資料庫的hang 死,至於哪些應用導致的大規模錯誤密碼登入,還得結合應用去排查。

 

解決方案

從上述3.1 節的分析,給出如下建議:

1.        密碼策略最佳化

密碼過期時間,從11g 開始,oracle 對資料庫所有密碼預設過期時間180 天:

SQL> alter profile default limit  PASSWORD_LIFE_TIME unlimited;

 

密碼登陸錯誤次數,對於輸入錯誤密碼導致資料庫賬號被鎖定:

SQL> alter profile default limit  FAILED_LOGIN_ATTEMPTS unlimited;

修改為100

alter   profile default limit FAILED_LOGIN_ATTEMPTS 100;

 

 

密碼大小寫敏感,該引數預設值是TRUE ,因此,預設情況下密碼大小寫是敏感的

SQL> alter system set   SEC_CASE_SENSITIVE_LOGON=false;

 

密碼錯誤延遲登入,11G 引入了延遲密碼驗證,在輸入錯誤的密碼後,後續如果還是採用錯誤的密碼登陸,將會導致密碼延遲驗證,從第三次開始,後續的每次登陸導致密碼延遲1 秒左右

而且會導致失敗登陸延長,可以透過如下事件來遮蔽密碼的延遲驗證

SQL> ALTER SYSTEM SET event='28401   TRACE NAME CONTEXT FOREVER, LEVEL 1' SCOPE=SPFILE SID='*';

 

禁止OCI 程式登入風暴,初始化引數SEC_MAX_FAILED_LOGIN_ATTEMPTS 的預設設定為10 ,表示在連線嘗試達到指定次數後會自動斷開連線。即使未啟用口令概要檔案,也會強制實施此引數。

此引數可以防止程式連線到資料庫,然後成百上千次地嘗試口令以透過驗證。如果認為該引數沒有特別的必要性,可以考慮調大:

alter system set   sec_max_failed_login_attempts=2147483647 scope=spfile sid=’*’; 

 

 

 

3.        Sql 最佳化

Awr 報告發現資料庫存在比較大的解析及硬解析,檢視後發現比較多的sql 沒有使用繫結變數

建議:

1.          最佳化sql ,使用繫結變數

2.          儘量使用索引

 

附錄

官方文件: Doc ID 1309738.1


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69993859/viewspace-2752646/,如需轉載,請註明出處,否則將追究法律責任。

相關文章