分析SYSTEMSTATS DUMP

来源:互联网 发布:java import include 编辑:程序博客网 时间:2024/05/16 16:01
ORACLE有一个内部工具可以对systemstate dump做分析,它可以把每个进程在等待什么,争用的资源是什么,资源的持有者是谁列出来。这样可以对数据库的等待情况有个大概的了解,接下来再对 waiter 进程或者 holder 进程具体查看trace 文件,分析这个进程在做什么。

这个工具只是Oracle内部使用,外部无法下载。

不过没有这个工具,一样可以分析systemstate dump,常见的一些问题,比如:

  •  "WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK! ",下面的文档中有从systemstat dump中找到holder的具体方法:
               Note 278316.1 Troubleshooting: "WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK! "

  • 找到"Library Cache Lock"的持有者:
                Note 122793.1 How to Find which Session is Holding a Particular Library Cache Lock

  • 找到"cursor: pin S wait on X"的持有者:
                1. 比如 PROCESS 30在等待 'cursor: pin S wait on X':

                     PROCESS 30:
                     ......
                     waiting for 'cursor: pin S wait on X' blocking sess=0x0 seq=4209 wait_time=0 seconds since wait started=0
                     idn=76572938, value=51d00000000, where|sleeps=50011ea9c

                 2. 全文搜索“idn 76572938 oper EXCL”, 然后找到了下面的信息:

                     PROCESS 20:
                     ......
                     Mutex 7000001ee8b8d09(1309, 0) idn 76572938 oper EXCL 《==排它地持有了
                     Cursor Pin uid 1309 efd 0 whr 1 slp 0
                     opr=3 pso=7000001533652f8 flg=0
                 
                 3. 在往回搜索“PROCESS ",就会找到 PROCESS 20,说明这个持有者是PROCESS 20. 接下来要分析PROCESS 20在执行什么,为什么阻塞了其他进程。
原创粉丝点击