查看原文
其他

如何判断 Oracle RAC 中的 Master 主节点

JiekeXu JiekeXu DBA之路 2024-03-03

作者 | JiekeXu

来源 | JiekeXu DBA之路(ID: JiekeXu_IT)

大家好,我是 JiekeXu,很高兴又和大家见面了,今天和大家一起来讨论一下如何判断 Oracle RAC 中的 Master 主节点问题,欢迎点击上方蓝字关注我,标星或置顶,更多干货第一时间到达!

先来说一下前面发布的文章【Oracle 通过 SQL 语句查看数据库服务器 IP 地址】自然阅读量居然 1200 多,甚是高兴,大家的阅读、点赞、转发、再看都是我不断更文的动力,看着阅读量还不错,故有了这篇更文。


Oracle RAC(Real Application Cluster)大体架构图如下所示:



部署图大概如下所示,共享存储,各节点间高速互联:



Oracle RAC 启动流程如下图所示:



但是对于 RAC 体系架构,启动流程 看看上面简略图就好,在此不做深入研究,本次主要是讨论 CRS 集群件 Master 主节点的问题,当然研究这个问题也没有太大的意义,只是探索而已。


前几天和同事讨论到这个问题,起初我也不知道哪个节点是主节点,他发给我下图并告诉我说 INST_ID 最小的就是主节点,但是这个 INST_ID 一直是节点 1 最小,那么节点一 一直是主节点吗?这个显然是不对的。



那么,根据数据库启动时间看呢?启动时间早的就是主节点呢?但是对于 RAC 而言,DB 重启不一定 ASM 会重启,所以 DB 的启动时间是无法判断的,那么 ASM 的启动时间能不能作为判断 master 主节点的依据呢,答案是可以的,RAC4 即节点 4 启动时间最早则为 master 主节点,除非遇到 ASM 启动故障,这就另说了。


su - oracle sqlplus / as sysdbaSQL> select INST_ID,INSTANCE_NUMBER,VERSION,STARTUP_TIME,STATUS from gv$instance;
INST_ID INSTANCE_NUMBER VERSION STARTUP_TIME STATUS---------- --------------- ----------------- ------------------- ------------ 1 1 11.2.0.4.0 2021-11-10 18:38:04 OPEN 4 4 11.2.0.4.0 2020-11-29 08:44:31 OPEN 3 3 11.2.0.4.0 2021-06-10 16:44:00 OPEN 2 2 11.2.0.4.0 2021-06-08 17:33:40 OPEN


su - grid sqlplus / as sysasm
SQL> alter session set nls_date_format='yyyy-mm-dd HH24:MI:SS';
Session altered.
SQL> SQL> select INST_ID,INSTANCE_NUMBER,VERSION,STARTUP_TIME,STATUS from gv$instance;
INST_ID INSTANCE_NUMBER VERSION STARTUP_TIME STATUS---------- --------------- ----------------- ------------------- ------------ 2 2 11.2.0.4.0 2021-06-08 17:32:54 STARTED 1 1 11.2.0.4.0 2021-11-10 18:37:25 STARTED 4 4 11.2.0.4.0 2020-11-29 07:53:38 STARTED 3 3 11.2.0.4.0 2021-06-10 16:43:19 STARTED


下面我将演示三种方法来识别 Oracle 集群件的主节点,请注意,clusterware master 与 Oracle 数据库实例中的 Resource master 不同。


在 11.2.0.4 环境下


方法一:

su - grid $ oclumon manage -get MASTER
Master = jieke-rac2

使用 “oclumon manage -get MASTER” 命令可查看到主节点在 RAC2 上,与前面判断不符,这是因为此命令适用于 12C 及以上环境,11g 这里有偏差也正常。


方法二:


查看集群的 ocssd.log 日志,在日志中会有集群重配信息“master node number 4”这个指向了节点 4,是没有问题的,不过要注意要是所有的日志中都没有集群重配信息那么这个方法还是找不到主节点。


下面是四个节点的集群 ocssd 日志信息,主节点都是指向“master node number 4”

$ cat $ORACLE_HOME/log/jieke-rac1/cssd/ocssd.log |grep 'master node' | tail -1$ cat $ORACLE_HOME/log/jieke-rac1/cssd/ocssd* |grep 'master node' | tail -12021-10-27 14:57:27.105: [ CSSD][2673313536]clssgmCMReconfig: reconfiguration successful, incarnation 502102329 with 4 nodes, local node number 1, master node number 4
cat $ORACLE_HOME/log/jieke-rac2/cssd/ocssd* |grep 'master node' | tail -12021-10-27 14:57:27.281: [ CSSD][3063351040]clssgmCMReconfig: reconfiguration successful, incarnation 502102329 with 4 nodes, local node number 2, master node number 4
[grid@jieke-rac3 ~]$ cat $ORACLE_HOME/log/jieke-rac3/cssd/ocssd* |grep 'master node' | tail -12021-10-27 14:57:27.281: [ CSSD][1980651264]clssgmCMReconfig: reconfiguration successful, incarnation 502102329 with 4 nodes, local node number 3, master node number 4[grid@jieke-rac3 ~]$ [grid@jieke-rac4 ~]$ cat $ORACLE_HOME/log/jieke-rac4/cssd/ocssd.log |grep 'master node' | tail -1[grid@jieke-rac4 ~]$ [grid@jieke-rac4 ~]$ cat $ORACLE_HOME/log/jieke-rac4/cssd/ocssd* |grep 'master node' | tail -12021-10-27 14:57:27.299: [ CSSD][97924864]clssgmCMReconfig: reconfiguration successful, incarnation 502102329 with 4 nodes, local node number 4, master node number 4[grid@jieke-rac4 ~]$ oclumon manage -get MASTER
Master = jieke-rac2
Done [grid@jieke-rac4 ~]$

那么到底节点2是主节点还是节点4 是主节点,以上信息暂时没法确定。下面还有一种方法则就是通过 OCR 自动备份来判断,OCR 备份由主节点进行


方法三:


通过以下 OCR 备份发现节点 4 是主节点,那么 oclumon 查询到的是有问题的,12c 以上才可使用。

--root 用户操作[root@jieke-rac3 ~]# /u01/app/11.2.0/grid/bin/ocrconfig -manualbackup
jieke-rac4 2021/11/17 18:24:16 /u01/app/11.2.0/grid/cdata/jieke-rac/backup_20211117_182416.ocr
[root@jieke-rac2 ~]# /u01/app/11.2.0/grid/bin/ocrconfig -manualbackup
jieke-rac4 2021/11/17 20:18:27 /u01/app/11.2.0/grid/cdata/jieke-rac/backup_20211117_201827.ocrjieke-rac4     2021/11/17 18:24:16     /u01/app/11.2.0/grid/cdata/jieke-rac/backup_20211117_182416.ocr


19c 环境下


节点 1 上查看,主节点在节点 1 上, “oclumon manage -get MASTER” 查看也没有问题。

jiekerac1:/home/grid(+ASM1)$ oclumon manage -get MASTER
Master = jiekerac1jiekerac1:/home/grid(+ASM1)$ exit[root@jiekerac1 ~]# /u01/app/19.0.0.0/grid/bin/ocrconfig -manualbackup
jiekerac1 2021/11/17 18:28:25 +OCR:/ops-jiekerac-scan/OCRBACKUP/backup_20211117_182825.ocr.261.1088879305 2037353368
jiekerac1 2021/07/23 14:58:50 +OCR:/ops-jiekerac-scan/OCRBACKUP/backup_20210723_145850.ocr.265.1078671531 2037353368
jiekerac1 2021/06/04 21:10:57 +OCR:/ops-jiekerac-scan/OCRBACKUP/backup_20210604_211057.ocr.264.1074373859 2037353368 [root@jiekerac1 ~]#

节点 2  上使用 OCR 备份命令查看,也是显示的主节点在节点 1 上, “oclumon manage -get MASTER” 查看也没有问题。


[root@jiekerac2 ~]# /u01/app/19.0.0.0/grid/bin/ocrconfig -manualbackup
jiekerac1 2021/11/17 18:31:35 +OCR:/ops-jiekerac-scan/OCRBACKUP/backup_20211117_183135.ocr.268.1088879497 2037353368
jiekerac1 2021/11/17 18:28:25 +OCR:/ops-jiekerac-scan/OCRBACKUP/backup_20211117_182825.ocr.261.1088879305 2037353368
jiekerac1 2021/07/23 14:58:50 +OCR:/ops-jiekerac-scan/OCRBACKUP/backup_20210723_145850.ocr.265.1078671531 2037353368
jiekerac1 2021/06/04 21:10:57 +OCR:/ops-jiekerac-scan/OCRBACKUP/backup_20210604_211057.ocr.264.1074373859 2037353368
jiekerac2:/home/grid(+ASM2)$ oclumon manage -get MASTER
Master = jiekerac1

那么,通过 ocssd 日志查看呢?19c 因日志位置发生变化,我们先用 adrci  来查看家目录,然后再通过日志定位。


jiekerac2:/home/grid(+ASM2)$ adrci
ADRCI: Release 19.0.0.0.0 - Production on Wed Nov 17 18:36:15 2021
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
ADR base = "/u01/app/grid"adrci> adrci> show homeADR Homes: diag/asm/+asm/+ASM2diag/crs/jiekerac2/crsdiag/clients/user_root/host_3214393793_110diag/clients/user_grid/host_3214393793_110diag/tnslsnr/jiekerac2/asmnet1lsnr_asmdiag/tnslsnr/jiekerac2/listener_scan1diag/tnslsnr/jiekerac2/listenerdiag/tnslsnr/jiekerac2/listener_scan2diag/tnslsnr/jiekerac2/listener_scan3diag/asmtool/user_grid/host_3214393793_110diag/asmtool/user_root/host_3214393793_110diag/asmcmd/user_grid/jiekerac2diag/kfod/jiekerac2/kfodadrci> adrci> exit

ocssd 日志变到 crs 下了,需要使用如下路径去查看。

cat /u01/app/grid/diag/crs/jiekerac2/crs/trace/ocssd* | grep 'master node' | tail -1
cd /u01/app/grid/diag/crs/jiekerac2/crs/trace
cat ocssd* | grep 'master node' | tail -1
2021-11-09 05:40:20.528 : CSSD:2776540928: [ INFO] clssgmCMReconfig: reconfiguration successful, incarnation 530661885 with 2 nodes, local node number 1, master node jiekerac1, number 1
jiekerac2:/u01/app/grid/diag/crs/jiekerac2/crs(+ASM2)$ cat /u01/app/grid/diag/crs/jiekerac2/crs/trace/ocssd* | grep 'master node' | tail -12021-06-04 21:09:04.668 :    CSSD:150898432: [     INFO] clssgmCMReconfig: reconfiguration successful, incarnation 518130856 with 2 nodes, local node number 2, master node jiekerac1, number 1


master node jiekerac1, number 1显示主节点在节点 1,这是没有问题的。


下面从启动时间也可大略判断一点:


SQL > select INST_ID,INSTANCE_NUMBER,VERSION,STARTUP_TIME,STATUS from gv$instance;
INST_ID INSTANCE_NUMBER VERSION STARTUP_TIME STATUS---------- --------------- ----------------- ------------------- ------------ 2 2 19.0.0.0.0 2021-11-09 05:48:07 STARTED         1               1 19.0.0.0.0        2021-11-01 11:30:26 STARTED


最后,这是一个 19c 生产环境,通过 OCR 备份是不是就很容易判断出来主节点了呢?

随着时间的重启,主节点由 jiekerac1 变成了 jiekerac2 。


[root@jiekerac1 bin]# ./ocrconfig -manualbackup
jiekerac2 2021/11/17 19:17:56 +MGMT:/db-rac-scan/OCRBACKUP/backup_20211117_191756.ocr.293.1088882279 2037353368
jiekerac2 2021/11/17 19:17:34 +MGMT:/db-rac-scan/OCRBACKUP/backup_20211117_191734.ocr.285.1088882257 2037353368
jiekerac2 2021/07/23 16:03:49 +MGMT:/db-rac-scan/OCRBACKUP/backup_20210723_160349.ocr.289.1078675431 2037353368
jiekerac1 2020/04/06 01:15:24 +MGMT:/db-rac-scan/OCRBACKUP/backup_20200406_011524.ocr.283.1036977325 2037353368

--另一套环境,涉及到主机名均已替换为非敏感字段。SQL> set line 345 SQL> select INST_ID,INSTANCE_NUMBER,INSTANCE_NAME,HOST_NAME,VERSION,STARTUP_TIME,STATUS from gv$instance;
INST_ID INSTANCE_NUMBER INSTANCE_NAME HOST_NAME VERSION STARTUP_TIME STATUS---------- --------------- ---------------- -------------------------------------------------- ----------------- ------------------- ------------ 1 1 jieke1 ora-rac1 11.2.0.4.0 2021-07-24 11:56:04 STARTED 4 4 jieke4 ora-rac12 11.2.0.4.0 2021-07-24 12:27:33 STARTED 3 3 jieke3 ora-rac11 11.2.0.4.0 2021-07-24 12:34:33 STARTED   2     2 jieke2      ora-rac2                  11.2.0.4.0        2021-07-24 12:11:15 STARTED


~本次分享到此结束啦~

❤️ 欢迎关注我的公众号,来一起玩耍吧!!!


——————————————————————--—--————

公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
腾讯云:https://cloud.tencent.com/developer/user/5645107

————————————————————————----———





VMWARE16 Oracle Linux7.9 安装 Oracle19c RAC 详细配置方案

使用 VMware 16 RHEL7.7 虚拟机静默安装 Oracle 19c RAC

爆肝一万字终于把 Oracle Data Guard 核心参数搞明白了

Oracle 12c 及以上版本补丁更新说明及下载方法(收藏版)

Oracle 19c 19.10DBRU 最新补丁升级看这一篇就够了

Redhat 7.7 安装最新版 MongoDB 5.0.1 手册

ASM 管理的内部工具:KFED、KFOD、AMDU

性能优化|关于数据库历史性能问题的一道面试题

一线运维 DBA 五年经验常用 SQL 大全(二)

ORA-00349|激活 ADG 备库时遇到的问题

OGG-01004|OGG 初始化数据问题处理

Oracle 轻量级实时监控工具 oratop

Linux 7.7 源码安装 MySQL 8.0.26

MySQL OCP 认证考试你知道吗?

Oracle 19C RAC 安装遇到的坑

国产数据库|TiDB 5.0 快速体验

Oracle 19C MAA 搭建指南

Oracle 参数文件三两事儿

Oracle 每日一题系列合集

百花齐放的国产数据库

继续滑动看下一个

如何判断 Oracle RAC 中的 Master 主节点

JiekeXu JiekeXu DBA之路
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存