墨墨導讀:在Oracle 11g中,大量的登錄失敗可能會導致library cache lock;或者大量的使用同一用戶登錄且登錄失敗,導致用戶登錄hang的問題,本文記錄整個分析、處理過程。
sqlplus / as sysdbaoradebug hanganalyze 3
connect wx/wx123
exit;通過生成的hanganalyze文件,可以發現此時進行登錄的進程,被其他用戶登錄的動作hang住,且此時等待均為library cache lock。
三、定位問題:由於其他進程均為登錄動作,且等待事件為library cache lock,於是對資料庫版本進行查詢,發現資料庫版本為11.2.0.3。
此時,則想到了11g中的一個bug,即:大量的無效登錄,可能會導致大量的library cache lock等待事件,造成資料庫異常。於是通過mos進行搜索。最終發現,oracle11g中存在一個bug:9776608;該bug描述,多個用戶使用錯誤密碼同時登錄一個用戶的時候,會造成該用戶登錄異常。為了確認是否存在該異常,於是對登錄失敗的設備和次數進行統計:select username, os_username, userhost, client_id, trunc(timestamp), count(*) failed_logins fromdba_audit_trail where returncode = 1017 and timestamp > sysdate - 7 group by username,os_username, userhost, client_id, trunc(timestamp);
可以發現從當天起,有大量的主機通過wx用戶登錄失敗,於是詢問客戶,最近是否修改密碼,根據客戶的恢復,資料庫在當天出現密碼過期的情況,然後對資料庫中該用戶的密碼進行修改,且修改的密碼為新的密碼,與之前不同。
因此,基本可以確認問題是由bug 9776608造成。
四、問題解決:該問題解決有3個辦法:
1. 安裝補丁Patch:9776608
2. 要求所有使用該用戶的應用、程序、客戶端修改密碼;
3. 關閉密碼延遲功能。這裡打補丁浪費時間且不太現實,要求客戶端修改密碼,由於範圍較大,所以也比較困難;而修改服務端的密碼,則也會由於應用一直登錄導致無法修改;所以我們選擇了關閉密碼延遲功能,啟用28401事件,具體方法如下:alter system set event =「28401 TRACE NAME CONTEXT FOREVER, LEVEL 1」 scope=spfile;shutdown immediate;startup
作者
王鑫,近7年資料庫服務經驗,目前就職於雲和恩墨西區交付團隊,擅長Oracle、PostgreSQL資料庫的遷移運維等工作,具有11g OCP、11g OCM、PGCA、PGCE等資料庫認證。
先後為國家電網信息通信公司、成都人社局、四川電信進行Oracle、PostgreSQL、主機等駐場運維服務,參與成飛、甘肅電信、四川國土資源廳、成都房管局等大型oracle數據遷移項目。
墨天輪原文連結:https://www.modb.pro/db/45408(複製到瀏覽器中打開或者點擊「閱讀原文」立即查看)
2020數據技術嘉年華近50個PPT下載、視頻回放已上傳墨天輪平臺,可在「數據和雲」公眾號回復關鍵詞「2020DTC」獲得!
視頻號,新的分享時代,關注我們,看看有什麼新發現?數據和雲
ID:OraNews
如有收穫,請劃至底部,點擊「在看」,謝謝!
點擊下圖查看更多 ↓
長按,識別二維碼,加入萬人交流社群
請備註:雲和恩墨大講堂