共计 787 个字符,预计需要花费 2 分钟才能阅读完成。
现象:
普通用户和 sysdba 都无法登陆,业务中断
分析过程:
1. 先做 hanganalyze 和 systemstate dump
$sqlplus -prelim “/as sysdba”
SQL> oradebug setmypid
Statement processed.
SQL> oradebug hanganalyze 3
Statement processed.
SQL> oradebug hanganalyze 3
Statement processed.
SQL> oradebug tracefile_name
/u01/app/Oracle/diag/rdbms/db11/db11/trace/db11_ora_2495.trc
SQL>
2. 分析 trace 文件
有 76 个会话被会话 494 阻塞了,而会话 494 在等待 shared pool…
会话 494,496,519 之间可能相互独立,也可能存在互相阻塞的关心。
继续分析日志:
”adjlist“表示 nodenum,所以会话 494 被会话 598 阻塞,会话 496 也被会话 597 阻塞
所以进程号 553382、sid=598 的会话就是数据库 hang 住时的阻塞源头
会话 598 在做什么,需要从 systemstate dump 中做分析,但是系统重启前没有做 systemstate dump 分析。
因为 oracle 中的进程要么是前台进程,要么是后台进程,在 oracle 启动的时候,会记录后台进程的进程 id 号,
从 alter 日志中发现:
根据 MMAN 进程猜测与动态调整 SGA 有关。关闭动态 SGA 管理后,系统恢复正常,不再有 hang 现象。
更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-04/130322.htm