【背景】今天中午的時候用戶反饋需要修改數(shù)據(jù)庫的和應(yīng)用的連接密碼,修改密碼這種小事情,本以為不會不會出現(xiàn)問題的。沒想到午休
【背景】今天中午的時候用戶反饋需要修改數(shù)據(jù)庫的和應(yīng)用的連接密碼,修改密碼這種小事情,本以為不會不會出現(xiàn)問題的。沒想到午休到一半的時候就接到用戶的電話,系統(tǒng)連接不進(jìn)去了。
【環(huán)境】
【癥狀】用戶修改密碼之后通過應(yīng)用連接一直連接不上,我登錄主機(jī)通過sqlplus連接的時候,也是一直處于hang住狀態(tài),但是sys、system用戶進(jìn)行連接的時候速度就很快;
[Oracle@ekpdbtest ~]$ sqlplus / as sysdba (數(shù)據(jù)庫可以正常登錄)
SQL*Plus: Release 11.2.0.1.0 Production on Fri Apr 10 17:37:42 2015
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
SQL> conn sale/oracle (HANG住了)
【備注】操作系統(tǒng)的CPU、內(nèi)存、網(wǎng)絡(luò)、磁盤空間都沒有發(fā)現(xiàn)異常;
1、查看等待事件
通過查看awr報告,library cache lock等待嚴(yán)重
wait % DB
Event Waits Time(s) (ms) time Wait Class
------------------------------ ------------ ----------- ------ ------ ----------
library cache lock 866 145,056 2.E+05 92.0 Concurrenc
row cache lock 195 9,155 46948 5.8 Concurrenc
2、恢復(fù)用戶到修改前的密碼
SQL> conn sale/sale (可以登錄)
【問題原因】經(jīng)過一番查找發(fā)現(xiàn)該問題屬于ORACLE 11的一個新特性,如果一個用戶使用不正確的密碼嘗試登錄數(shù)據(jù)庫,那么隨著登錄失敗次數(shù)的增加,每次登錄驗證前延遲等待的時間也會增加。這個特性主要用于避免一些程序采用錯誤的密碼進(jìn)行嘗試性的登錄;所有這一切都已經(jīng)說明,當(dāng)前有一個或多個中間件服務(wù)器在使用錯誤的密碼連接數(shù)據(jù)庫,由于密碼延遲驗數(shù)據(jù)證的策略,導(dǎo)致所有后續(xù)的連接都被HANG住。
用戶的環(huán)境是怎么觸發(fā)這個特性的了?
用戶的環(huán)境中,連接數(shù)據(jù)庫不僅有應(yīng)用層,還有一些【地磅系統(tǒng)】,這些系統(tǒng)直接連接數(shù)據(jù)庫,所以雖然更改了應(yīng)用的密碼,但是地磅系統(tǒng)由于數(shù)量眾多且修改麻煩,,所以應(yīng)用的連接密碼修改后,地磅系統(tǒng)的連接密碼并沒有改,所以一直在用錯誤的密碼進(jìn)行登錄,而觸發(fā)了【密碼延遲驗證導(dǎo)致的系統(tǒng)HANG住】
【解決方法】這個性特性可以提供系統(tǒng)的安全性,但同時也引入了bug,Oracle最強(qiáng)大之處就在于幾乎所有的功能和特性都有對應(yīng)的開關(guān),通過設(shè)置EVENTS 28401可以屏蔽密碼延遲驗證,重啟數(shù)據(jù)庫后解決。
SQL> ALTER SYSTEM SET EVENT = ‘28401 TRACE NAME CONTEXT FOREVER, LEVEL 1’ SCOPE = SPFILE;
【總結(jié)】暫時性的關(guān)閉這個特性,然后再逐步修改每個系統(tǒng)的密碼,又化解了一次危機(jī);
本文永久更新鏈接地址:
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com