说一说 Oracle库的Hang

原创 2004年05月31日 20:46:00

有些时侯,我当然指的是非常少的情况下,我们会感觉我们的库”Hang”了,加了隐号的意思是说有时真的是Hang了,有一些则不是,是由于性能的问题引起的。我遇到过几次Hang的情况,结合着网上一些文章,把可能的原因、当时我们应该做的一些操作进行了如下的总结,不对的地方大家可以发Mail给我:qiuyb@21cn.com。

一、数据库Hang时可能的现象

1、最直观的是你的大部分的业务操作,比如说一个查询都使用好长的时间,或根本就返回不出结果。这和简单那种锁表是有区别的。

2、在操作系统上用Hp-unix用glance、Aix用nmon及用sar做监测会出现系统空闲的假象,表面看起来系统很闲,实际上系统已经Hang了。

3、查v$session_wait会出现大量的”latch free”、”enqueue”、” free buffer waits”等等待事件,有时后台会出现大量的.trc文件,另外需要观注一下$ORACLE_HOME/rdbms/log这个位置,有一些时侯trace文件会生成到这里。

二、Oracle库Hang时一些有用的操作和查询

1、如果要寻求Oracle的技术支持,我们需要dump一下Oracle的systemstate,操作如下
SQL>conn / as sysdba;
SQL> alter session set events 'immediate trace name SYSTEMSTATE level 10';
需要等几分钟的时间,这时在init<SID>.ora中所设置的user_dump_dest所标识的位置就可以找到这个.trc文件,一般比较大。

2、捕获一些视图的状态值
SQL>conn / as sysdba;
SQL>set linesize 500
SQL>set pagesize 0
SQL>spool v_views.txt
SQL> SELECT * FROM v$parameter;
SQL>SELECT class, value, name FROM v$sysstat;
SQL>SELECT sid, id1, id2, type, lmode, request FROM v$lock;
SQL>SELECT l.latch#, n.name, h.pid, l.gets, l.misses, l.immediate_gets, l.immediate_misses, l.sleeps FROM v$latchname n, v$latchholder h, v$latch l WHERE l.latch# = n.latch# AND l.addr = h.laddr(+);
SQL>SELECT * FROM v$session_wait ORDER BY sid;  --隔几秒重复执行3次。
SQL>spool off

3、有条件的话用statspack生成了一个Report,如果你对statspach不熟悉,可以参照http://www.itpub.net/showthread.php?s=&threadid=144448这个链接。

三、产生Hang可能的几个原因

1、开归档的情况下,归档位置所在的文件系统满了,这时lgwr就会等待归档进程的完成,DML写不了日志,都处于等待的状态。

2、在HP的系统开异步Io时,没为dba的组设置MLOCK权限。正常来说Oracle的启动是会报错的,可是有些时侯比如Oracle8.1.6的版本就不报错启动,但是此时的异步Io是有问题的,仔细查看你会在$ORACLE_HOME/rdbms/log看到大量的.trc文件。这种情形引的Hang我遇到过。

3、由于异常进程引起的,我所说的是那些占用系统资源(cpu,memory)特别大的进程,这些进程一般占用cpu会达到90%以上,相对其它的进程比较突出。可以通过hp-unix的glance、topas,IBM的nmod,topas,ps等工具进行监测。

4、由于主机系统、阵列的某方面的瓶颈引起的,在实际中最普遍的应该是Io的问题,比如IO方面有瓶颈,则dbwr、lgwr就会引” free buffer waits”、” log buffer space”等一系列的等待事件,此时是性能的问题,感觉起来像Hang。

5、也有bug的因素,我的库都是最新的补丁,这方面的问题还没遇到过。

四、几点处理建议
当得到Oracle的库奇慢或Hang时保持冷静的头脑很重要的,可以按如下的方法进行一些处理:

1、首先要到操作系统上去,用glance等工具进行一下观察,看一下cpu、内存、交换区、磁盘的繁忙程度与平时是不是相似的,同时看一看有没有占系统资源特别大的进程,有些时侯是这些进程引起的,通过v$process和v$session两个视图找到这Oracle进程的sid,serial#,把它用Alter system kill session ‘sid,serial#’;杀掉就行了。如果平时同样的时段你的磁盘的繁忙程度是95%,而些时它为20%,当然是假设了,说明Oracle的库没准真的hang了。

2、时间来得及的话执行一下”二”中的语句是很必要的,这样可以把这些信息提交给Oracle的supporter,让你们给你分析一下,查一下原因。

3、如果你的库开归档了,出现Hang的时侯一定要看一下归档日志的文件系统是不是满了,做一个完备一些的网管系统是很必要的。

4、在HP系统上打开异步IO时一定不要忘记为dba这个组加上MLOCK的权限,我就吃过这个亏。

5、时常的观注一下v$session_wait或用statspack进行观注一下等待事件,一般IO相关的事件较多,为Oracle打开异步IO、多加几个写进程及为Oracle数据文件所用的raw device使用条带都是很必要的。与应用的开发商交流也很重要,没准最近新上的一个应用就特耗IO或特占CPU资源。

6、尽量要使用比较稳定的Oracle的版本,比如Oracle8.1.7.4及Oracel9.2.0.4(最新为 9.2.0.5)都很稳定的,可以少去好多的麻烦。

 

oracle关闭数据库被hang住的解决办法

这几天关闭oracle数据库,总是关不掉,一直挂在那儿,查看日志信息如下: Active call for process 20457 user 'oracle' program 'oracle@SY...
  • MisshqZzz
  • MisshqZzz
  • 2016年07月13日 12:46
  • 712

Oracle hang 之sqlplus -prelim方法

很多情况下,Oracle hang导致sqlplus无法连接,从而无法获得Oracle系统和进程状态,使得定位问题缺少强有力的依据。 所幸的是Oracle 10g推出了sqlplus -prelim选...
  • zhengwei125
  • zhengwei125
  • 2015年09月16日 22:05
  • 514

oracle 11.2.0.3 rac hanganalyze 案例

oracle 11.2.0.3 rac hanganalyze 案例
  • msdnchina
  • msdnchina
  • 2015年11月13日 20:09
  • 1066

Oracle HANGANALYZE 功能诊断 DB hanging

        Oracle 数据库可能因为hang住而产生严重的性能问题,而通过HANGANALYZE  功能产生的日志可以帮助我们快速的定位是否是2个或者多个进程死锁了,有多少进程收到影响。从而帮...
  • tianlesoftware
  • tianlesoftware
  • 2011年04月13日 23:53
  • 13070

Oracle数据库里什么情况下select操作会hang住

我们都知道在Oracle数据库里是“读不阻塞写,写不阻塞读”,那么我们可不可以认为在正常情况下,select操作是怎样都能执行,始终不会被hang住的呢?注意我这里提到的是正常情况下,不包括那些由于l...
  • liaoyuanzi
  • liaoyuanzi
  • 2012年06月29日 16:45
  • 2041

oracle ORA-32701 hang分析(一)

今日对某局方的数据库进行巡检,发现alert.log日志里面有大量的ORA-32701: Possible hangs up to hang ID=57 detected报错,完整的日志报错如下: ...
  • zhouchang3
  • zhouchang3
  • 2016年10月15日 18:14
  • 571

Oracle Hanganalyze 分析

文章转自 love wife & love life —Roger 提供oracle技术支持服务  地址:www.killdb.com/2014/01/23/about-oracle-hanganal...
  • handsome_wl
  • handsome_wl
  • 2014年01月23日 15:33
  • 1198

oracle 监听hang住问题

一个windows平台的数据库,oracle版本11.2.0.1 监听突然hang住了,远程连接无法连接上,执行lsnrctl status等命令一直hang 住 删掉监听重建也木有解决,只好考虑...
  • killvoon
  • killvoon
  • 2016年06月17日 15:41
  • 783

Oracle11g监听hang住解决办法

Oracle11g监听hang
  • php521php
  • php521php
  • 2014年08月31日 00:26
  • 75214

存储IO性能太差,导致数据库hang住

用户偶尔出现应用hang住,采集了几次卡住时候的AWR报告,请求进行诊断。 问题分析 步骤一:分析awr报告 可以看到系统的问题主要严重的是日志的写入等待和切换,外加一些热块争用如下 主要是在往...
  • wenzhongyan
  • wenzhongyan
  • 2015年03月13日 11:39
  • 2164
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:说一说 Oracle库的Hang
举报原因:
原因补充:

(最多只允许输入30个字)