文章参考:主要来源于网络资源分享,并结合自己的ORACLE RAC环境近段时间OS节点自动重启问题进行分析总结
首先我们对能够导致节点重启的CRS进程进行介绍。
1.ocssd : 它的主要功能是节点监控(Node Monitoring)和组管理(Group Management),它是CRS的核心进程之一。节点监控是指监控集群中节点的健康状况,监控的方法是通过网络心跳(network heartbeat)和磁盘心跳(disk heartbeat)实现的,如果集群中的节点连续丢失磁盘心跳或网络心跳,该节点就会被从集群中驱逐,也就是节点重启。组管理导致的节点重启,我们称之为node kill escalation(只有在11gR1以及以上版本适用)。重启需要在指定的时间(reboot time,一般为3秒)内完成。
网络心跳:ocssd.bin进程每秒钟向集群中的各个节点通过私网发送网络心跳信息,以确认各个节点是否正常。如果某个节点连续丢失网络心跳达到阀值,misscount(默认为30秒,如果存在其他集群管理软件则为600秒),集群会通过表决盘进行投票,使丢失网络心跳的节点被主节点驱逐出集群,即节点重启。如果集群只包含2个节点,则会出现脑裂,结果是节点号小的节点存活下来,即使是节点号小的节点存在网络问题。
磁盘心跳:ocssd.bin进程每秒钟都会向所有表决盘(Voting File)注册本节点的状态信息,这个过程叫做磁盘心跳。如果某个节点连续丢失磁盘心跳达到阀值disk timeou(一般为200秒),则该节点会自动重启以保证集群的一致性。另外,CRS只要求[N/2]+1个表决盘可用即可,其中N为表决盘数量,一般为奇数。
2.oclsomon:这个进程负责监控ocssd是否挂起,如果发现ocssd.bin存在性能问题,则重启该节点。
3.oprocd:这个进程只在Linux和Unix系统,并且第三方集群管理软件未安装的情况下才会出现。如果它发现节点挂起,则重启该节点。
批注:以上所有进程都是由脚本init.cssd产生。
一般诊断节点重启问题是经常搜集的信息。
1).操作系统日志
2).<crs主目录>/log/<节点名称>/cssd/ocssd.log
3).oprocd.log(/etc/oracle/oprocd/*.log.* 或 /var/opt/oracle/oprocd/*.log.*)
4).<crs主目录>/log/<节点名称>/cssd/oclsomon/oclsomon.log
5). Oracle OSWatcher 报告
下面结合自己的RAC环境出现节点重启问题进行分析:
查询节点1的oprocd.log,如下:
查看其它的日志信息,没有发现明显的错误信息,因此怀疑是ORACLE oprocd的时间参数设置不当;
下面对oprocd参数进行设置:
当我们设置diagwait参数时,需要停止所有rac节点的集群活动,停止顺序如下(如果集群式活动的,修改diagwait有可能会损害ocr);
1.root用户执行,停止所有节点的CRS
2.停止10.2.0.3到11.1.0.6版本的RAC中才引入的OPROCD进程(OS系统安装的DB版本是10.2.0.4)
3.检查是否还有CRS相关的资源在运行
4.在任意一个节点使用ROOT用户来设置DIAGWAIT的值(按照ORACLE的推荐,一般设置为13)
查看设置结果,如下:
5.启动所有节点的CRS资源
6.验证CRS是否正常运行
7.查看oprocd进程的状态
批注:11gR2之前版本的集群,ORACLE建议将Diagwait设置为13。从本质上讲,diagwait值在RAC环境中控制着两件关键的事情:
默认情况下,集群守护进程OPROCD的超时值为1秒和0.5秒的时间差,这意味着,如果OPROCD不能在 1.5秒内返回,系统会被重启。设置diagwait为推荐值13会将OPROCD的默认超时时差增加到10秒(diagwait - CSS重启时间[默认为3秒]),从而防止大量由于OPROCD没有在定义的时间内返回而导致的'假'的节点重启。对于繁忙的系统,1.5秒的默认值太小了。长期推荐的办法是将OPROCD超时提高到一个更为合理的值11秒(1秒休眠时间+10秒时间差)。
当节点驱逐/重启事件发生时,增加diagwait,我们更可能在重新启动之前将日志信息刷新到磁盘,因此,缩短寻找问题根本原因时间。
从11g第2版(11.2.0.1和更高版本)开始,这一变化不再是必要的。然而,对于之前的版本,这个改变必须在一个完整的停机时间进行,而且这个值不能通过补丁修正。因此,必须安排停机时间手动修改。鉴于已知通过设置diagwait解决的问题的数量,申请停机时间来修改它是值得的投入。请注意,因为这个值存储在Oracle集群注册表(OCR),如果您的确需要重建OCR或从一个之前的备份恢复,您可能需要重新设置diagwai。
ORACLE RAC环境下节点自动重启问题总结
时间: 2024-10-28 21:35:47
ORACLE RAC环境下节点自动重启问题总结的相关文章
详解Oracle RAC 环境下的连接管理
这篇文章详细介绍了Oracle RAC环境下的连接管理,分别介绍了什么是 Connect Time Load Balancing.Runtime Connection Load Balancing.Connect Time Connection Failover 和 Runtime Connection Failover,以及里面所涉及到的 TAF.ONS.FCF.FAN.LBA 等诸多知识点.本文主要是针对 Oracle RAC 11gR2 环境下的连接管理,但同时也会对比说明一下 Oracl
Oracle RAC环境下配置statspack
Statspack是Oracle 9i时代的产物,对于监控与分析数据库性能有着跨里程碑的意义,是AWR的前身.在Oracle 10g后AWR取代了statspack.尽管如此,awr异常或者需要调试包license的情况下statpack依旧是不错的选择.然而在RAC环境中,statspack并不支持,需要单独的进行配置以及使用job来进行管理.本文描述的则是通过在RAC环境下创建service,以及job来达到各节点同时产生snapshot的效果. 一.演示环境 suse11a:o
Oracle RAC环境下如何更新patch(Rolling Patch)
Oracle RAC数据库环境与单实例数据库环境有很多共性,也有很多异性.对于数据库补丁的更新同样如此,都可以通过opatch来完成.但RAC环境的补丁更新有几种不同的更新方式,甚至于可以在零停机的情况下对所有节点实现滚动升级.本文主要是转述了Doc 244241.1,描述RAC环境下的patch更新方式以及在不同的情形下选择何种更新方式. 1.RAC patch的几种方式 OPatch supports 3 different patch methods on a RAC enviro
Oracle RAC 环境下的 v$log v$logfile
通常情况下,在Oracle RAC 环境中,v$视图可查询到你所连接实例的相关信息,而gv$视图则包含所有实例的信息.然而在RAC环境中,当我们查询v$log视图时说按照常理的话,v$log视图应当看到的是你所连接到实例的日志组的信息.但v$log是个例外,也就是说v$log视图里看到的不仅仅是自身实例所包含的redo日志组,其他所有剩余实例的redo日志组也同样会出现在该视图中.无论你从任意一个节点连接查询v$log视图都将获得相同的结果.该情形同样适用于v$logfile.这到底
Oracle RAC 环境下如何管理参数文件(spfile)
RAC环境下,初始化参数文件与但实例下参数文件有些异同,主要表现在初始化参数可以为多个实例公用,也可以单独设置各个实例的初始化参数.对于那些非共用的初始化参数则必须要单独设置,而共用的则可以单独设置,但一般不建议这么用.本文描述RAC 环境下参数文件(spfile)的相关管理工作. 1.参数文件的位置 SQL> show parameter instance_name NAME TYPE VALUE ---------
Oracle RAC环境下如何修改归档模式
RAC环境下的归档模式切换与单实例稍有不同,主要是共享存储所产生的差异.在这种情况下,我们可以将RAC数据库切换到非集群状态下,仅仅在一个实例上来实施归档模式切换即可完成RAC数据库的归档模式转换问题.本文主要描述了由非归档模式切换到归档模式,而由非归档切换的归档步骤相同,不再赘述. 1.主要步骤: 备份spfile,以防止参数修改失败导致数据库无法启动 修改集群参数cluster_database为false 启动单实例到mount状态 将数据库置于归档模式(alter database ar
Oracle RAC环境下的阻塞(blocking blocked)介绍和实例演示_oracle
RAC环境下的阻塞不同于单实例情形,因为我们需要考虑到位于不同实例的session.也就是说之前查询的v$session,v$lock相应的应变化为全局范围来查找.本文提供了2个查询脚本,并给出实例演示那些session为阻塞者,哪些为被阻塞者.有关阻塞的概念以及单实例环境下的阻塞请参考:Oracle 阻塞(blocking blocked) 1.演示环境 scott@DEVDB> select * from v$version where rownum<2; BANNER ---------
Oracle RAC环境单独节点插入数据也会导致全局等待(下)
在RAC环境中,登陆到一个实例,在处理的数据完全与另外实例内存中数据无关的情况下,也会导致gc全局等待产生. 这一篇描述性能影响. 上一篇文章描述gc等待产生的现象,这篇文章验证一下产生的全局等待是否会对性能产生不利影响: SQL> truncate table t; 表被截断. SQL> set timing on SQL> insert into t 2 select * 3 from t_big; 已创建6430135行. 已用时间: 00: 01: 05.05 SQL>
Oracle RAC环境单独节点插入数据也会导致全局等待(上)
在RAC环境中,登陆到一个实例,在处理的数据完全与另外实例内存中数据无关的情况下,也会导致gc全局等待产生. 这一篇描述现象. 环境如下: SQL> conn yangtk/yangtk 已连接. SQL> select * from v$version; BANNER ---------------------------------------------------------------- Oracle Database10gEnterpriseEdition Release10.2.