Oracle数据库“真的”hang住了,可以理解为数据库内部发生死锁。因为普通的DML死锁,oracle服务器会自动监测他们的依赖关系,并回滚其中一个操作,终止这种相互等待的局面。而当这种死锁发生在争夺内核级别的资源(比如说是pins或latches)时,Oracle并不能自动的监测并处理这种死锁。
其实很多时候数据库并没有hang住,而只是由于数据库的性能问题,处理的时间比较长而已。
Hanganalyze工具使用内核调用检测会话在等待什么资源,报告出占有者和等待者的相互关系。另外,它还会将一些比较”interesting”的进程状态dump出来,这个取决于我们使用hanganalyze的分析级别。
使用hanganalyze
hanganalyze工具从oracle8i第二版开始提供,到9i增强了诊断RAC环境下的“集群范围”的信息,这意味着它将会报告出整个集群下的所有会话的信息。
目前有三种使用hanganalyze的方法:
一种是会话级别的:
ALTER SESSION SET EVENTS 'immediate trace name HANGANALYZE level '; |
一种是实例级别:
ORADEBUG hanganalyze |
一种是集群范围的:
ORADEBUG setmypid ORADEBUG setinst all ORADEBUG -g def hanganalyze |
先解释下各个level的含义:
1-2:只有hanganalyze输出,不dump任何进程
3:Level2+Dump出在IN_HANG状态的进程
4:Level3+Dump出在等待链里面的blockers(状态为LEAF/LEAF_NW/IGN_DMP)
5:Level4+Dump出所有在等待链中的进程(状态为NLEAF)
hanganalyze报告会分作许多片断,会话片断信息总是由一个header详尽描述被提取的的会话信息。Oracle8i和9i的信息略有不同:
Oracle 8.x chain header: Oracle9i chain header: : |
先把在trace file中看到的一些缩略语解释一下:
sid是 Session ID sess_srno是serial# proc_ptr是Process Pointer ospid 是OS Process ID cnode是Node Id,Oracle9i才用 Nodenum是hanganalyze 自己为了记录这些会话而定制的编号,从0开始排起。 State 是node的状态 Adjlist是临近的node(通常代表一个blocker node) Predecessor是Predecessor node ,通常代表一个 waiter node |
nodenum]/cnode/sid/sess_srno/session/ ospid/state/start/finish/[adjlist]/predecessor [16]/0/17/154/0x24617be0/26800/LEAF/29/30//19 [19]/0/20/13/0x24619830/26791/NLEAF/33/34/[16]/186 |
生成跟踪文件 SQL> oradebug setmypid 已处理的语句 SQL> oradebug hanganalyze 3 |
============== HANG ANALYSIS: ============== Open chains found: Chain 1 : : <5/1/0x843630f8/2531/No Wait> Chain 2 : : <12/1/0x84364e48/2521/instance state change> |
Other chains found: Extra information that will be dumped at higher levels: [level 4] : 2 node dumps -- [LEAF] [LEAF_NW] [IGN_DMP] [level 10] : 6 node dumps -- [IGN] State of nodes ([nodenum]/sid/sess_srno/session/state/ start/finish/[adjlist]/predecessor): [0]/1/1/0x84405460/IGN/1/2//none [1]/2/1/0x84405de0/IGN/3/4//none [2]/3/1/0x84406760/IGN/5/6//none [3]/4/1/0x844070e0/IGN/7/8//none [4]/5/1/0x84407a60/LEAF_NW/9/10//none [5]/6/1/0x844083e0/IGN/11/12//none [10]/11/1/0x8440b360/IGN/13/14//none [11]/12/1/0x8440bce0/LEAF/15/16//none Dumping System_State and Fixed_SGA in process with ospid 2521 Dumping Process information for process with ospid 2531 Dumping Process information for process with ospid 2521 *** 2004-12-09 00:07:49.680 ==================== END OF HANG ANALYSIS ==================== |
我们看到,并没有发生死锁,Smon进程忙,说明在正确释放资源.
本文出自:http://tech.ccidnet.com/art/11217/20070816/1180053_2.html
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11134237/viewspace-664775/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/11134237/viewspace-664775/