ITPub博客

首页 > 数据库 > Oracle > rac环境中数据文件权限不对导致的ORA-600和数据库hang

rac环境中数据文件权限不对导致的ORA-600和数据库hang

原创 Oracle 作者:xueshancheng 时间:2021-08-15 16:39:14 0 删除 编辑

一 故障描述

1  2014-6-16 10:45查询数据库集群资源状态,正常。

2  2014-6-16 10:47查询陕西电力数据中心节点1的实例状态,select instance_name,status from v$instance; 等待2分钟没有结果,故判断实例1已经hang机。

3 2014-6-16 10:50查询陕西电力数据中心节点2的实例状态,select instance_name,status from v$instance; 立即出现结果,故认为此时实例2还是正常的。

4 2014-6-16 10:51 查询数据库后台日志,发现节点1后台日志报如下错误:

 

节点 2 后台日志报错信息如下:

 

 

5 对数据库做hang分析,通过hang分析,将引起数据库锁的会话和操作系统进程找出来,然后KILL掉,解决数据库hang问题。

 

 

     hang分析文件中对应的进程KILL掉,然后再次查询实例状态,select instance_name,status from v$instance; 发现还是不能查询,此操作进行了3次,还是不能查询实例的状态。

 

6 针对此种情况,故认为问题比较严重,准备关闭RAC中节点1实例,以释放资源和锁。使用shutdown immediate 关闭节点1的实例,在关闭中,数据库无任何报错,但就是无法关闭。等待25分钟左右,使用shutdown abort命令关闭数据库。

 

 

启动数据库,由于使用 shutdown abort关闭数据库,数据库在启动时需要数据恢复,而且数据库启动时未报任何错误,故等待数据库启动:

等待 45分钟后,发现数据库实例1还是没启动起来,故判定数据库启动应该是有问题的,查看数据库启动时执行什么操作:

 

查看 DFS锁的类型,发现此锁为CI( 'Cross-instance function invocation instance lock', )锁, P2=70( clear pin instance flag )。由于此锁为实例锁,必须要将 RAC中所有节点的实例关闭后,才可以将此锁解除。

 

 

关闭数据库实例 1、2,并重新启动,数据库恢复正常。

二 原因分析

1  由于在2014年6月5日添加数据文件时,未对主机节点2上的LV更改权限,引起节点2上的实例无法访问 /dev/rlvdcdat30G_7 3裸设备,导致节点2上的实例运行在不健康的状态。

   在节点 1上添加的数据文件:

  

   节点 2 上的报错信息:

 

  

   导致节点 2上的实例不健康运行:

 

     查询官网,说 ORA-600是BUG,但我不这么认为,为什么在6月10前就没报这个错误,在重启后才出现。

     后来将 LV权限更改后,重启节点2实例,ORA-600报错消失。

 

  发现从 6月10日起,每天数据库实例2都重启一次。

 

 

 

查询数据文件及对应的 LV,发现LV权限有问题。

 

 


其中 SV锁为DFS lock handle 中的 Sequence number value

CI 锁为 Cross-instance function invocation instance

LB锁为 数据行头的LB Lock Byte锁标识位) 锁标识位

LV锁为 Library cache invalidation instance

The DFS lock Handle为
The session waits for the lock handle of a global lock request. The lock handle identifies a global lock. With this lock handle, other operations can be performed on this global lock (to identify the global lock in future operations such as conversions or release). The global lock is maintained by the DLM.

原因总结:

此系统由于LV裸设备权限问题导致节点2上数据库实例运行在不正常的状态,导致ORA-600及MMON(   Memory Monitor   )进程每隔 10分钟左右死掉重启,并导致实例2每天宕机一次;而MMON进程是oracle数据库的后台进程,主要的作用之一就是内存管理。应用系统在使用的过程中肯定会申请全局资源,如SV、LV、CI等,当节点1请求节点2上实例锁或SV资源时,由于节点2数据库实例运行在不正常的状态及MMON经常死掉,导致数据库无法及时得到相应的资源及锁信息,随着时间的累计,导致整个RAC环境所有的数据库实例全部变为HANG机状态。



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69996316/viewspace-2787026/,如需转载,请注明出处,否则将追究法律责任。

上一篇: delete数据特别慢
请登录后发表评论 登录
全部评论
本人目前就职于北京海天起点技术服务有限股份公司,从事Oracle数据库有十几年了,对Oracle及goldengate比较精通。

注册时间:2021-03-11

  • 博文量
    44
  • 访问量
    12910