使用HangFG进行Oracle Hang分析

Database Hang是很严重的系统故障。Oracle数据库是一个极其复杂的整体,多种功能、特性和属性在各种生产条件下运行的时候,经常会暴露出一些问题,由此一些Hang住现象就会出现。

最常见的Hang表现就是不对外服务、不支持连接、服务器资源负载较低。主要的根源在于内存资源、Latch/Lock锁定相互等待、后台进程僵死。发生Hang现象的时候,最简单、常用的处理方式是自认倒霉,关机重启(有时候重启库不支持)。

放任Hang现象是很危险的,主要在于其对于数据库可用性是及其严重的破坏效应。进行Hang分析,定位问题关键、尝试去解决问题其实是非常重要的。

根据Oracle官方分析策略,Hang发生的时候,需要用户将系统多个进程的状态以trace文件的方式Dump出来,发送给官方服务支持进行分析。Hang现象很多时候是不能刻意重现的,发生故障时快速定位问题,将状态迅速导出来是比较关键的。

传统上,我们使用过oradebughanganalyze配合dump systemstate将系统内存状态、各个进程情况。这种方法操作起来需要命令行支持,而且生成分析文件分布在多处。基于此,Oracle官方推荐了HangFGHang File Generator)来支持自动化Hang分析文件收集。本篇主要介绍HangFG安装和使用方法,留待不时之需。

 

1、环境说明

 

笔者使用Oracle 11gR2进行测试,具体版本为11.2.0.4

 

 

SQL> select * from v$version;

 

BANNER

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

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

PL/SQL Release 11.2.0.4.0 - Production

CORE    11.2.0.4.0      Production

TNS for Linux: Version 11.2.0.4.0 - Production

NLSRTL Version 11.2.0.4.0 – Production

 

 

下载HangFG要从Oracle官方MOS上,对应文章编号: ID 362094.1。下载后的文件是一个压缩格式文件,通过FTP上传到服务器。

 

 

[oracle@sicslife upload]$ ls -l

total 2625144

-rw-r--r--  1 root   root          51200 Aug 31 22:26 hangfg.tar

 

 

2HangFG安装使用

 

解压tar文件,就完成安装过程。

 

 

[root@sicslife upload]# tar -xvf hangfg.tar

hangfg/

hangfg/haLevel.sh

hangfg/test_rconnection2.sh

hangfg/hangfg.sh

hangfg/test_rconnection.sh

hangfg/ssLocal.sh

hangfg/README

hangfg/test_connection.sh

hangfg/ss.sh

hangfg/haLocalLevel.sh

hangfg/hq.sh

 

 

同其他很多Oracle推出的工具一样,HangFG是一系列bash scripts构成的程序文件。

 

 

[root@sicslife upload]# ls -l

total 2625148

drwxr-xr-x  2 oracle oinstall       4096 Oct 25  2012 hangfg

 

[root@sicslife upload]# cd hangfg

[root@sicslife hangfg]# ls -l

total 72

-rwxr-xr-x 1 oracle oinstall   312 Apr  9  2007 haLevel.sh

-rwxr-xr-x 1 oracle oinstall   305 Apr  9  2007 haLocalLevel.sh

-rwxr-xr-x 1 oracle oinstall 30363 Oct 25  2012 hangfg.sh

-rwxr-xr-x 1 oracle oinstall   366 Apr  9  2007 hq.sh

-rw-r--r-- 1 oracle oinstall  4146 Oct 25  2012 README

-rwxr-xr-x 1 oracle oinstall   279 Oct 25  2012 ssLocal.sh

-rwxr-xr-x 1 oracle oinstall   285 Oct 25  2012 ss.sh

-rwxr-xr-x 1 oracle oinstall    86 Apr  9  2007 test_connection.sh

-rwxr-xr-x 1 oracle oinstall    69 Apr  9  2007 test_rconnection2.sh

-rwxr-xr-x 1 oracle oinstall    58 Apr  9  2007 test_rconnection.sh

 

 

调用方法上,hangfg是非常简单的,只包括一个参数作为输入,用于指定不同程度的分析级别。

分析级别参数:

 

ü  参数值1:对系统最小的影响级别。会持续收集两次level 3hanganalyze数据,如果系统负载较轻的话,会继续收集一次level 4级别的hanganalyze

ü  参数值2:系统默认取值。对系统性能有中等程度影响,首先要收集一次level 3hanganalyze。之后如果系统负载可以接受,会进行两次Level 4级别的hanganalyze操作。如果系统负载过大,会进行一次Level 3级别的hanganalyze操作。系统也会收集一次258级别的系统状态;

ü  参数值3:连续进行两次Level 4hanganalyze操作,同时进行一次258级别的系统状态收集;

 

如果在RAC环境下,hangfg可以自动对所有节点进行收集。

执行hangfg方法。

 

 

[root@sicslife hangfg]# su - oracle

[oracle@sicslife ~]$ cd /upload/hangfg

 

[oracle@sicslife hangfg]$ ./hangfg.sh 2

 

Starting Hang File Generator V 1.2.0 on Mon Aug 31 23:14:23 CST 2015

HANGFG - Written by Carl Davis, Center of Expertise, Oracle Corporation

 

rm: cannot remove `*.tmp': No such file or directory

 

Searching for udump/bdump...

 

/u01/app/oracle/diag/rdbms/sicsdb/sicsdb/trace

/u01/app/oracle/diag/rdbms/sicsdb/sicsdb/trace

Database connection established.

 

Skipping remote node file collection...

Treating collection as single node (non RAC).

 

Please wait. File operations in progress...

Processing Medium Impact Hang Trace Collection...

Starting HangAnalyze Trace. Please Wait...

Statement processed.

Statement processed.

Hang Analysis in /u01/app/oracle/diag/rdbms/sicsdb/sicsdb/trace/sicsdb_ora_19908.trc

HA Filename=/u01/app/oracle/diag/rdbms/sicsdb/sicsdb/trace/sicsdb_ora_19908.trc

blockers=

Blocker info missing. Cannot continue with level 4 dump.

Starting HangAnalyze Trace. Please Wait...

Statement processed.

Statement processed.

Hang Analysis in /u01/app/oracle/diag/rdbms/sicsdb/sicsdb/trace/sicsdb_ora_19923.trc

 

Starting Systemstate Trace. Please Wait...

 

SQL*Plus: Release 11.2.0.4.0 Production on Mon Aug 31 23:16:34 2015

 

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

 

SQL> Connected.

SQL> SQL> SQL> SQL> SQL> SQL> SQL> SQL> SQL> Statement processed.

SQL> Statement processed.

SQL> Statement processed.

SQL> Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

Copying files to hangFileArchive...

 

Creating tarball of all hangfiles...

 

hangFileArchive/

hangFileArchive/sicsdb_ora_19980.trm

hangFileArchive/sicsdb_ora_19923.trc

hangFileArchive/sicsdb_dbrm_17833.trm

hangFileArchive/alert_sicsdb.log

hangFileArchive/sicsdb_ora_19980.trc

hangFileArchive/sicsdb_ora_19923.trm

hangFileArchive/sicsdb_ora_19908.trc

hangFileArchive/hangfiles.out

hangFileArchive/sicsdb_dbrm_17833.trc

hangFileArchive/sicsdb_ora_19908.trm

./hangfg.sh[1036]: compress: not found [No such file or directory]

 

Program hangfg terminated successfully.

More information contained in hangfg.log

 

 

3、结果解析

 

hangFG操作之后,Oracle实例在对应的dump目录中生成若干trc文件。重要的是,工具将数据文件收集在当前目录下。

 

 

[oracle@sicslife hangfg]$ ls -l

total 1192

-rw-r--r-- 1 oracle oinstall       0 Aug 31 23:14 conn.test

-rwxr-xr-x 1 oracle oinstall     312 Apr  9  2007 haLevel.sh

-rwxr-xr-x 1 oracle oinstall     305 Apr  9  2007 haLocalLevel.sh

-rw-r--r-- 1 oracle oinstall     127 Aug 31 23:16 hanganalyze.tmp

-rw-r--r-- 1 oracle oinstall    6642 Aug 31 23:16 hangfg.log

-rwxr-xr-x 1 oracle oinstall   30359 Aug 31 23:11 hangfg.sh

drwxr-xr-x 2 oracle oinstall    4096 Aug 31 23:16 hangFileArchive

-rw-r--r-- 1 oracle oinstall    1598 Aug 31 23:16 hangfiles.out

-rw-r--r-- 1 oracle oinstall 1116160 Aug 31 23:16 hfiles.tar

-rwxr-xr-x 1 oracle oinstall     366 Apr  9  2007 hq.sh

-rw-r--r-- 1 oracle oinstall     402 Aug 31 23:14 hq.tmp

-rw-r--r-- 1 oracle oinstall    1220 Aug 31 23:16 localhangfiles.tmp

-rw-r--r-- 1 oracle oinstall    4146 Oct 25  2012 README

-rwxr-xr-x 1 oracle oinstall     279 Oct 25  2012 ssLocal.sh

-rwxr-xr-x 1 oracle oinstall     285 Oct 25  2012 ss.sh

-rwxr-xr-x 1 oracle oinstall      82 Aug 31 23:12 test_connection.sh

-rwxr-xr-x 1 oracle oinstall      65 Aug 31 23:12 test_rconnection2.sh

-rwxr-xr-x 1 oracle oinstall      54 Aug 31 23:12 test_rconnection.sh

 

 

在目录hangFileArchive中,收集文件可以直接找到。

 

 

[oracle@sicslife hangfg]$ cd hangFileArchive/

[oracle@sicslife hangFileArchive]$ ls -l

total 1104

-rw-r----- 1 oracle oinstall  91177 Aug 31 23:16 alert_sicsdb.log

-rw-r--r-- 1 oracle oinstall   1598 Aug 31 23:16 hangfiles.out

-rw-r----- 1 oracle oinstall  17963 Aug 31 23:16 sicsdb_dbrm_17833.trc

-rw-r----- 1 oracle oinstall    550 Aug 31 23:16 sicsdb_dbrm_17833.trm

-rw-r----- 1 oracle oinstall   3224 Aug 31 23:16 sicsdb_ora_19908.trc

-rw-r----- 1 oracle oinstall    113 Aug 31 23:16 sicsdb_ora_19908.trm

-rw-r----- 1 oracle oinstall   3224 Aug 31 23:16 sicsdb_ora_19923.trc

-rw-r----- 1 oracle oinstall    113 Aug 31 23:16 sicsdb_ora_19923.trm

-rw-r----- 1 oracle oinstall 899566 Aug 31 23:16 sicsdb_ora_19980.trc

-rw-r----- 1 oracle oinstall  86711 Aug 31 23:16 sicsdb_ora_19980.trm

 

 

同时,压缩文件hfiles.tar

 

 

-rw-r--r-- 1 oracle oinstall 1116160 Aug 31 23:16 hfiles.tar

 

 

4、结论

 

HangFG是一个快速进行hanganalyze的有用工具。借助HangFG,可以最快的进行数据收集工作,并且将其提交到官方支持。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17203031/viewspace-1787686/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/17203031/viewspace-1787686/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值