百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

详解工作中常见的4个导致 RAC 实例崩溃的问题

mhr18 2024-10-08 04:23 19 浏览 0 评论

概述

今天分享下RAC实例崩溃的4个常见bug,下面版本适用于oracle 版本11.2.0.1 和更高版本,主要是做一个备忘,方便以后直接找解决方式。


ORA-29770 LMHB终止实例

1、报错:

LMON (ospid:31216) waits for event 'control file sequential read' for 88 secs.
Errors in file /Oracle/base/diag/rdbms/prod/prod3/trace/prod3_lmhb_31304.trc(incident=2329):
ORA-29770: global enqueue process LMON (OSID 31216) is hung for more than 70seconds
LMHB (ospid: 31304) is terminating the instance.
或
LMON (ospid: 8594) waits for event 'control file sequential read' for 118 secs.
ERROR: LMON is not healthy and has no heartbeat.
ERROR: LMHB (ospid: 8614) is terminating the instance.

2、思路:

LMON 等待读取控制文件,导致LMHB 使实例崩溃

3、解决方案:

Bug 8888434 已在 11.2.0.2 及以上版本 中得到修正

Bug 11890804 已在 11.2.0.3及以上版本中得到修正


ORA-481导致的实例崩溃

1、报错:

1. PMON (ospid:12585): terminating the instance due to error 481

LMON 进程跟踪文件显示:

Begin DRM(107) (swin 0)
* drm quiesce <kjxgmrcfg: Reconfiguration started, type 6 

LMS<x> 进程跟踪文件显示:

2011-07-05 10:53:44.218905 : Start affinity expansion for pkey 81885.0
2011-07-05 10:53:44.498923 : Expand failed: pkey 81885.0, 229 shadowstraversed, 153 replayed 1 retries

2. PMON (ospid: 4915562): terminating the instance due to error 481

Sat Oct 01 19:21:37 2011

System state dump requested by (instance=2, osid=4915562 (PMON)),summary=[abnormal instance termination].

2、思路:

lmon进程是rac中一个非常关键的进程,主要负责集群之间的健康检查,提供gcs服务,其中当lmon出现异常时,会触发oracle级别的io fencing。

LMON主要借助两种心跳机制来完成健康检查:

1) 节点间的网络心跳(NetworkHeartbeat):可以向节点定时的发送ping包检测节点状态,如果能在规定时间内收到回应,就认为对方状态正常

2) 通过控制文件的磁盘心跳(ControlfileHeartbeat):每个节点的CKPT进程每隔3秒更新一次控制文件一个数据块,这个数据块叫做CheckpointProgress Record,控制文件是共享的,所以实例间可以相互检查对方是否及时更新来判断。

3、解决方案:

1. Bug 11875294 已在 11.2.0.3 中得到修正,绕过问题的方法是:

通过设置_gc_read_mostly_locking=FALSE 来禁用read mostly。

2. 修正 HAIP 问题,

11g的DRM引入了read mostly locking的机制,它会基于对象的global operation历史。

ps:

read mostly locking机制,能减少读访问的消息传递和CPU消耗,但是写访问就会比传统的cache fusion locking机制消耗更多的IO。

oracle的cache层记录着每个对象上的S lock和X lock的数量,如果某个节点打开了大量的S lock并且很少了的X lock,并且block传输的比较少,那么这个对象在这个节点上就是read mostly了。当read mostly发生的时候,对象的共享就停止了,并且block不再通过interconnect进行传输(除非block被修改)。

当一个对象被定义成read mostly,他会被master node授予在所有节点上的S affinity lock,这意味着所有的节点都被“提前”授予了该block的读访问权限,因此,减少了在各个节点间互相传递S lock的消息量。

总而言之,clsuster将会在节点数多,且X lock请求少的情况,因为read-mostly特性而收益。但是当X lock请求增加的事情,性能会急剧的降低。从另一方面说,如果你的节点数比较少,那么或许你从read mostly特性那里得不到很多好处。

而由于read mostly会消耗比较多的IO,这个时候你就要估计你一下你的IO情况了,如果你的块和消息传递的收益小于IO负载变重的情况,或者你已经处于IO压力很大的情况下,不建议开启read mostly的特性了,你可以禁用read mostly的特性。设置方式是:_gc_read_mostly_locking=FALSE


ORA-600[kjbmprlst:shadow]、ORA-600[kjbrref:pkey]、ORA-600[kjbmocvt:rid]、[kjbclose_remaster:!drm]、ORA-600 [kjbrasr:pkey] 导致的实例崩溃

1、报错:

由于 ORA-600[kjbmprlst:shadow]、ORA-600[kjbrref:pkey]、ORA-600[kjbmocvt:rid]、[kjbclose_remaster:!drm]或 ORA-600 [kjbrasr:pkey] 导致 RAC 实例崩溃

2、思路:

这一组 ORA-600 与 DRM(dynamic resourceremastering)消息或 read mostly 锁有关。涉及多个 bug,包括:

Document 9458781.8 Missing close message tomaster leaves closed lock dangling crashing the instance with assorted Internalerror 
Document 9835264.8 ORA-600 [kjbrasr:pkey] /ORA-600 [kjbmocvt:rid] in RAC with dynamic remastering
Document 10200390.8 ORA-600[kjbclose_remaster:!drm]in RAC with fix for 9979039
Document 10121589.8 ORA-600[kjbmprlst:shadow] can occur in RAC
Document 11785390.8 Stack corruption /incorrect behaviour possible in RAC
Document 12408350.8 ORA-600 [kjbrasr:pkey]in RAC with read mostly locking
Document 12834027.8 ORA-600[kjbmprlst:shadow] / ORA-600 [kjbrasr:pkey] with RAC read mostly locking

3、解决方案:

上述大部分 bug 都在 11.2.0.3 中得到了修正,安装 11.2.0.3 补丁集应该可以避免这些 bug,除了 Bug 12834027,此 bug 将在 12.1 中进行修正。绕过这个 bug 的方法是:

禁用 DRM或禁用read mostly

例如:设置 "_gc_read_mostly_locking"=FALSE

在11g中,同样可以使用如下方式禁用DRM,强烈建议关闭:

alter system set "_gc_policy_time"=0 scope=spfile;

然后同时重启所有实例生效。如果不想完全禁用DRM,但是需要禁用read-mostly locking或者reader bypass的机制。可以使用如下命令:

--disable read-mostly locking

alter system set "_gc_read_mostly_locking"=false scope=spfile sid='*';

--disable reader-bypass

alter system set "_gc_bypass_readers"=false scope=spfile sid='*';

Oracle给出的Oracle11g下的调整:

alter system set "_gc_policy_time"=0 scope=spfile sid='*';

alter system set "_gc_undo_affinity"=false scope=spfile sid='*';


启用flash cache后产生kcldle/kclfplz/kcbbxsv_l2/kclfprm,导致实例崩溃

1、报错:

警报日志中报告了 ORA-7445[kcldle]

ORA-7445[kclfplz]

ORA-7445[kcbbxsv_12]

ORA-744[kclfprm]

2、思路:

它们是由不同的 bug 引起的,而这些bug都归结为 基础bug Bug 12337941 Dumps on kcldle / kclfplz /kcbbxsv_l2 / kclfprm using flash

3、解决方案:

此 bug 已在 11.2.0.3 中得到修正,可以选择安装补丁集或使用以下方法绕过这个问题:

禁用 Flash Cache

这个功能其实是EXADATA引入的,这也是EXADATA提高IO性能的又一利器。不过即使不是EXADATA,在11.2中也可以设置该功能,且这个功能的设置并不复杂。

11.2中提供了两个参数来设置FLASH CACHE:其中DB_FLASH_CACHE_SIZE用来设置FLASH CACHE的大小,而DB_FLASH_CACHE_FILE设置文件的位置。

在操作系统上将FLASHCACHE挂成裸设备,然后添加到单独的ASM磁盘组中或直接挂载到操作系统上,然后通过DB_FLASH_CACHE_FILE指定ASM或操作系统目录下的文件既可。

需要注意的是,DB_FLASH_CACHE_FILE不像其他参数一样,对于ASM只需要指定磁盘组的名称既可,而必须通过手工的方式在ASM磁盘组上建立对应的目录,在设置参数的过程中,目录并不会自动创建,不过指定的文件名并不需要存在,Oracle会根据DB_FLASH_CACHE_SIZE的大小自动创建文件。

SQL> alter system setdb_flash_cache_size = 30g scope = spfile;
System altered.
SQL> alter system setdb_flash_cache_file = '+REDO/flash/odademo1.flash' scope = spfile sid ='odaenmo1';
System altered.
SQL> alter system setdb_flash_cache_file = '+REDO/flash/odademo2.flash' scope = spfile sid ='odaenmo2';
System altered.

需要注意,对于RAC而言,各个节点使用独立的FLASH CACHE文件,因此需要单独设置。


如果是用oracle11g的话还是比较建议大家用11.2.0.4版本,相对比较少bug,比较稳定。后面会分享更多关于DBA方面的内容,感兴趣的朋友可以关注下!!

相关推荐

甲骨文签署多项大型云协议,其一未来可贡献超300亿美元年收入

IT之家7月1日消息,根据甲骨文Oracle当地时间6月30日向美国证券交易委员会(SEC)递交的FORM8-K文件,该企业在始于2025年6月1日的202...

甲骨文获TEMU巨额合同,后者大部分基础设施将迁移至Oracle云

IT之家6月23日消息,Oracle甲骨文创始人、董事长兼首席技术官LarryEllison(拉里埃里森)在本月早些时候的2025财年第四财季和全财年财报电话会议上表示,Oracle...

Spring Boot 自定义数据源设置,这些坑你踩过吗?

你在使用SpringBoot进行后端开发的过程中,是不是也遇到过这样的问题:项目上线后,数据库连接总是不稳定,偶尔还会出现数据读取缓慢的情况,严重影响了用户体验。经过排查,发现很大一部分原因竟然...

一个开箱即用的代码生成器(一个开箱即用的代码生成器是什么)

今天给大家推荐一个好用的代码生成器,名为renren-generator,该项目附带前端页面,可以很方便的选择我们所需要生成代码的表。首先我们通过git工具克隆下来代码(地址见文末),导入idea。...

低代码建模平台-数据挖掘平台(低代码平台的实现方式)

现在来看一下数据连接。·这里是管理数据连接的空间,点击这里可以新增一个数据连接。·输入连接名称,然后输入url,是通过gdbc的方式去连接的数据库,目前是支持mysql、oracle以及国产数据库达梦...

navicat 17.2.7连接oracle数据库提示加载oracle库失败

系统:macOS15.5navicat版本:navicatpremiumlite17.2.7连接oracle测试报错:加载oracle库失败【解决办法】:放达里面找到程序,显示简介里面勾选“使...

开源“Windows”ReactOS更新:支持全屏应用

IT之家6月17日消息,ReactOS团队昨日(6月16日)在X平台发布系列推文,公布了该系统的最新进展,包括升级Explorer组件,支持全屏应用,从Wine项目引入了...

SSL 推出采用全模拟内置混音技术的模拟调音台Oracle

英国调音台传奇品牌SolidStateLogic宣布推出Oracle——一款采用全模拟内置混音技术的调音台,在紧凑的AWS尺寸机箱内集成了大型调音台的功能。该调音台提供24输入和...

47道网络工程师常见面试题,看看有没有你不会的!

你们好,我的网工朋友。网络工程师面试的时候,都会被问到什么?这个问题其实很泛,一般来说,你肯定要先看明白岗位需求写的是什么。基本上都是围绕公司需要的业务去问的。但不可否认的是,那些最基础的概念,多少也...

汉得信息:发布EBS系统安装启用JWS的高效解决方案

e公司讯,从汉得信息获悉,近日,微软官方宣布InternetExplorer桌面应用程序将于2022年6月15日正式停用。目前大部分客户都是使用IE浏览器打开EBS的Form界面,IE停用后,只能使...

36.9K star ! 推荐一个酷炫低代码开发平台!功能太强!

前言最近在逛github,看看能不能搜罗到一些对自己有帮助的开源软件。不经意间看到一个高star的java开源项目:jeecg-boot。进入在线演示版一看,感叹实在是太牛了!此开源项目不管是给来学习...

Linux新手入门系列:Linux下jdk安装配置

本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...

手把手教你在嵌入式设备中使用SQLite3

摘要:数据库是用来存储和管理数据的专用软件,使得管理数据更加安全,方便和高效。数据库对数据的管理的基本单位是表(table),在嵌入式linux中有时候它也需要用到数据库,听起来好难,其实就是几个函数...

JAVA语言基础(java语言基础知识)

一、计算机的基本概念什么是计算机?计算机(Computer)全称:电子计算机,俗称电脑。是一种能够按照程序运行、自动高速处理海量数据的现代化智能电子设备。由硬件和软件组成、没有安装过任何软件的计算机称...

再见 Navicat!一款开源的 Web 数据库管理工具!

大家好,我是Java陈序员。在日常的开发工作中,常常需要与各种数据库打交道。而为了提高工作效率,常常会使用一些可视化工具进行操作数据库。今天,给大家介绍一款开源的数据库管理工具,无需下载安装软件,基...

取消回复欢迎 发表评论: