oracle 11g 密碼延遲驗證問題
前幾天遇到一個大量 library cache lock 的情況,具體情況類似在pub上看到的一個帖子,轉載一下:
系統:LINUX
資料庫版本:
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
故障描述:
領導需求要修改線上生成資料庫使用者fonewapuser的密碼,修改密碼完成後過了不一會程式設計師就反應使用者fonewapuser連線不上,使用fonewapuser使用者登陸資料顯示一直等待狀態。
問題現象後,在資料庫中使用如下語句查詢等待事件出現大量的library cache lock。
select * from gv$session_wait where event like 'library cache lock';
在v$session檢視中查詢library cache lock等待相關的會話資訊,發現username為空而且不是oracle後臺進行。這就是說這些會話還沒有連線到資料庫,一直在等待驗證狀態。
select * from gv$session_wait where event like 'library cache lock';
因為以前也遇到過'library cache lock'等待事件的問題直接使用下面的語句查佔用'library cache lock'的會話,但是返回的確實沒有結果這可就神奇了。難道沒人阻塞它自己就產生library cache 鎖了嗎?詭異啊
SELECT SID,USERNAME,STATUS,SCHEMANAME,PROCESS,MACHINE,SQL_ID,TERMINAL,PROGRAM FROM V$SESSION
WHERE SADDR in
(SELECT KGLLKSES FROM X$KGLLK LOCK_A
WHERE KGLLKREQ = 0
AND EXISTS (SELECT LOCK_B.KGLLKHDL FROM X$KGLLK LOCK_B
WHERE KGLLKSES = 'saddr_from_v$session' /* BLOCKED SESSION */
AND LOCK_A.KGLLKHDL = LOCK_B.KGLLKHDL
AND KGLLKREQ > 0)
);
現在問題就hang這裡了,library cache lock等待的會話不斷的增加,而又找不到那個會話阻塞了它。最後資料庫連線滿了,沒有辦法把資料庫重啟了。
資料庫起來以後,檢查library cache lock等待事件沒有輸出資料庫顯示正常。不過等待1個小時之後library cache lock又大量的出現,不過一會又消失了,有點詭異。在網上看到yangtingkun的一篇關於oracle 11g 密碼延長驗證的文章感覺和上面的問題很像,於是寫了個記錄登入失敗的觸發器,過了不一會就在alert中發現大量的連線失敗記錄,找到負責192.168.0.234這個臺機器的程式設計師讓他查程式連線使用者和密碼是否正確。結果發現密碼不對,而且這個程式是每隔一段時間就向資料庫傳送連線請求,把密碼修改正確後library cache lock就沒有在出現過。
哎,oracle 11g 密碼延長驗證真是害死人啊!!!11g的新特性確實很好,很強的,但是你要是不熟悉、不瞭解它,它很容易害死你。從出事開始經理佔我後面足足監視了4小時快壓死我了。4個多小時線上生成庫無法使用錢嘩嘩的沒,我被經理罵,經理上面領導罵。
最後問下,有沒有倒黴的童鞋遇到過這樣的情況,嘿嘿!
記錄使用者登入失敗觸發器:
CREATE OR REPLACE TRIGGER logon_denied_to_alert
AFTER servererror ON DATABASE
DECLARE
message VARCHAR2(168);
ip VARCHAR2(15);
v_os_user VARCHAR2(80);
v_module VARCHAR2(50);
v_action VARCHAR2(50);
v_pid VARCHAR2(10);
v_sid NUMBER;
v_program VARCHAR2(48);
BEGIN
IF (ora_is_servererror(1017)) THEN
-- get ip FOR remote connections :
IF upper(sys_context('userenv', 'network_protocol')) = 'TCP' THEN
ip := sys_context('userenv', 'ip_address');
END IF;
SELECT sid INTO v_sid FROM sys.v_$mystat WHERE rownum < 2;
SELECT p.spid, v.program
INTO v_pid, v_program
FROM v$process p, v$session v
WHERE p.addr = v.paddr
AND v.sid = v_sid;
v_os_user := sys_context('userenv', 'os_user');
dbms_application_info.read_module(v_module, v_action);
message := to_char(SYSDATE, 'YYYYMMDD HH24MISS') ||
' logon denied from ' || nvl(ip, 'localhost') || ' ' ||
v_pid || ' ' || v_os_user || ' with ' || v_program || ' – ' ||
v_module || ' ' || v_action;
sys.dbms_system.ksdwrt(2, message);
END IF;
END;
/
如有登入失敗則在alert中記錄如下資訊:
Thu Apr 26 20:16:45 2012
20120426 201645 logon denied from 192.168.0.234 29458 root with JDBC Thin Client ? JDBC Thin Client
資料庫版本:
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
故障描述:
領導需求要修改線上生成資料庫使用者fonewapuser的密碼,修改密碼完成後過了不一會程式設計師就反應使用者fonewapuser連線不上,使用fonewapuser使用者登陸資料顯示一直等待狀態。
問題現象後,在資料庫中使用如下語句查詢等待事件出現大量的library cache lock。
select * from gv$session_wait where event like 'library cache lock';
在v$session檢視中查詢library cache lock等待相關的會話資訊,發現username為空而且不是oracle後臺進行。這就是說這些會話還沒有連線到資料庫,一直在等待驗證狀態。
select * from gv$session_wait where event like 'library cache lock';
因為以前也遇到過'library cache lock'等待事件的問題直接使用下面的語句查佔用'library cache lock'的會話,但是返回的確實沒有結果這可就神奇了。難道沒人阻塞它自己就產生library cache 鎖了嗎?詭異啊
SELECT SID,USERNAME,STATUS,SCHEMANAME,PROCESS,MACHINE,SQL_ID,TERMINAL,PROGRAM FROM V$SESSION
WHERE SADDR in
(SELECT KGLLKSES FROM X$KGLLK LOCK_A
WHERE KGLLKREQ = 0
AND EXISTS (SELECT LOCK_B.KGLLKHDL FROM X$KGLLK LOCK_B
WHERE KGLLKSES = 'saddr_from_v$session' /* BLOCKED SESSION */
AND LOCK_A.KGLLKHDL = LOCK_B.KGLLKHDL
AND KGLLKREQ > 0)
);
現在問題就hang這裡了,library cache lock等待的會話不斷的增加,而又找不到那個會話阻塞了它。最後資料庫連線滿了,沒有辦法把資料庫重啟了。
資料庫起來以後,檢查library cache lock等待事件沒有輸出資料庫顯示正常。不過等待1個小時之後library cache lock又大量的出現,不過一會又消失了,有點詭異。在網上看到yangtingkun的一篇關於oracle 11g 密碼延長驗證的文章感覺和上面的問題很像,於是寫了個記錄登入失敗的觸發器,過了不一會就在alert中發現大量的連線失敗記錄,找到負責192.168.0.234這個臺機器的程式設計師讓他查程式連線使用者和密碼是否正確。結果發現密碼不對,而且這個程式是每隔一段時間就向資料庫傳送連線請求,把密碼修改正確後library cache lock就沒有在出現過。
哎,oracle 11g 密碼延長驗證真是害死人啊!!!11g的新特性確實很好,很強的,但是你要是不熟悉、不瞭解它,它很容易害死你。從出事開始經理佔我後面足足監視了4小時快壓死我了。4個多小時線上生成庫無法使用錢嘩嘩的沒,我被經理罵,經理上面領導罵。
最後問下,有沒有倒黴的童鞋遇到過這樣的情況,嘿嘿!
記錄使用者登入失敗觸發器:
CREATE OR REPLACE TRIGGER logon_denied_to_alert
AFTER servererror ON DATABASE
DECLARE
message VARCHAR2(168);
ip VARCHAR2(15);
v_os_user VARCHAR2(80);
v_module VARCHAR2(50);
v_action VARCHAR2(50);
v_pid VARCHAR2(10);
v_sid NUMBER;
v_program VARCHAR2(48);
BEGIN
IF (ora_is_servererror(1017)) THEN
-- get ip FOR remote connections :
IF upper(sys_context('userenv', 'network_protocol')) = 'TCP' THEN
ip := sys_context('userenv', 'ip_address');
END IF;
SELECT sid INTO v_sid FROM sys.v_$mystat WHERE rownum < 2;
SELECT p.spid, v.program
INTO v_pid, v_program
FROM v$process p, v$session v
WHERE p.addr = v.paddr
AND v.sid = v_sid;
v_os_user := sys_context('userenv', 'os_user');
dbms_application_info.read_module(v_module, v_action);
message := to_char(SYSDATE, 'YYYYMMDD HH24MISS') ||
' logon denied from ' || nvl(ip, 'localhost') || ' ' ||
v_pid || ' ' || v_os_user || ' with ' || v_program || ' – ' ||
v_module || ' ' || v_action;
sys.dbms_system.ksdwrt(2, message);
END IF;
END;
/
如有登入失敗則在alert中記錄如下資訊:
Thu Apr 26 20:16:45 2012
20120426 201645 logon denied from 192.168.0.234 29458 root with JDBC Thin Client ? JDBC Thin Client
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/758322/viewspace-731328/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 取消 11G延遲密碼驗證密碼
- ORACLE密碼錯誤驗證延遲Oracle密碼
- Oracle資料庫密碼延遲驗證Oracle資料庫密碼
- Oracle11g新增密碼錯誤延遲驗證Oracle密碼
- 11g新特性 密碼錯誤驗證延遲特性的相關驗證密碼
- Oracle 11g中的密碼延遲功能Oracle密碼
- ORACLE 11g的密碼錯誤延時驗證Oracle密碼
- Oracle 11g 密碼延遲認證與 library cache lock 等待Oracle密碼
- 密碼延遲驗證導致的系統HANG住密碼
- Oracle11G密碼延遲驗證導致的系統HANG住Oracle密碼
- 延遲密碼驗證特性引起的資料庫HANG死及當機密碼資料庫
- 密碼延遲驗出現大量library cache lock密碼
- Oracle 密碼驗證方式Oracle密碼
- Oracle 11g存在密碼過期問題Oracle密碼
- ORACLE 密碼驗證函式Oracle密碼函式
- Exadata修改sshd密碼驗證方式 延遲10分鐘關閉 明明密碼對了卻登入不上密碼
- 安裝Oracle RAC時,不能驗證ASMSNMP密碼問題的解決OracleASM密碼
- Oracle11g 密碼延遲認證導致library cache lock的情況分析Oracle密碼
- SSH無密碼驗證可能出現的問題密碼
- ORACLE 11g RAC 叢集互連延遲Oracle
- Oracle 8i 密碼驗證Oracle密碼
- oracle 開啟複雜密碼驗證Oracle密碼
- oracle本地驗證和密碼檔案Oracle密碼
- 美國伺服器延遲高怎麼辦,如何解決延遲問題伺服器
- 分析伺服器延遲的問題伺服器
- 疫情延遲 題解
- MySQL之 從複製延遲問題排查MySql
- 伺服器延遲問題如何解決伺服器
- openldap中使用者密碼加密之後的驗證問題。LDA密碼加密
- Oracle 11g RAC查詢物理備庫延遲情況Oracle
- [Rman]Oracle 11g控制檔案延遲自動備份Oracle
- oracle 11g deferred_segment_creation段延遲建立Oracle
- SQL資料庫開發中的SSIS 延遲驗證方法SQL資料庫
- oracle的延遲約束Oracle
- Google 怎麼解決長尾延遲問題Go
- 怎麼解決伺服器延遲問題伺服器
- 『開源』大半夜除錯TCP延遲問題除錯TCP
- ORACLE 11G 密碼不分Oracle密碼