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. linux之hdparm命令说明及其测试硬盘读写速度

    hdparm -t /dev/sda1功能说明:显示与设定硬盘的参数. 语 法:hdparm [-CfghiIqtTvyYZ] [-a <快取分区>][-A <0或1>][-c ...

  2. vxWorks内核实现基本原理

    内核实现基本原理     VxWorks 内核维护三个队列:tick队列.ready 队列.active 队列.另外还有一个队列涉及任务,即任务等待资源时所处的队列,这个队列可以是VxWorks内核提 ...

  3. Struts2实现文件上传(三)

    Struts2实现文件上传 配置文件web.xml <?xml version="1.0" encoding="UTF-8"?> <web-a ...

  4. 【原】Java学习笔记026 - 集合

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 需求:从三国演义中 ...

  5. stun/turn/ice学习笔记

    stun基本只是用于client探测NAT之后靠近stun server的外网地址,本身不包含应用数据通信的功能,其底层STUN协议通信多是基于UDP的.多个端点之间相互通过信令通道拿到彼此的NAT外 ...

  6. httppost的用法(NameValuePair(简单名称值对节点类型)核心对象)

    一,案例一 定义了一个list,该list的数据类型是NameValuePair(简单名称值对节点类型),这个代码多处用于Java像url发送Post请求.在发送post请求时用该list来存放参数. ...

  7. VmWareTool安装

  8. 【BZOJ4916】神犇和蒟蒻(杜教筛)

    [BZOJ4916]神犇和蒟蒻(杜教筛) 题面 BZOJ 求 \[\sum_{i=1}^n\mu(i^2)\ \ 和\ \sum_{i=1}^n\phi(i^2)\] 其中\[n<=10^9\] ...

  9. 【BZOJ3670】动物园(KMP算法)

    [BZOJ3670]动物园(KMP算法) 题面 BZOJ 题解 神TM阅读理解题 看完题目之后 想暴力: 搞个倍增数组来跳\(next\) 每次暴跳\(next\) 复杂度\(O(Tnlogn)\) ...

  10. 【BZOJ1412】狼和羊的故事(网络流)

    [BZOJ1412]狼和羊的故事(网络流) 题面 Description "狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......" Orez听 ...