1.故障现象描述

**环境:**AIX 7.1 + Standalone Oracle 11.2.0.4
**现象:**客户反映某11g版本的ADG备库无法正常进行任何查询,数据库alert发现ORA-00494:enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 18875390'.

2.确认故障现象

登录到db实例,尝试查询select open_mode from v$database都会hang住。使用10046 event跟踪,发现最后的等待事件也是卡在'Disk file operations I/O'不再刷新。
该环境是standalone的单实例ASM环境,既然卡在I/O,自然就要去判断ASM是否正常。

3.排查ASM层面

发现ASM实例确实存在阻塞:

--cascade blocking
select *
from (select a.sid,
a.sql_id,
a.event,
a.status,
connect_by_isleaf as isleaf,
sys_connect_by_path(SID, '<-') tree,
level as tree_level
from v$session a
start with a.blocking_session is not null
connect by nocycle a.sid = prior a.blocking_session)
where isleaf = 1
order by tree_level asc;

其中417是rbal进程,等待事件是CSS operation:action。

4.解决问题

首先查找MOS时匹配到下面的文档:
ASM Instance Hangs During The Diskgroup Mount Stage After AIX OS Patch Install (文档 ID 1633273.1)

根据该文档中的描述收集hanganalyze/systemstate dumps:

Collected hanganalyze/systemstate dumps:

For Standalone:
$> sqlplus /nolog
SQL> connect / as sysasm
SQL> oradebug setmypid
SQL> oradebug unlimit
REM : The next line should give something like Hang Analysis in $ORACLE_BASE/diag/.../trace/$ORACLE_SID_diag_<pid>.trc. Upload this
REM : Run the following two lines on one instance 2-3 times - 1 minute apart:
SQL> oradebug hanganalyze 3
SQL> oradebug dump systemstate 258
REM : The following line will print the location for the systemstate trace. Upload this
SQL> oradebug tracefile_name
REM : Also upload the instance alert log.

根据收集到的trc文件和MOS描述的故障现象进行匹配,无论是ssd的等待事件历史,还是hanganalyze中显示的函数调用名称和顺序,结果都与MOS的描述一致。但是MOS描述的现象还明确提出是在安装了一个OS的patch后才出现的故障:

SYMPTOMS

non-clustered -- 11203 -- AIX 7.1

ASM instance hangs and will not mount diskgroups, after AIX OS patch was installed (AIX 7.1TL03-01-1341).

This is a platform specifc issue.

那么就需要与客户沟通确认OS是否安装了这个AIX 7.1TL03-01-1341 patch,最终结果意料之中,客户确认了OS的确安装过该补丁。

那么MOS其实没有workaround,只给出最终的解决方案:

SOLUTION

Deinstall the OS patch and report the issue to the OS vendor.

Oracle does not certify OS patches against its software.

意思很明显,就是需要卸载该OS补丁并把该问题提交给OS vendor,Oracle不能保证OS的补丁不与自己软件冲突。到了这里,就可以告知客户将该问题push给OS vendor了。

可是目前还是要先暂时解决当前的问题,现在既然确认是ASM实例阻塞,自然就想到只需要将阻塞进程杀死或者干脆重启ASM实例甚至has集群即可暂时解决。

但实际上事违人愿,我在尝试杀死这个rbal进程时,发现即使使用kill -9也无济于事。并且即使将ASM实例成功abort后,这个rbal进程依然在,进一步尝试直接强制关闭crsctl stop has -f集群也无法成功。看来目前的环境已经完全表现异常,最终还是重启了主机才恢复正常。

记录一则ASM实例阻塞,rbal进程异常的案例的更多相关文章

  1. oracle无法启动asm实例记录

    首先查看asm进程ps aux|grep asmasm进程没起进行下面操作su - gridsrvctl start asmexit查看ora进程ps aux|grep oraora进程没起进行下面操 ...

  2. 创建ASM实例及ASM数据库

    --======================== -- 创建ASM实例及ASM数据库 --======================== 一.ASM相关概念 1.什么是ASM(Auto Stor ...

  3. 创建ASM实例及ASM数据库(转载)

    --======================== -- 创建ASM实例及ASM数据库 --======================== 一.ASM相关概念 1.什么是ASM(Auto Stor ...

  4. 使用裸设备配置Oracle ASM实例一例

    1.查看当前磁盘 [root@std u01]# fdisk -l Disk /dev/sda: bytes heads, sectors/track, cylinders Units = cylin ...

  5. UNIX环境高级编程——单实例的守护进程

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <signal.h&g ...

  6. [Android实例] Activity实例StartActivity出现NullPointer异常

    [Android实例] Activity实例StartActivity出现NullPointer异常 [android实例教程] 在Android低版本(如2.3.3)中出现如下“界面跳转”的错误: ...

  7. Python进阶----进程间数据隔离, join阻塞等待, 进程属性, 僵尸进程和孤儿进程, 守护进程

    Python进阶----进程间数据隔离, join阻塞等待, 进程属性, 僵尸进程和孤儿进程, 守护进程 一丶获取进程以及父进程的pid 含义:    进程在内存中开启多个,操作系统如何区分这些进程, ...

  8. (转)设置了RemoveIPC=yes 的RHEL7.2 会crash掉Oracle asm 实例和Oracle database实例

    设置了RemoveIPC=yes 的RHEL7.2  会crash掉Oracle asm 实例和Oracle database实例,该问题也会在使用Shared Memory Segment (SHM ...

  9. oracle数据库启动报错,不能启动ASM实例

    数据库rac启动时报错,日志例如以下,后来使用 Sat Jun  7 06:02:11 2014 GATHER_STATS_JOB encountered errors.  Check the tra ...

随机推荐

  1. R语言︱贝叶斯网络语言实现及与朴素贝叶斯区别(笔记)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 一.贝叶斯网络与朴素贝叶斯的区别 朴素贝叶斯的 ...

  2. 错误代码: 1111 Invalid use of group function

    1.错误描述 1 queries executed, 0 success, 1 errors, 0 warnings 查询:update t_user_info t inner join t_pro_ ...

  3. Hibernate中的条件查询完成类

    Hibernate中的条件查询有以下三个类完成: 1.Criteria:代表一次查询 2.Criterion:代表一个查询条件 3.Restrictions:产生查询条件的工具类

  4. Java并发系列[7]----CountDownLatch源码分析

    CountDownLatch(闭锁)是一个很有用的工具类,利用它我们可以拦截一个或多个线程使其在某个条件成熟后再执行.它的内部提供了一个计数器,在构造闭锁时必须指定计数器的初始值,且计数器的初始值必须 ...

  5. 通过回调函数的理解来进一步理解ajax及其注意的用法

    一,再一次理解回调函数 (function($){ $.fn.shadow = function(opts){ //定义的默认的参数 var defaults = { copies: 5, opaci ...

  6. JNDI在server.xml中的配置(全局和局部的)

    总结: 全局就是在数据源server.xml中配置,然后通过和项目名相同的xml来进行映射.对所有的项目都起作用.那个项目需要就在对应的tomcat下配置一个与项目名相同的xml映射文件. 局部的就是 ...

  7. 【Luogu3121】审查(AC自动机)

    题面 Description 农夫约翰为他的奶牛们购买了一份名字叫Good Hooveskeeping的定期杂志,因此奶牛们在挤奶期间就有了大量的阅读素材.遗憾的是在最新的一期上,有一篇有点儿不适当的 ...

  8. Bzoj1176:Mokia&Cogs1752:[BOI2007]摩基亚Mokia

    题目 Cogs 没有Bzoj的权限号 Sol 离线,\(CDQ\)分治,把询问拆成\(4\)个,变成每次求二位前缀和 那么只要一个修改操作(关键字为时间,\(x\),\(y\))都在这个询问前,就可以 ...

  9. 弹框modal, 获取id与绑定id

    var span2 = '<span class="replaceBlue cursor" data-target="#myModalMember" da ...

  10. Delphi关于TAdvStringGrid控件颜色的设置

    FixedFont-Color 标题行和列字体的颜色 Font-color 单元格字体的颜色Visual-color 整个表格的背景色填充