11.2資料庫登入出現library cache lock等待(二)
客戶的11.2.0.2 RAC for Linux X86-64環境的資料庫在登入時,發現出現長時間等待。
這一篇描述現象重現過程。
11.2資料庫登入出現library cache lock等待(一):
上一篇描述了客戶的11.2.0.2 RAC for Linux X86-64環境出現library cache lock的問題,同事回來後想要模擬這個現象,在Windows環境下的11.2.0.1上卻沒有模擬出來,我也在Windows上的11.2.0.1上嘗試了一下,結果沒有出現library cache lock等待,但是出現了row cache lock等待事件。
測試步驟很簡單,開啟三個sqlplus,其中一個設定SET TIME ON,獲取時間資訊,並不斷的已錯誤的使用者名稱密碼嘗試連線資料庫。另一個會話以正確的使用者名稱和密碼連線到資料庫,設定SQLPROMPT為SQL2>,以便於和第一個會話區別。最後一個會話以SYS登入資料庫,檢查會話的等待狀態:
SQL> SET TIME ON
08:34:41 SQL> CONN TEST/A@192.25.1.100/TEST112
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
08:34:42 SQL> CONN
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
08:34:42 SQL> CONN
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
08:34:43 SQL> CONN
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
08:34:44 SQL> CONN
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
08:34:46 SQL> CONN
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
08:34:49 SQL> CONN
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
08:34:54 SQL> CONN
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
08:34:59 SQL> CONN
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
08:35:05 SQL> CONN
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
08:35:12 SQL> CONN
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
08:35:21 SQL> CONN
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
08:35:30 SQL> CONN
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
08:35:40 SQL> CONN
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
08:35:50 SQL> CONN
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
08:36:01 SQL> CONN
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
08:36:01 SQL> CONN
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
08:36:01 SQL> CONN
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
08:36:01 SQL> CONN
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
08:36:02 SQL> CONN
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
08:36:05 SQL> CONN
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
.
.
.
08:38:00 SQL> CONN
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
08:38:10 SQL> CONN
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
08:38:20 SQL> CONN
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
08:38:30 SQL>
可以看到,會話1登入失敗的等待時間從1秒慢慢漲到了10秒,隨後又縮短到1秒以內,最後又一次漲到了10秒。
之所以等待時間被重置,是因為會話2上成功的執行一次登入:
SQL> CONN TEST/TEST@192.25.1.100/TEST112
已連線。
SQL> SET SQLP 'SQL2> '
SQL2> CONN TEST/TEST@192.25.1.100/TEST112
已連線。
SQL2>
會話2的登入成功,使得會話1上10秒的延遲驗證被重置到1秒以內。
最後看一下V$SESSION檢視查詢的等待資訊:
SQL> SELECT SID, USERNAME, PROGRAM, EVENT, SECONDS_IN_WAIT
2
FROM V$SESSION
3
WHERE NVL(USERNAME, 'OTHER') != USER
4
AND NVL(PROGRAM, 'OTHER') NOT LIKE 'ORACLE.EXE%';
SID USERNAME PROGRAM EVENT
SECONDS_IN_WAIT
---------- ---------- --------------- -------------------------------------
---------------
12 sqlplusw.exe SQL*Net message from client 4
63 TEST sqlplusw.exe SQL*Net message from client 89
SQL> SELECT SID, USERNAME, PROGRAM, EVENT, SECONDS_IN_WAIT
2
FROM V$SESSION
3
WHERE NVL(USERNAME, 'OTHER') != USER
4
AND NVL(PROGRAM, 'OTHER') NOT LIKE 'ORACLE.EXE%';
SID USERNAME PROGRAM EVENT
SECONDS_IN_WAIT
---------- ---------- --------------- -------------------------------------
---------------
12 sqlplusw.exe SQL*Net message from client 2
63 TEST sqlplusw.exe SQL*Net message from client 103
SQL> SELECT SID, USERNAME, PROGRAM, EVENT, SECONDS_IN_WAIT
2
FROM V$SESSION
3
WHERE NVL(USERNAME, 'OTHER') != USER
4
AND NVL(PROGRAM, 'OTHER') NOT LIKE 'ORACLE.EXE%';
SID USERNAME PROGRAM EVENT SECONDS_IN_WAIT
---------- ---------- --------------- -------------------------------------
---------------
12 sqlplusw.exe SQL*Net message from client 6
63 TEST sqlplusw.exe SQL*Net message from client 107
SQL> SELECT SID, USERNAME, PROGRAM, EVENT, SECONDS_IN_WAIT
2
FROM V$SESSION
3
WHERE NVL(USERNAME, 'OTHER') != USER
4
AND NVL(PROGRAM, 'OTHER') NOT LIKE 'ORACLE.EXE%';
SID USERNAME PROGRAM EVENT SECONDS_IN_WAIT
---------- ---------- --------------- -------------------------------------
---------------
12 sqlplusw.exe SQL*Net message from client 8
63 TEST sqlplusw.exe SQL*Net message from client 143
SQL> SELECT SID, USERNAME, PROGRAM, EVENT, SECONDS_IN_WAIT
2
FROM V$SESSION
3
WHERE NVL(USERNAME, 'OTHER') != USER
4
AND NVL(PROGRAM, 'OTHER') NOT LIKE 'ORACLE.EXE%';
SID USERNAME PROGRAM EVENT SECONDS_IN_WAIT
---------- ---------- --------------- -------------------------------------
---------------
12 sqlplusw.exe SQL*Net message from client 1
63 sqlplusw.exe row
cache lock 1
SQL> SELECT SID, USERNAME, PROGRAM, EVENT, SECONDS_IN_WAIT
2
FROM V$SESSION
3
WHERE NVL(USERNAME, 'OTHER') != USER
4
AND NVL(PROGRAM, 'OTHER') NOT LIKE 'ORACLE.EXE%';
SID USERNAME PROGRAM
EVENT SECONDS_IN_WAIT
---------- ---------- --------------- -------------------------------------
---------------
12 sqlplusw.exe SQL*Net message from client 4
63 sqlplusw.exe row cache lock 4
SQL> SELECT SID, USERNAME, PROGRAM, EVENT, SECONDS_IN_WAIT
2
FROM V$SESSION
3
WHERE NVL(USERNAME, 'OTHER') != USER
4
AND NVL(PROGRAM, 'OTHER') NOT LIKE 'ORACLE.EXE%';
SID USERNAME PROGRAM EVENT
SECONDS_IN_WAIT
---------- ---------- --------------- -------------------------------------
---------------
12 sqlplusw.exe SQL*Net message from client 6
63 sqlplusw.exe row cache lock 6
SQL> SELECT SID, USERNAME, PROGRAM, EVENT, SECONDS_IN_WAIT
2
FROM V$SESSION
3
WHERE NVL(USERNAME, 'OTHER') != USER
4
AND NVL(PROGRAM, 'OTHER') NOT LIKE 'ORACLE.EXE%';
SID USERNAME PROGRAM EVENT
SECONDS_IN_WAIT
---------- ---------- --------------- -------------------------------------
---------------
12 sqlplusw.exe SQL*Net message from client 9
63 sqlplusw.exe row cache lock 8
SQL> SELECT SID, USERNAME, PROGRAM, EVENT, SECONDS_IN_WAIT
2
FROM V$SESSION
3
WHERE NVL(USERNAME, 'OTHER') != USER
4
AND NVL(PROGRAM, 'OTHER') NOT LIKE 'ORACLE.EXE%';
SID USERNAME PROGRAM EVENT
SECONDS_IN_WAIT
---------- ---------- --------------- -------------------------------------
---------------
63 TEST sqlplusw.exe SQL*Net message from client 1
69 sqlplusw.exe SQL*Net message from client 0
可以看到,如果只有一個會話連線資料庫失敗,則不會導致任何異常等待的出現,如果這時存在另一個會話以同樣的使用者名稱來訪問資料庫,那麼不管這個使用者使用的密碼是否正確,都會引發row cache lock等待事件。
而同樣的測試在11.2.0.2的環境中,出現的等待是library cache lock。檢查了一下,當前的row cache lock等待事件,實際上是11.2.0.1的一個bug:Bug 9720182: DUE TO ROW CACHE LOCK WAIT EVENTS IN DATABASE APPLICATION GOT HUNG。
Oracle提供了專門的PATCH可以解決這個問題,其實解決這個問題的最有效的辦法,就是避免使用者使用不正確的密碼來連線資料庫。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-710844/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 11.2資料庫登入出現library cache lock等待(一)資料庫
- LIBRARY CACHE LOCK 等待事件事件
- latch:library cache lock等待事件事件
- enq:Library cache lock/pin等待事件ENQ事件
- 定位Library Cache pin,Library Cache lock等待的解決方法
- 【TUNE_ORACLE】等待事件之“library cache lock”Oracle事件
- zt_library cache pin和lock等待分析
- 尋找 library cache lock 等待事件的session事件Session
- 'library cache lock'等待事件的處理方法事件
- 俺也談談 library cache lock 等待事件事件
- library cache lock和cursor: pin S wait on X等待AI
- 密碼延遲驗出現大量library cache lock密碼
- Library Cache Pin 及 Library Cache Lock分析
- library cache lock和library cache pin理解
- 大量"library cache lock"事件導致資料庫無法連線事件資料庫
- 11G資料庫之library cache lock及library cache pin模擬結合hanganalyze定位資料庫
- 【等待事件】library cache pin事件
- 等待事件--library cache pin事件
- library cache pin等待分析
- library cache pin 等待事件事件
- 當刪除oracle資料庫user時發生row cache lock 等待事件Oracle資料庫事件
- library cache pin和library cache lock的診斷分析
- library cache lock和library cache pin區別總結
- 等待事件之Row Cache Lock事件
- oracle library cache之library cache lock_library cache pin wait event釋義OracleAI
- oracle異常:library cache lockOracle
- Oracle 11g 密碼延遲認證與 library cache lock 等待Oracle密碼
- zt_如何平面解決library cache lock和library cache pin
- library cache lock 阻塞程式查詢
- Library cache lock/pin詳解(轉)
- 常用定位library cache lock的方法
- LIBRARY CACHE LOCK WAITS AND NO BLOCKER FOUNDAIBloC
- rac資料庫預設sql tuning advisor,導致大量library cache lock資料庫SQL
- 11g密碼錯誤延時造成大量"library cache lock"等待密碼
- 解決library cache pin等待事件事件
- 等待模擬-library cache 軟解析
- 查詢Library Cache Pin等待原因
- 【ASM_ORACLE】Library Cache最佳化篇(二)Library cache load lock的概念和解決辦法ASMOracle