使用AWK分析Oracle系统锁定、Hang状态(2)

分析结果很简单,也很容易看懂。分析重点是从process入手,将当前系统中所有对应的Process信息逐个整理出来,将对应的等待事件wait event理出来。最后,将存在Block的情况整理列出来。

从上面的结果看,可以发现资源Enqueue TX-00060002-00000611被26号会话持有,该会话却处在等待用户信息输入状态。而上面的Process列表中,对于这个资源27号进程是等待持有的。

那么,我们直到了26和27直接有问题,如何定位究竟哪个会话呢?注意:这个26和27对应的就是v$process中数据库内部的进程编号PID。

SQL> select * from v$process where pid in (26,27);

ADDR                    PID SPID                     

---------------- ---------- ------------------------ 

00000001339FDBD0        26 7505                     

00000001339FEC88        27 8317                     

SQL> select sid, serial#, paddr, event from v$session where paddr in ('00000001339FDBD0','00000001339FEC88');

SID    SERIAL# PADDR            EVENT

---------- ---------- ---------------- ----------------------------------------------------------------

319        21 00000001339FDBD0 SQL*Net message from client

479        43 00000001339FEC88 enq: TX - row lock contention

正确定位到319和479会话。

3、结论

数据库资源相互锁定在应用领域非常常见,例如资源释放问题、会话操作失误和事务回滚等,都会引起或大或小的资源锁定。通过awk命令配合ass109.awk命令文件,可以比较方便的让我们快速定位问题,解决问题。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/fd532d929430c6d804fb7bff50be3a6e.html