一、数据库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的版本,可以少去好多的麻烦。
分享到:
相关推荐
Oracle数据库hang问题分析是数据库性能诊断的重要部分,hang在Oracle数据库中通常是指数据库在执行任务时出现了无响应或者响应时间极长的情况。本文将依据提供的Oracle Performance Diagnostic Guide的内容,详细...
### 数据库Hang诊断:Oracle环境下深入解析 #### 引言 在Oracle数据库管理与优化的领域内,“数据库Hang”是一个不容忽视的问题。Hang通常指的是数据库响应异常缓慢或完全停止响应的状态,这可能由多种因素引发,...
从提供的文件内容中,我们可以提取出与Oracle数据库被“hang”住和锁定问题相关的知识点。Oracle性能诊断指南(Oracle Performance Diagnostic Guide)中专门有一部分是关于Hang/Locking问题的分析和解决方法。下面...
Oracle数据库在11g版本引入了一项名为"密码延迟验证"的安全特性,这一特性在特定情况下可能导致系统响应缓慢,甚至hang住。这个问题通常出现在修改了应用程序账户密码之后,如果应用服务器未能及时更新数据库连接...
3. **Oracle数据库的Bug**:几乎每个版本的Oracle数据库都可能存在导致系统Hang住的Bug,尤其是在RAC环境下更为常见。 4. **其他原因**:如RAC环境中的节点加入或退出过程中的资源重新配置问题等也可能导致系统Hang...
* 使用 Oracle 的 Diagnostic Pack tools,例如, Hang Analyzer 和 Blocked Sessions diagnostic tools * 查看系统错误日志,查找与 gc block 相关的错误信息 * 使用 SQL 语句,查看当前实例上的数据块状态 二、私...
数据库出现hang住的情况,也即数据库停止响应,处理方式通常包括重启数据库、分析alert日志、通过hanganalyze分析和systemstatedump获取信息等方法。对于数据误删除的情况,如果没有配置相应的闪回机制,可能需要从...
Oracle数据库的日常运维及应急故障处理是数据库管理员(DBA)的重要职责,它涵盖了数据库的健康监控、性能优化、故障诊断和处理等多个方面。本手册旨在为Oracle DBA提供一个全面的参考指南,帮助他们快速有效地应对...
Oracle数据库作为一款成熟的关系型数据库管理系统,拥有强大的事务处理能力及稳定性,广泛应用于金融、电信、航空等关键业务领域。然而,任何复杂的系统都可能在运行中出现各种问题,导致系统性能下降甚至宕机。...
### Oracle 11gR2 RAC 在 Linux 上的安装指南 #### 一、引言与新特性概述 本文档提供了 Oracle 11gR2 RAC 在 Linux 环境下的安装指导,旨在帮助数据库管理员顺利安装配置该版本的 RAC 系统。文档详细介绍了 11gR2 ...
1. 故障排查:通过日志分析、性能监控工具,识别并解决各种数据库错误,如hang、crash、锁等待等问题。 2. 性能瓶颈定位:分析CPU、内存、I/O等资源的使用情况,找出性能瓶颈,并提出改进方案。 3. 数据恢复实践:...
- 数据库诊断:使用 DBA 工具如 tkprof、awr 报告和 hang 分析器进行问题排查。 - 故障恢复:RMAN(Recovery Manager)的使用,以及闪回技术和数据泵导出导入。 8. **安全性**: - 审计:跟踪数据库活动,确保...
此Bug的症状包括死锁、挂起的进程(hang/process hang)以及等待“librarycache:mutexX”事件。当出现死锁时,可能包含的堆栈信息是kglobr_callback和Literal Replacement(CURSOR_SHARING)。当cursor_sharing设置...
3. **OPS或RAC中的多个实例或所有实例Hang住**:在这种极端情况下,即使使用OPS(Oracle Parallel Server)或RAC(Real Application Clusters)也无法提供高可用性,所有依赖该数据库的应用系统都将停止服务,重启...
### Oracle常用dump命令详解 #### 一、Memory Dumps **Memory Dumps** 主要用于获取Oracle内存区域的详细信息,这些信息对于诊断系统性能问题非常有用。下面将详细介绍几个常用的Memory Dump命令。 ##### 1\. ...
BBED(Oracle Block Browerand EDitor Tool),用来直接查看和修改数据文件数据的一个工具,是Oracle一款内部工具,可以直接修改Oracle数据文件块的内容,在一些极端恢复场景下比较有用。该工具不受Oracle支持。
oracle系统状态trace文件分析器 当系统hang住时,或者进程间有阻塞时,你可以产生下面两种跟踪文件,一种是进程状态跟踪文件,一种是系统状态跟踪文件: process state dumps ==> 一个进程的所有对象状态,...
综上所述,hanganalyze作为Oracle数据库的一项强大工具,其在hang分析领域的应用价值不可小觑。无论是初学者还是经验丰富的DBA,掌握hanganalyze的使用方法及其提供的多层级诊断信息,都将显著提升数据库运维效率,...
当主机运行时间达198天或248天(24.8天的整数倍),cpu占用率就突然达到100%。此时操作系统命令可以执行,但Oracle的命令象lsnrctl、sqlplus、dbca等都会被hang住,不能执行。 对该bug单独打临时patch 4612267。