问题背景:

        Oracle数据库日志出现大量的WARNING: ASM communication error: op 0 state 0x0 (15055)错误

Oracle-ASM实例communication error问题处理-LMLPHP

问题分析:

        首先检查ASM实例的状态,尝试通过sqlplus / as sysasm连接asm实例,出现Connected to an idle instance连接asm实例失败

        检查ASM实例的后台日志在出现WARNING: ASM communication错误之后,日志没有再写入,asm实例看起来是出现了异常

        按照之前遇到过的处理经验Oracle-ASM communication error问题处理,检查sqlnet.ora的配置以及grid用户的属主权限,都没有发现异常的配置

        使用strace对sqlplus / as sysasm的登陆过程进行跟踪    

strace -f -F -o /tmp/asm_straceout.txt sqlplus / as sysasm

        因为asm实例默认用的是AMM自动内存管理,会使用到共享内存挂载目录/dev/shm

Oracle-ASM实例communication error问题处理-LMLPHP

         在目录下生成ora_+ASM1_xxxx_o文件

Oracle-ASM实例communication error问题处理-LMLPHP

        检查挂载目录/dev/shm下的文件,发现目录下的文件都被清理了,目录文件为0

Oracle-ASM实例communication error问题处理-LMLPHP

        问题原因到这里已经被发现,asm实例在共享内存挂载目录/dev/shm下的文件ora_+ASM1_xxxx_o被清理导致的异常

问题解决:

         对于/dev/shm下的文件被清理这种情况,只能通过重启节点的集群让asm实例重新生成ora_+ASM1_xxxx_o文件恢复。

    

10-09 16:04