RAC环境:

oracle数据库:oracle11gr2

操作系统:rhel6.4_x86_64


故障现象:

  1、rac其一个节点的oracle与asm相关的进程和实例启动失败;

    查看方法:ps -ef|grep ora_

                  ps -ef|grep asm_

                  crsctl stat res -t (只能看到节点1上启动的oracle实例和asm实例)

  2、在节点2上查看不到asm磁盘设备标签;

    查看方法:oracleasm listdisks  (没有内容)

         ll /dev/oracleasm/disks/* (没有内容)

  3、在节点2上扫描asm磁盘时报以下错误;

    查看方法:oracleasm scandisks

                  Reloading disk partitions: done

                  Cleaning any stale ASM disks...

                  Scanning system for ASM disks...

                  Instantiating disk "VOL4"

                  Unable to instantiate disk "VOL4"

                  Instantiating disk "VOL1"

                  Unable to instantiate disk "VOL1"

  4、查看oracleasm日志信息提示权限问题;

    查看方法:cat /var/log/oracleasm

                  

分析过程:

  为了排除其它因素的干扰,我重启了节点2的操作系统,重启后节点2上的asm磁盘依旧不能正常加载,通过查看oracleasm日志依然提示是权限问题,大胆猜想下,可能有以下原因导致asm


磁盘不能正常加载:

  1、asm相关的rpm包安装不正常,如版本不对应;

  2、操作系统相关的安全服务导致;

  3、系统重启时rule规则配置不正确,导致asm磁盘不能正常加载;


  排除:

  1、rpm -aq|grep oracleasm 需要安装3个包(kmod-oracleasm oracleasmlib oracleasm-support)

  2、service iptables status (iptables 服务关闭)

    getenforce  (查看状态enforcing,说明selinux服务没有关闭)

  3、本实例并没有使用raw裸设备,因此没有配置rule规则在启动时加载

  

处理方法:

  由于节点2的selinux服务没有关闭,因此关闭selinux服务

  setenforce 0

    vi /etc/sysconfig/selinux

  将SELINUX=enforcing改为SELINUX=disabled,这样重启服务器则不会启动selinux服务

  关闭selinux服务后,执行asm磁盘扫描操作,正常识别asm磁盘。

    oracleasm scandisks