hanganalyze解決row cache lock(ZT)
INTO (PARTITION P_20090608 TABLESPACE TS_DATA_A , PARTITION P_MAX TABLESPACE TS_DATA_A)
SQL>
檢查該session的等待事件:
------------------------------ ---------- ---------- ----------
row cache lock 8 0 5
查了網上的一些資料,說和sga的shared pool大小不足有關,或者和sequence的cache不大有關。經過分析,這2個原因應該都不是。因為1、如果是shared pool不足,這樣的現象一般是某個sql執行的比較慢,但是還是會執行完,而不是像現在這樣的掛住;2,只是執行split分割槽,並沒有和 sequence相關。
在這裡,我們用hanganalyze來進行分析。
hanganalyze用法:
1.oradebug setospid
2.oradebug analyze <level>
然後觀察出來的trace檔案。
這裡的level有如下幾級:
----------------------------------------
1-2 Only HANGANALYZE output, no process dump at all
3 Level 2 + Dump only processes thought to be in a hang (IN_HANG state)
4 Level 3 + Dump leaf nodes (blockers) in wait chains (LEAF,LEAF_NW,IGN_DMP state)
5 Level 4 + Dump all processes involved in wait chains (NLEAF state)
10 Dump all processes (IGN state)
我們現在來看看出來的trace檔案:
SQL> select spid from v$session a,v$process b where a.paddr=b.addr and a.sid=295;
SPID
------------
19237
SQL> oradebug SETOSPID 19237
Oracle pid: 235, Unix process pid: 19237, image: oracle@hl_rdb01 (TNS V1-V3)
SQL>
SQL> oradebug hanganalyze 3;
Cycle 1: (0/295)
Cycle 2: (0/254)--(0/239)
Hang Analysis in /oracle/app/oracle/admin/hlreport/udump/hlreport_ora_25247.trc
SQL> !
$ more /oracle/app/oracle/admin/hlreport/udump/hlreport_ora_25247.trc
Dump file /oracle/app/oracle/admin/hlreport/udump/hlreport_ora_25247.trc
Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.6.0 - Production
ORACLE_HOME = /oracle/app/oracle/product/9.2.0
System name: HP-UX
Node name: hl_rdb01
Release: B.11.11
Version: U
Machine: 9000/800
Instance name: hlreport
Redo thread mounted by this instance: 1
Oracle process number: 157
Unix process pid: 25247, image: oracle@hl_rdb01 (TNS V1-V3)
*** SESSION ID:(312.10459) 2009-05-20 16:21:58.423
*** 2009-05-20 16:21:58.423
==============
HANG ANALYSIS:
==============
Cycle 1 : <cnode/sid/sess_srno/proc_ptr/ospid/wait_event> :
<0/329/43816/0x4d6b5638/23487/row cache lock>
-- <0/254/19761/0x4d687438/23307/library cache lock>
Cycle 2 : <cnode/sid/sess_srno/proc_ptr/ospid/wait_event> :
<0/295/57125/0x4d6b8978/19237/row cache lock>
Cycle 3 : <cnode/sid/sess_srno/proc_ptr/ospid/wait_event> :
<0/295/57125/0x4d6b8978/19237/row cache lock>
Open chains found:
Other chains found:
Chain 1 : <cnode/sid/sess_srno/proc_ptr/ospid/wait_event> :
<0/312/10459/0x4d69f9b8/25247/No Wait>
Extra information that will be dumped at higher levels:
[level 3] : 4 node dumps -- [IN_HANG]
[level 5] : 1 node dumps -- [SINGLE_NODE] [SINGLE_NODE_NW] [IGN_DMP]
[level 10] : 223 node dumps -- [IGN]
State of nodes
([nodenum]/cnode/sid/sess_srno/session/ospid/state/start/finish/[adjlist]/predecessor):
[0]/0/1/1/0x4d7146c0/5132/IGN/1/2//none
……………………………………………………
[238]/0/239/57618/0x4d7b18a0/13476/IN_HANG/395/402/[294][238][328][253]/none
……………………………………………………
[253]/0/254/19761/0x4d7bb710/23307/IN_HANG/397/400/[328][238][294]/294
………………………………………………………………
[294]/0/295/57125/0x4d7d6820/19237/IN_HANG/396/401/[294][238][253]/238
[328]/0/329/43816/0x4d7ecf40/23487/IN_HANG/398/399/[253]/253
………………………………………………………………
Dumping System_State and Fixed_SGA in process with ospid 13476
Dumping Process information for process with ospid 13476
Dumping Process information for process with ospid 23307
Dumping Process information for process with ospid 19237
Dumping Process information for process with ospid 23487
====================
END OF HANG ANALYSIS
====================
*** 2009-05-20 16:48:20.686
我們來看看([nodenum]/cnode/sid/sess_srno/session/ospid/state/start/finish/[adjlist]/predecessor)部分:
nodenum是hanganalyze自己為了記錄這些會話而定製的編號,從0開始排起。
cnode是Node Id
sid是 Session ID
sess_srno是serial#
proc_ptr是Process Pointer
ospid 是OS Process ID
state 是node的狀態
adjlist是臨近的node(通常代表一個blocker node)
predecessor是Predecessor node ,通常代表一個 waiter node
state部分有幾個比較重要的狀態:
1.IN_HANG:這表示該node處於死鎖狀態,通常還有其他node(blocker)也處於該狀態
2.LEAF/LEAF_NW:該node通常是blocker。透過條目的”predecessor”列可以判斷這個node是否是blocker。LEAF說明該NODE沒有等待其他資源,而LEAF_NW則可能是沒有等待其他資源或者是在使用CPU.
3.NLEAF:通常可以看作這些會話是被阻塞的資源。發生這種情況一般說明資料庫發生效能問題而不是資料庫hang
4.IGN/IGN_DMP:這類會話通常被認為是空閒會話,除非其adjlist列裡存在node。如果是非空閒會話則說明其adjlist裡的node正在等待其他node釋放資源。
5.SINGLE_NODE/SINGLE_NODE_NW:近似於空閒會話
現在我們來看看我們的trace出來的檔案:
Cycle 1 : :
<0/329/43816/0x4d6b5638/23487/row cache lock>
— <0/254/19761/0x4d687438/23307/library cache lock>
Cycle 2 : :
<0/295/57125/0x4d6b8978/19237/row cache lock>
Cycle 3 : :
<0/295/57125/0x4d6b8978/19237/row cache lock>
cycle表示oracle內部確定的死鎖。其中我們的當前手工執行split的295程式也在裡面。
我們觀察其他的程式在做什麼,如329:
1 select machine,status,program,sql_text from v$session a ,v$sqlarea b
2* where a.sql_address=b.address and a.sid=329
SQL> /
MACHINE STATUS
---------------------------------------------------------------- --------
PROGRAM
------------------------------------------------
SQL_TEXT
--------------------------------------------------------------------------------
hl_rdb01 ACTIVE
sqlplus@hl_rdb01 (TNS V1-V3)
ALTER TABLE A_PDA_SP_STAT SPLIT PARTITION P_MAX AT (20090609) INTO (PARTITION P
_20090608 TABLESPACE TS_DATA_A , PARTITION P_MAX TABLESPACE TS_DATA_A)
SQL> select event from v$session_wait where sid=329;
EVENT
----------------------------------------------------------------
row cache lock
發現也是在執行split語句,但是問了同事,他已經把之前執行失敗的指令碼完全kill掉了。
估計在資料庫中程式掛死了,沒有完全的釋放。
kill掉329號程式後,發現還是掛住,所以我們繼續做hanganlyze:
HANG ANALYSIS:
==============
Cycle 1 : <cnode/sid/sess_srno/proc_ptr/ospid/wait_event> :
<0/295/57125/0x4d6b8978/19237/row cache lock>
Cycle 2 : <cnode/sid/sess_srno/proc_ptr/ospid/wait_event> :
<0/254/19761/0x4d687438/23307/library cache lock>
-- <0/239/57618/0x4d6b74f8/13476/row cache lock>
我們繼續把其他的程式殺掉。終於295的split執行成功。
INTO (PARTITION P_20090608 TABLESPACE TS_DATA_A , PARTITION P_MAX TABLESPACE TS_DATA_A)
SQL> /
Table altered.
Elapsed: 00:31:03.21
SQL>
繼續執行split下一個分割槽,也很快完成。
2 INTO (PARTITION P_20090609 TABLESPACE TS_DATA_A
3 , PARTITION P_MAX TABLESPACE TS_DATA_A);
Table altered.
Elapsed: 00:00:00.02
SQL>
至此,問題解決.
[238]/0/239/57618/0x4d7b18a0/13476/IN_HANG/395/402/[294][238][328][253]/none
[253]/0/254/19761/0x4d7bb710/23307/IN_HANG/397/400/[328][238][294]/294
[294]/0/295/57125/0x4d7d6820/19237/IN_HANG/396/401/[294][238][253]/238
[328]/0/329/43816/0x4d7ecf40/23487/IN_HANG/398/399/[253]/253
329堵塞住了254
254堵塞住了295
295堵塞住了238
殺掉的應該是329,254,295
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/628922/viewspace-691713/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 轉)用hanganalyze解決row cache lock
- (轉)用hanganalyze解決row cache lock
- 轉貼_用hanganalyze解決row cache lock
- 用hanganalyze解決row cache lock(轉貼)
- 等待事件之Row Cache Lock事件
- zt_如何平面解決library cache lock和library cache pin
- WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK!AIENQ
- [ORACLE 11G]ROW CACHE LOCK 等待Oracle
- 故障排除:"WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK! "AIENQ
- WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK!的分析AIENQ
- WAITEVENT: "row cache lock" Reference Note (文件 ID 34609.1)AI
- 一次WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCKAIENQ
- 由row cache lock等待事件引起的效能問題事件
- Resolving Issues Where 'Row Cache Lock' Waits are OccurringAI
- Metlink:Troubleshooting:WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK!AIENQ
- 一次Row Cache Lock問題處理過程
- zt_library cache pin和lock等待分析
- library cache pin/lock的解決辦法
- 定位Library Cache pin,Library Cache lock等待的解決方法
- Rac 環境中分割槽表建立index hang(row cache lock)Index
- WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK! 與 dc_tablespcesAIENQ
- WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK-[ID 278316.1]AIENQ
- How to Match a Row Cache Object Child Latch to its Row CacheObject
- [Oracle]--Library cache lock 故障解決一例Oracle
- hang了,嚴重的row cache lock 等待事件--就因大sql文字事件SQL
- RAC環境Library Cache Lock的處理方法(zt)
- oracle 'row cache objects' 等待事件解釋OracleObject事件
- 11G資料庫之library cache lock及library cache pin模擬結合hanganalyze定位資料庫
- Metlink:How to Match a Row Cache Object Child Latch to its Row CacheObject
- 翻譯metalink關於WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK文章AIENQ
- 記一次row cache lock引起的效能問題分析處理
- zt_如何使用event 10049分析定位library cache lock and library cache pin
- 當刪除oracle資料庫user時發生row cache lock 等待事件Oracle資料庫事件
- oracle??邏輯DG同步卡住,session等待row cache lock的處理過程OracleSession
- 11G 修改使用者密碼導致的row cache lock密碼
- Library cache lock/pin詳解(轉)
- row cache objects latch研究Object
- enq: TX - row lock contentionENQ