Oracle RAC 日常运维与故障场景
Oracle难度: 高级耗时: 15 分钟 – 3 小时(视场景而定)已安装并运行的 Oracle RAC (Grid Infrastructure 19c) 集群的日常运维与故障处理:健康检查、节点驱逐诊断、节点停机维护、整个集群的计划内关闭与启动、添加和删除节点、服务管理 (preferred/available, AC/TAC)、SCAN/VIP/端口/interconnect 变更、OCR/OLR 备份与恢复、OCR 和 voting 文件迁移。本指南不是安装指南(先看 RAC 安装);打补丁见 RAC rolling patch,disk group 操作见 ASM 日常运维。每个场景都按 诊断 → 安全网 → 执行 → 验证 → 后续 的顺序进行。
架构: 现有 2–8 节点 RAC(Grid Infrastructure 19c;23ai/26ai 的差异见注释)
场景
- 集群健康检查(日常 / 维护前) — 不做任何修改:检查 Clusterware 栈、资源、OCR/voting、ASM、interconnect、时间和最近的告警。日常检查、每次维护和打补丁之前,以及收到投诉时,首先选择此项。
- 节点被逐出集群或自行重启(驱逐诊断) — 只读:节点意外重启或被逐出集群时选择。通过 Clusterware alert log、ocssd.trc、操作系统日志以及 misscount/disktimeout 值,判断根本原因是网络、磁盘还是操作系统。
- 停止节点进行维护并重新启动 — 要在某个节点上做操作系统补丁、内核或硬件维护时选择。其他节点继续运行;该节点实例上的服务被迁走,会话在 drain 时间结束后关闭。
- 计划内关闭并启动整个集群 — SAN 或数据中心维护等需要所有节点同时关闭的情况下选择。完全停机:所有节点上的全部数据库、ASM 和 Clusterware 都会停止。
- 向集群添加新节点 — 有新服务器要加入集群时选择(扩容、硬件更新)。不停机:预检查 (cluvfy)、Grid home (addnode.sh)、DB home 和新实例 (dbca -addInstance)。
- 从集群删除节点 — 某台服务器要永久移出集群时选择(退役、硬件故障)。删除实例,从该节点卸载 DB 和 Grid home,再将节点从集群中删除;其他节点保持运行。
- 添加、修改、迁移或删除服务 — 要定义应用连接的服务、修改其分布 (preferred/available) 或 failover 设置 (TAF/Application Continuity),或将运行中的服务迁到其他实例时选择。数据库保持打开。
- SCAN、VIP、listener 端口或 interconnect 变更 — SCAN 名称/IP、某个节点 VIP、listener 端口或私有网络 (interconnect) 要变更时选择。interconnect 变更需要停止整个集群;其他变更会造成短暂的连接中断。
- 备份 OCR 和 OLR,检查备份 — 不停机:手工备份 OCR、在每个节点上备份 OLR,并把备份复制到集群磁盘之外。在打补丁、添加/删除节点、网络变更等任何高风险操作之前选择。
- OCR 损坏或 CRS disk group 丢失:从备份恢复 — ocrcheck 显示损坏、CRSD 无法启动(PROT-/PROC- 错误)或 CRS disk group 完全丢失时选择。整个集群停止;以 exclusive 模式从备份恢复 OCR,disk group 丢失时重建 disk group、voting 文件和 ASM spfile。
- 某个节点上 Clusterware 无法启动:OLR 损坏 — 其他节点运行正常,只有一个节点上 crsctl start crs 无法启动 OHASD,且 ocrcheck -local 报 OLR 错误时选择。只影响该节点:从备份恢复 OLR。
- 将 OCR 和 voting 文件迁到其他 disk group — 不停机:ocrconfig -add/-delete 和 crsctl replace votedisk。更换存储 (SAN)、提高 CRS disk group 冗余,或让 OCR 同时写入第二个 disk group 时选择。
开始之前
- 所有节点上都有 root 权限,并可用 grid/oracle 用户打开 login shell (sudo -iu grid);grid 和 oracle 的 profile 会加载 Grid/DB home 环境。
- 开始前集群状态正常:所有节点 CRS online,没有应该打开却关闭的资源。否则先用 健康检查 解决问题。
- 维护窗口和变更单已批准;已通知应用团队;监控系统已开启 blackout。…此操作会造成完全停机。…
- 有数据库最新的 RMAN 备份和归档日志备份…(添加/删除实例会改变 redo thread 和 undo 表空间)…。
- 有一份保存在集群磁盘之外的 OCR 备份 (…),或已知完好 disk group 中自动备份的路径。…已为 CRS disk group 准备好足够 … 冗余所需数量的空闲磁盘,并在所有节点上可见。…
- 新节点 (…) 与现有节点的操作系统版本和内核相同;已完成 RAC 安装 中的操作系统准备和 存储准备;public/private 接口名相同;共享 LUN 也已映射给该节点;VIP 地址 … 未被占用。
- 已知事件的大致时间。如已安装 AHF (TFA),一条命令即可收集诊断信息;否则手工检查日志。
指南阶段
- 集群健康检查 — 在所有节点上检查 Clusterware 栈 · 列出资源状态 · 检查数据库、服务和 listener 状态 · 检查 OCR、voting 和 OLR 的完整性 · 检查 ASM 和 disk group 使用率 · 检查网络配置和时间同步 …
- 停止整个集群 — 停止前记录状态 · 手工备份 OCR(安全网) · 停止所有数据库 · 在所有节点上停止 Clusterware · 停止 OHASD (…) · 执行维护工作
- 启动整个集群 — 启动 Clusterware (…) · 等待所有节点加入集群 · 确认数据库已打开 · 比对启动后的资源
- 准备新节点与预检查 — 记录当前集群配置 · 验证新节点的操作系统准备 · 将新节点加入 /etc/hosts (…) · 将 grid 用户的 SSH 互信扩展到新节点 · 将 oracle 用户的 SSH 互信扩展到新节点 · 将 cvuqdisk RPM 发送到新节点 …
- 将 Grid Infrastructure 扩展到新节点 — 手工备份 OCR(安全网) · 将 Grid home 扩展到新节点 (addnode.sh) · 运行 orainstRoot.sh(新节点) · 运行 root.sh(新节点) · 在新节点上设置 grid 环境 · 在集群中验证新节点
- DB home 与新实例 — 将 DB home 扩展到新节点 · 运行 DB home 的 root.sh(新节点) · 在新节点上设置 oracle 环境 · 添加新实例 (dbca -addInstance) · 将新实例加入服务配置 · 验证新实例
- 添加节点之后 — 备份新节点的 OLR · 备份新配置的 OCR · 更新监控、备份和运维任务
- 删除实例和 DB home — 从 … 清空服务(实例保持打开) · 删除实例 (dbca -deleteInstance) · 将 DB home inventory 缩小到目标节点 (…) · 删除 DB home (deinstall -local) (…) · 在剩余节点上更新 DB home inventory
- 从目标节点删除 Clusterware — 检查 pin 状态,必要时解除 · 删除 Grid home (deinstall -local) (…) · 从集群定义中删除节点 · 验证删除并清除残留的 VIP
- 删除节点之后 — 备份新配置的 OCR · 清理残留并更新记录
- 服务:诊断 — 显示服务的当前配置
- 服务:执行 — 添加并启动服务 · 修改服务的分布和设置 · 按新的分布启动服务 · 将服务迁到其他实例 · 停止并删除服务
- 服务:验证 — 确认服务在数据库和 listener 中可见
- 网络变更:诊断与安全网 — 记录当前网络配置 · 手工备份 OCR(安全网) · 备份 GPnP profile (…)
- 变更 SCAN 名称 / IP — 验证新的 SCAN 解析 · 用新值重建 SCAN VIP 和 listener · 更新数据库的 remote_listener 设置 · 验证通过 SCAN 的连接
- OCR 和 OLR 备份 — 显示现有 OCR 备份和备份位置 · 手工备份 OCR · 将最新的手工备份复制到集群之外并验证 · 手工备份 OLR (…) · 同时备份 ASM spfile 和密码文件
- OCR 恢复:诊断 — 检查 OCR 状态和 Clusterware · 从 ASM 侧检查 disk group 和磁盘 · 验证要恢复的备份
- OCR 恢复:执行 — 停止 Clusterware (…) · 在第 1 个节点上以 exclusive 模式启动 Clusterware · 用临时参数文件启动 ASM(spfile 丢失时) · 重建 disk group … · 从备份恢复 OCR · 重建 voting 文件 …
- OCR 恢复:验证与后续 — 验证集群和 OCR · 检查备份之后的变更 · 做新的 OCR 备份并消除根本原因