大家好,这里是 Lucifer三思而后行,专注于提升数据库运维效率。
前言
前几天使用脚本在 RockyLinux 9.4 安装 Oracle 11GR2 RAC,安装完之后发现集群无法正常启动,后经过分析发现原来是因为 RHEL9 版本默认安装移除了 initscripts
软件包,需要人为手动安装,在 RHEL8 之前是默认安装的。
在分析问题的过程中,顺便对 Oracle RAC 集群启动顺序进行了更深入的了解,下面简单整理了一下,分享给大家一起看看,本文主要是以 11GR2 为例。
Oracle 11GR2 RAC 集群启动顺序
参考文档: 11GR2 Clusterware 和 Grid Home – 你需要知道的事 (Doc ID 2225748.1)
11GR2 Clusterware 的一些关键特性:
- 在安装运行 11GR2 的 Real Application Clusters 数据库之前需要先安装 11GR2 Clusterware。
- GRID HOME 包括 Oracle Clusterware 和 ASM。ASM 不能够放在另外单独的 HOME 下。
- 11GR2 Clusterware 可以安装为 Standalone 模式(以来支持 ASM)或者 Oracle Restart 模式(单节点)。此时 Clusterware 是完整版 Clusterware 的子集。
- 11GR2 Clusterware 可以独立运行,也可以运行在第三方 Clusterware 之上。关于支持矩阵请参考文档 Note: 184875.1 “How To Check The Certification Matrix for Real Application Clusters”
- GRID HOME 和 RAC/DB HOME 必须安装在不同的路径下。
- 11GR2 Clusterware 的 OCR 和 voting 文件必须是共享的,它们可以放在 ASM 里或者集群文件系统中。
- OCR 每4个小时自动备份一次,备份文件放在
<GRID_HOME>/cdata/<clustername>/
目录下,并且可以使用 ocrconfig 工具恢复。 - 每次配置改变时,voting file 会被备份到 OCR 中,并且可以使用 crsctl 工具恢复。
- 11GR2 Clusterware 需要最少一个私有网络(为了节点间的通信)和最少一个公共网络(为了和集群外通信)。多个虚拟 IP 需要注册到 DNS 中,包括 node VIPs (每个节点一个), SCAN VIPs (3个)。这可以通过网络管理员手工操作来完成也可以使用 GNS (Grid Naming Service) 来完成。(注意 GNS 也需要一个自己的 VIP)。
- 客户端通过 SCAN (Single Client Access Name)来访问数据库。关于 SCAN 的更多信息请参照 Note: 887522.1
- 集群安装后期,root.sh 会启动 clusterware。关于如何处理 root.sh 的相关问题,请参照 Note: 1053970.1
- 每个节点只允许运行一套集群相关的后台进程。
- 在 Unix 下,clusterware 是由 init.ohasd 脚本启动的。而 init.ohasd 脚本以 respawn 模式定义在 /etc/inittab 中。
- 如果某个节点被认定为不健康,那么它会被从集群中驱逐(或者重启),以此来维持整个集群的健康。关于更多信息,请参照文档 Note: 1050693.1 “Troubleshooting 11.2 Clusterware Node Evictions (Reboots)”
- 可以使用第三方时间同步软件(比如 NTP)来保持节点间的时间同步,也可以不使用第三方时间同步软件,而由 CTSS 来同步节点间时间,关于更多信息,请参照文档 Note: 1054006.1
- 如果要安装低版本的数据库软件,那么需要在集群中 pin 住节点,否则会碰到 ORA-29702 错误。 更多信息请参照文档 Note 946332.1 以及 Note:948456.1。
- 可以通过启动节点,或者执行"crsctl start crs"来启动集群。也可以执行"crsctl start cluster"来在所有的节点上启动集群。注意 crsctl 在 <GRID_HOME> 目录,注意 crsctl start cluster 仅在 ohasd 运行的时候才可以工作。
- 可以通过关闭节点,或者执行"crsctl stop crs"来关闭 clusterware。或者执行""crsctl stop cluster"来关闭所有节点上的 clusterware。注意 crsctl 在 <GRID_HOME> 目录。
- 手工杀掉(kill)集群的进程是不支持的。
- 实例现在在
crsctl stat res -t
的输出中是 .db 资源的一部分,在 11GR2 上,没有单独的 .inst 资源。
下面的图片清晰的列出了各个层级:
关于启动顺序的简述:INIT 启动 init.ohasd
(以 respawn 参数),而 init.ohasd 启动 OHASD
进程(Oracle High Availability Services Daemon),而 OHASD 又启动其它 4 个进程。
第一层:OHASD 启动:
- cssdagent - 负责启动 CSSD 的 Agent。
- cssdmonitor - 监控 CSSD 以及节点健康(和 cssdagent 一起)。
- orarootagent - 负责启动所有 root 用户下的 ohasd 资源 的 Agent。
- oraagent - 负责启动所有 oracle 用户下的 ohasd 资源的 Agent。
第二层:OHASD rootagent 启动:
- CRSD - 管理集群资源的主要后台进程。
- CTSSD - Cluster Time Synchronization Services Daemon
- Diskmon
- ACFS (ASM Cluster File System)驱动
第二层:OHASD oraagent 启动:
- MDNSD - 用来实现 DNS 查询
- GIPCD - 用来做节点间通信
- GPNPD - Grid Plug & Play Profile Daemon
- EVMD - Event Monitor Daemon
- ASM - ASM 资源
第三层:CRSD 启动:
- orarootagent - 负责启动所有 root 用户下的 crsd 资源的 Agent。
- oraagent - 负责启动所有 oracle 用户下的 crsd 资源的 Agent。
第四层:CRSD rootagent 启动:
- Network resource - 监控公共网络
- SCAN VIP(s) - Single Client Access Name Virtual IPs
- Node VIPs - 每个节点1个
- ACFS Registery - 挂载 ASM Cluster File System
- GNS VIP (optional) - VIP for GNS
第四层:CRSD oraagent 启动:
- ASM Resouce - ASM 资源
- Diskgroup - 用来管理/监控 ASM 磁盘组
- DB Resource - 用来管理/监控数据库和实例
- SCAN Listener - SCAN 监听,监听在 SCAN VIP 上
- Listener - 节点监听,监听在 Node VIP 上
- Services - 用来管理/监控 services
- ONS - Oracle Notification Service
- eONS - 加强版 Oracle Notification Service
- GSD - 为了向下兼容 9i
- GNS (optional) - Grid Naming Service - 处理域名解析
重要日志的路径
11GR2 Clusterware 后台进程日志都放在 <GRID_HOME>/log/<nodename>
。 <GRID_HOME>/log/<nodename>
下的结构:
alert<NODENAME>.log
(📢 注意:对于 clusterware 的问题,可以先检查这个文件)- ./admin:
- ./agent:
- ./agent/crsd:
- ./agent/crsd/oraagent_oracle:
- ./agent/crsd/ora_oc4j_type_oracle:
- ./agent/crsd/orarootagent_root:
- ./agent/ohasd:
- ./agent/ohasd/oraagent_oracle:
- ./agent/ohasd/oracssdagent_root:
- ./agent/ohasd/oracssdmonitor_root:
- ./agent/ohasd/orarootagent_root:
- ./client:
- ./crsd:
- ./cssd:
- ./ctssd:
- ./diskmon:
- ./evmd:
- ./gipcd:
- ./gnsd:
- ./gpnpd:
- ./mdnsd:
- ./ohasd:
- ./racg:
- ./racg/racgeut:
- ./racg/racgevtf:
- ./racg/racgmain:
- ./srvm:
<GRID_HOME>
和 $ORACLE_BASE
目录下的 cfgtoollogs 目录存放了一些其它的重要日志。比如 rootcrs.pl
以及其它配置工具,比如 ASMCA 等等。
ASM 日志存放在 $ORACLE_BASE/diag/asm/+asm/<ASM Instance Name>/trace
。
<GRID_HOME>/bin
目录下的 diagcollection.pl 可以自动收集重要的日志。以 root 用户执行它。
官方文档
以下列出官方文档中关于 Cluster Startup
的示例图:
11GR2
12CR2
18C
19C
21C
23ai
往期精彩文章推荐
Oracle 监控 EMCC 13.5 安装部署超详细教程 🔥
一篇文章让你彻底掌握 Shell 🔥
Oracle 一键巡检自动生成 Word 报告 🔥
Oracle一键安装脚本的 21 个疑问与解答 🔥
Oracle一键巡检脚本的 21 个疑问与解答 🔥
全网首发:Oracle 23ai 一键安装脚本 🔥
Oracle 19C 最新 RU 补丁 19.24 ,一键安装! 🔥
Oracle Linux 6 一键安装 Oracle 11GR2 RAC
Oracle Linux 7.9 一键安装 Oracle 19C
Oracle Linux 8.9 一键安装 Oracle 19C RAC
Oracle Linux 9.4(aarch64) 一键安装 Oracle 19C 🔥
openEuler 20.03 LTS SP4 一键安装 Oracle 19C 🔥
openEuler 22.03 LTS SP4 一键安装 Oracle 19C RAC
RHEL 7.9 一键安装 Oracle 19C 19.23 RAC
Redhat 8.4 一键安装 Oracle 11GR2
RedHat 9.4(aarch64) 一键安装 Oracle 19C
龙蜥 Anolis 7.9 一键安装 Oracle 19C 19.23
龙蜥 Anolis OS 8.8 一键安装 Oracle 19C
SUSE 15 SP5 一键安装 Oracle 19C
统信 UOS V20 1070(a) 一键安装 Oracle 11GR2
Ubuntu 22.04 一键安装 Oracle 19C
Ubuntu 14.04 一键安装 Oracle 19C
银河麒麟 Kylin V10 SP3 一键安装 Oracle 19C 🔥
银河麒麟 Kylin V10 SP3 一键安装 Oracle 11GR2 RAC
Oracle DataGuard GAP 修复手册 🔥
优化 Oracle:最佳实践与开发规范
DBA 必备:Linux 软件源配置全攻略 🔥
Linux 一键配置时钟同步全攻略 🔥
Starwind 配置 ISCSI 共享存储
SUSE 15 SP3 安装 Oracle 19C RAC 数据库
达梦 8 数据库安装手册 🔥
Oracle 12CR2 RAC 安装避坑宝典
Linux7 安装 Oracle 19C RAC 详细图文教程 🔥
Oracle ADG 搭建 RAC to Single 详细教程
Oracle DataGuard GAP 修复手册 🔥
Oracle 分区表之在线重定义
AutoUpgrade 快速升级 Oracle 数据库
Oracle 数据库巡检命令手册 🔥
Oracle 数据坏块的 N 种修复方式 🔥
数据库 SQL 开发入门教程
超全 Linux 基础命令总结 🔥
VMware 虚拟机安装 Linux 系统
Linux 安装 MySQL 详细教程
教你玩转 SQLPLUS,工作效率提升 200%
感谢您的阅读,这里是 Lucifer三思而后行,欢迎 点赞+关注,我会持续分享数据库知识、运维技巧。