暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Oracle DBA的技巧之一:诊断数据库挂起(HANG) 事件

Oracle优化大师 2016-12-07
1745

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。

     数据库的版本一路走来,8i,9i,10g,11g,12c ..... 数据库系统越来越复杂;功能也越来越强大;DBA的职责越来越重要;

     这次我们谈谈挂起事件;

1) 使用以下命令生成 HANGANALYZE 追踪文件 ==>


2) 在运行 Hanganalyze 之后,登入一个新 SQL 会话来生成系统状态转储(dump)文件==>

     


1)和 2)中使用 hanganalyze 和 systemstate 收集信息的操作。HANGFG 工具提供了一系列 UNIX shell 脚本命令来自动化收集和生成 hanganalyze 和 sysemstate 追踪文件。 在使用 HANGFG 生成并收集追踪文件时需要考虑到需要在已处于性能退化的系统中进行诊断的影响。由于影响级别作为此工具参数被传给 HANGFG, 所以用户需要做出决定, 在启用此工具时,何种级别的影响是可接受的。当用户选择轻度影响或中等影响(选项 1 或 2)作为参数时, HANGFG 工具同样有能力做出调整以适应用户做出的决定。HANGFG 是 RAC 自识别的,并且能在 RAC 和非 RAC环境中运行。


3) 当 hang 事件发生后, 获取到的 Statspack 或 AWR/ASH(10g/11g)报告是否具有时效性取决于做 Statspack 快照频繁程度。 举个例子, 如果你每隔 1 小时做一次快照,在下一次快照前发生了 5 分钟的数据库挂起事件。那么快照由于显得时间跨度太长而很难用于分析当时 5 分钟发生的情况。


有时在尝试连接数据库时,你的调试会话也会挂起在那里。这时留给你 3 种可选方法==>


1) 找一个之前已连上的可用会话。

2) 如果你正在使用 10g/11g,那么你可以使用-prelim 选项来登录数据库:



3) 使用操作系统调试器来查看运行进程

-  获取服务器oracle先关影子进程ID (请注意并非oracle后台进程,调试后台进程可能导致数据库奔溃)…”ps –ef | grep ora”

-  使用当前系统级调试器(如 dbx, adb, gdb 等)来获取 systemstate:$ gdb $ORACLE_HOME/bin/oracle <process ID>(gdb) print ksudss(267)


括号中的数字(267)是你希望转储 systemstate 的级别.


** 对于 RAC  挂起事件请看“RAC  性能”部分中对于 racdiag  脚本的使用**


通过以下 systemstate 命令可在同一时点转储所有 RAC 节点状态:

SQL> oradebug -g all dump systemstate 267


总结,你可以上传以下文件:

- Hanganalyze 输出

- Systemstate 转储(dumps)

- hangfiles.out (如果使用 HANGFG 工具命令)

- alert.log

- 在一个很短时间内的 Statspack/AWR/ASH 报告

- 可用的系统调试监控输出




本文分享自微信公众号 - Oracle优化大师,如有侵权,请联系 service001@enmotech.com 删除。
最后修改时间:2019-12-20 10:53:32
文章转载自Oracle优化大师,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论