张大朋(Lunar)Oracle 资深技术专家

Lunar 拥有超过十年的 ORACLE SUPPORT 从业经验,曾经服务于ORACLE ACS部门,现就职于 ORACLE Sales Consultant 部门,负责的产品主要是 Exadata,Golden Gate,Database 等。

从11.2 GI(Grid Infrastructure)开始,Oracle RAC的结构跟10.2有翻天覆地的变化,深入了解集群的初始化过程,有助于我们理解RAC的工作原理,本文为大家阐释RAC集群的引导过程。

在MOS的经典文档“11gR2 Clusterware and Grid Home – What You Need to Know (Doc ID 1053147.1)”中有一副经典大图,可以一目了然的告诉我们RAC集群中大量 d.bin 进程之间的依赖关系(也就是启动和关闭,谁启动重启谁等等)(点击文末原文链接,直达大图):

从CRS的启动过程,我们也可以清晰的看到进程的启动顺序。

下面是一个11.2.0.3环境的CRS启动过程:[root@dm01db01 ~]# ps -ef|grep d.bin

root      4296     1  4 20:37 ?        00:00:00/u01/app/11.2.0.3/grid/bin/ohasd.bin reboot

grid      4338     1  1 20:37 ?        00:00:00/u01/app/11.2.0.3/grid/bin/oraagent.bin

root      4342     1  2 20:37 ?        00:00:00/u01/app/11.2.0.3/grid/bin/orarootagent.bin

root      4348     1  1 20:37 ?        00:00:00/u01/app/11.2.0.3/grid/bin/cssdagent

root      4370     1  0 20:37 ?        00:00:00/u01/app/11.2.0.3/grid/bin/cssdmonitor

root      4428  3507  0 20:37 pts/200:00:00grep d.bin

最先启动的是:/u01/app/11.2.0.3/grid/bin/ohasd.bin

这个进程后面跟着reboot,表示它被kill后会被自动reboot。

/etc/init.d/init.ohasd 进程就是重启 /u01/app/11.2.0.3/grid/bin/ohasd.bin 进程的守护进程。他们都来源于$GRID_HOME/crs/init/init.ohasd ,会自动启动这个进程,并在/var/log/message中记录下这个过程。

/u01/app/11.2.0.3/grid/bin/ohasd.bin被kill 后,系统会有几分钟的重启服务的时间,/var/log/message中记录下这个启动过程(以下是11.2.0.4的示范信息):Jan 11 20:36:18 lunarlib clsecho:/etc/init.d/init.ohasd:

ohasd is restarting 1/10.

Jan 11 20:36:18 lunarlib logger:exec /u01/app/11.2.0.4/grid/perl/bin/perl

-I/u01/app/11.2.0.4/grid/perl/lib /u01/app/11.2.0.4/grid/bin/crswrapexece.pl

/u01/app/11.2.0.4/grid/crs/install/s_crsconfig_lunarlib_env.txt

/u01/app/11.2.0.4/grid/bin/ohasd.bin"restart"

这个重启的过程在空闲系统大概需要不到2分钟,$GRID_HOME/`hostname -s`/alert`hostname -s`.log中会ohasd.bin被kill和重启后执行检查(check)和恢复(recovery)各种资源的日志如下:2016-01-11 20:36:18.500:

[/u01/app/11.2.0.4/grid/bin/cssdagent(16784)]

CRS-5822:Agent'/u01/app/11.2.0.4/grid/bin/cssdagent_grid'

disconnected from server. Details at (:CRSAGF00117:) {0:5:31}

in /u01/app/11.2.0.4/grid/log/lunarlib/agent/ohasd/oracssdagent_grid/

oracssdagent_grid.log.

2016-01-11 20:36:18.504:

[/u01/app/11.2.0.4/grid/bin/oraagent.bin(16852)]

CRS-5822:Agent'/u01/app/11.2.0.4/grid/bin/oraagent_grid'

disconnected from server. Details at (:CRSAGF00117:) {0:7:7}

inoraagent_grid.log.

2016-01-11 20:36:18.789:

[ohasd(17048)]CRS-2112:The OLR service started on node lunarlib.

2016-01-11 20:36:18.796:

[ohasd(17048)]CRS-1301:Oracle High Availability Service started

on node lunarlib.

2016-01-11 20:36:49.574:

[/u01/app/11.2.0.4/grid/bin/oraagent.bin(17083)]

CRS-5818:Abortedcommand 'check' for resource'ora.CRSDG.dg'.

Details at (:CRSAGF00113:) {0:0:2}in oraagent_grid.log.

2016-01-11 20:36:49.583:

[/u01/app/11.2.0.4/grid/bin/oraagent.bin(17083)]

CRS-5818:Abortedcommand 'check' for resource'ora.DATADG1.dg'.

Details at (:CRSAGF00113:) {0:0:2}in oraagent_grid.log.

2016-01-11 20:36:49.594:

[/u01/app/11.2.0.4/grid/bin/oraagent.bin(17083)]

CRS-5818:Abortedcommand 'check' for resource'ora.DATADG2.dg'.

Details at (:CRSAGF00113:) {0:0:2}in oraagent_grid.log.

2016-01-11 20:36:51.608:

[/u01/app/11.2.0.4/grid/bin/oraagent.bin(17083)]

CRS-5818:Abortedcommand 'check' for resource'ora.asm'.

Details at (:CRSAGF00113:) {0:0:2}in oraagent_grid.log.

2016-01-11 20:37:52.943:

[ohasd(17048)]CRS-2767:Resource state recovery not attempted

for 'ora.diskmon' as its target state is OFFLINE

2016-01-11 20:37:52.943:

[ohasd(17048)]CRS-2769:Unable to failover resource'ora.diskmon'.

好了,继续回到我们刚才的启动过程的讨论。接下来,启动了 mdnsd.bin进程:[root@dm01db01 ~]# ps -ef|grep d.bin

root      4296     1  4 20:37 ?        00:00:00/u01/app/11.2.0.3/grid/bin/ohasd.bin reboot

grid      4430     1 10 20:37 ?        00:00:00/u01/app/11.2.0.3/grid/bin/oraagent.bin

grid      4444     1  2 20:37 ?        00:00:00/u01/app/11.2.0.3/grid/bin/mdnsd.bin

root      4452  3507  0 20:37 pts/200:00:00grep d.bin

[root@dm01db01 ~]#

然后是增加了 ocssd.bin 、gpnpd.bin、 orarootagent.bin、 gipcd.bin、 osysmond.bin、 cssdmonitor、 cssdagent、 diskmon.bin 一系列的进程:

再然后是增加了 :ologgerd -M -d /u01/app/11.2.0.3/grid/crf/db/dm01db01

ologgerd(Cluster Logger Service)进程是随着11.2.0.2安装过程自动安装的(11.2.0.2的新特性,以前的版本需要单独下载和安装),属于Cluster Health Monitor(以下简称CHM)组件。

CHM主要用来自动收集操作系统的资源(CPU、内存、SWAP、进程、I/O以及网络等)的使用情况。CHM会每秒收集一次数据。

CHM会随以下软件自动安装:11.2.0.2 及更高版本的 Oracle Grid Infrastructure for Linux (不包括Linux Itanium) 、Solaris (Sparc 64 和 x86-64)

11.2.0.3 及更高版本 Oracle Grid Infrastructure for AIX 、 Windows (不包括Windows Itanium)

注意上面的osysmond.bin进程跟这里的ologgerd(Cluster Logger Service)进程进程是CHM的主要工作进程。

osysmond会将每个节点的资源使用情况发送给ologgerd(Cluster Logger Service),然后ologgerd将会把所有节点的信息都接收并保存到CHM的资料库。

CHM的资料库在11.2是缺省保存在$GRID_HOME/crf/db/`hostname -s`目录下,大概需要1G的空间。在12c中,CHM的配置又在不断发生变化:在12.1.0.1,CHM的资料库是单独保存在GI的数据库中,在安装时可以选择是否安装GIMR(Grid Infrastructure Management Repository )。

在12.1.0.2,CHM的资料库还是单独保存在GI的数据库中,但是GIMR(Grid Infrastructure Management Repository )已经是必选项了。

在12.2,GIMR(Grid Infrastructure Management Repository )使用的数据库MGMTDB可以选择是否跟CRS放在一个磁盘组,还是单独放在一个磁盘组中。

继续看下面的启动过程。在启动ocssd.bin以后,就会启动 octssd.bin :

接下来,启动evmd.bin:

然后是crsd.bin 和 tnslsnr:

当crsd.bin启动后,就可以使用crsctl status res -t来查看CRS状态了。

如果crsd.bin没启动,那么需要使用crsctl status res -t -init查看。

最后启动了lsnrctl 和 oc4jctl ,至此,CRS启动完毕。如何加入"云和恩墨大讲堂"微信群

oracle集群启动状态,循序渐进:Oracle 11.2 RAC集群进程的初始化与启动过程相关推荐

  1. oracle 字符集 自造字,循序渐进Oracle:自定义字符集的使用、更改字符集的内部方式及字符集更改的案例...

    第3章  Oracle的字符集(3.9-3.11) Oracle全球支持(即Globalization Support)允许我们使用本地语言和格式来存储和检索数据.通过全球支持,Oracle可以支持多 ...

  2. 在 Oracle Enterprise Linux 和 iSCSI 上构建您自己的 Oracle RAC 集群(续)

    DBA:Linux    下载  Oracle 数据库 11g    标签 linux, rac, clustering, 全部 在 Oracle Enterprise Linux 和 iSCSI 上 ...

  3. ORACLE 11g RAC 集群的管理与维护(3) —— crsctl 命令之(三) :管理 crs

    ORACLE 11g RAC 集群的管理与维护(3) -- crsctl 命令之(三) :管理 crs CRS(Cluster Ready Service,集群就绪服务).CRS 主要完成集群成员管理 ...

  4. RAC集群启停的总结

    方法一:srvctl操作rac集群启停的用法 一.RAC集群的分步关闭 rac集群的关闭顺序: 关闭数据库实例>关闭asm实例>关闭集群服务 1.关闭数据库实例 #su - grid $c ...

  5. Win11的两个实用技巧系列之设置系统还原点的方法、安全启动状态开启方法

    Win11如何设置系统还原点?Win11设置系统还原点的方法 很多用户下载安装win11后应该如何创建还原点呢?现在我通过这篇文章给大家介绍一下 Win11如何设置系统还原点?在Windows系统中有 ...

  6. 转载:oracle RAC集群启动和关闭

    http://www.cnblogs.com/yhfssp/p/8184761.html oracle 11G RAC集群启动和关闭: 1.停止数据库 $srvctl stop database –d ...

  7. [Oracle 11g r2(11.2.0.4.0)]RAC集群常用命令

    文章摘自于 http://blog.csdn.net/tianlesoftware/article/details/5358573. Oracle Clusterware的命令集可以分为以下4种: 节 ...

  8. oracle rac集群关闭和启动操作命令

    一.关闭数据库的顺序 1. 关闭数据库 oracle用户执行srvctl命令: $ srvctl stop/status database -d orcl #停止/查看所有节点上的实例 2. 停止集群 ...

  9. 【Oracle 集群】Linux下Oracle RAC集群搭建之基本测试与使用(九)

    Oracle 11G RAC数据库安装(九) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...

最新文章

  1. [置顶] 面向业务开发应用
  2. (网络编程)UDP实现聊天
  3. HD 1176 免费馅饼 (DP)
  4. 简单说一下kafka 与其他消息队列
  5. GitHub Universe 2021|MS Reactor 邀你共聚年度盛会
  6. WPF——自动关闭无模式窗口
  7. C++常见错误:LINK:fatal error LNL1123:转换到COFF期间失败,文件无效或者损坏
  8. c++ map是有序还是无序的_go 学习笔记之数组还是切片都没什么不一样
  9. 为什么我一打开计算机windows资源管理器就停止工作?,开机后提示“Windows资源管理器已停止工作”怎么解决?...
  10. githubpage 配置 出现DNS解析失败
  11. SpringCloud+CloudAlibaba微服务初阶入门
  12. kali 插耳机没声音
  13. IDEA更改启动界面背景图片
  14. A 0.18um CMOS SOC for a 100-m-Range 10-Frame/s 200x96 pixel time-of-flight Depth Sensor翻译
  15. Jvisualvm监控远程weblogic服务
  16. pvq真值表_真值表等数理逻辑方法的判定功能
  17. 医院门诊和挂号系统的操作指南
  18. Halcon焊点检测
  19. urllib.parse.quote报错surrogates not allowed
  20. 在Ubuntu 16.04中安装RStudio Server

热门文章

  1. HTML小游戏15 —— 网页版3D反恐英雄(附完整源码)
  2. 技术人生:故事之八 OFFICE是软件打字机?
  3. C语言刷题随记 —— 国际象棋棋盘
  4. 修改broadcom 4322无线网卡ID教程,不再显示第三方无线网卡
  5. JWT的数据格式详解
  6. nodejs-指定长度断句
  7. keep-alive 是什么?
  8. 26.编辑距离(一)
  9. 一个好强的mm写给男朋友的绝交信
  10. 用pygame做经典坦克大战游戏(附源码)