oracle数据库全局性HANG的处理过程

如果数据库全局性HANG,首先要做的是收集数据库HANG时的状态,只有收集到了相应状态,抓住故障现场,才可以进一步分析故障产生的可能原因。

如果数据库是单节点,使用sqlplus连接数据库后执行如下命令:

SQL> oradebug hanganalyze 3
Hang Analysis in /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_7700.trc

等待一分钟左右,观察进程状态是否有变化,再次执行上面命令。

然后开启另一会话,DUMP系统状态

[oracle@localhost ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Thu Jan 17 21:25:32 2019

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> oradebug setmypid 
Statement processed.
SQL> oradebug unlimit
Statement processed.
SQL> oradebug dump systemstate 266
Statement processed.
SQL> oradebug dump systemstate 266
Statement processed.

如果数据库是RAC系统,则执行下面命令

SQL> oradebug setmypid
SQL> oradebug unlimit
SQL> oradebug -g all hanganalyze 3
wait for 30 seconds
SQL> oradebug -g all hanganalyze 3
SQL> exit

开启另一会话,DUMP系统状态

SQL> oradebug setmypid
SQL> oradebug unlimit
SQL> oradebug -g all dump systemstate 10
wait for 30 seconds
SQL> oradebug -g all dump systemstate 10
SQL> oradebug tracefile_name
SQL> exit

Oracle HANG后可能会导致sqlplus无法连接至数据库,从而无法获得oracle系统和进程的状态,这会使定位问题时缺少强有力的依据。

在oracle 10g的sqlplus中增加了-prelim选项,当数据库HANG时使用该选项依然能够连接至数据库中,从而能获得数据库的状态。使用方法

sqlplus -prelim "/ as sysdba"

使用prelim模式连接至数据库后,不可以查询数据字典,但可以关闭数据库。

当oracle系统HANG住,无法使用一切方法登录时(包括sqlplus -prelim / as sysdba),可以使用gdb调试工具来对oracle做系统DUMP,然后就可通过系统的DUMP信息来判断HANG的具体原因了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄宝康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值