电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

系统Hang住时用oradebug分析的方法


发布日期:2021/3/1
 

某个用户做分析表的操作时进程被阻塞library cache lock引起阻塞的进程也就是普通的查询该表的语句

原因是有很多这个表相关的SQL在执行产生这方面的沖突分析的时候要修改相关的统计数据而统计数据对于SQL分析是有影响的如果一个SQL在执行过程中是不允许修改和表相关的一些信息的

如果系统hang住了可以使用oradebug做一个HANGANALYZE来分析

HANGANALYZE是系统级的分析属于轻量级分析不会对系统产生影响

例如做一个级的分析

做的方法分两部

在SQLPLUS里用SYS账号

oradebug setmypid

oradebug hanganalyze

之后将会生成一个trace报告例如以下内容

==============

HANG ANALYSIS:

==============

Open chains found:

Chain : <sid/sess_srno/proc_ptr/ospid/wait_event> :

<//xed//PX Deq: Join ACK>

<//xedd//library cache pin>

Chain : <sid/sess_srno/proc_ptr/ospid/wait_event> :

<//xedb//No Wait>

Chain : <sid/sess_srno/proc_ptr/ospid/wait_event> :

<//xedc//No Wait>

说明

nodenum定义每个session的序列号

sidsession的sid

sess_srnosession的Serial#

ospidOS的进程ID

statenode的状态

adjlist表示blocker node

predecessor表示waiter node

示例中SID=的就是被HANG主的会话SID=就是阻塞者

Sid=的这个进程挂死了但是他持有了library cache pin所以阻塞了杀掉(OSPID=)就解决问题了

而后根据等待事件的信息具体原因具体分析

HANGANALYZE报告里的阻塞有可能是HANG住也有可能只是由于比较慢引起的所以在分析的时候可以做一个HANGANALYZE然后隔几分钟再做一次两次对比着看如果是比较慢引起的两次报告的情况会发生变化如果是HANG住了是不会变化的

上一篇:Kill Session[Metalink]

下一篇:甲骨文收购Thor和OctetString强化产品阵容