作者 | JiekeXu

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

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

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

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

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

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

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

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

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

su - oracle
sqlplus / as sysdba
SQL> 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 OPEN4               4 11.2.0.4.0        2020-11-29 08:44:31 OPEN3               3 11.2.0.4.0        2021-06-10 16:44:00 OPEN2               2 11.2.0.4.0        2021-06-08 17:33:40 OPENsu - grid
sqlplus / as sysasmSQL> 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 STARTED1               1 11.2.0.4.0        2021-11-10 18:37:25 STARTED4               4 11.2.0.4.0        2020-11-29 07:53:38 STARTED3               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 MASTERMaster = 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 -1
2021-10-27 14:57:27.105: [    CSSD][2673313536]clssgmCMReconfig: reconfiguration successful, incarnation 502102329 with 4 nodes, local node number 1, master node number 4cat $ORACLE_HOME/log/jieke-rac2/cssd/ocssd* |grep 'master node' | tail -1
2021-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 -1
2021-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 -1
2021-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 MASTERMaster = jieke-rac2Done
[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.ocr
jieke-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 MASTERMaster = jiekerac1
jiekerac1:/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 MASTERMaster = jiekerac1

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

jiekerac2:/home/grid(+ASM2)$ adrciADRCI: Release 19.0.0.0.0 - Production on Wed Nov 17 18:36:15 2021Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.ADR base = "/u01/app/grid"
adrci>
adrci> show home
ADR Homes:
diag/asm/+asm/+ASM2
diag/crs/jiekerac2/crs
diag/clients/user_root/host_3214393793_110
diag/clients/user_grid/host_3214393793_110
diag/tnslsnr/jiekerac2/asmnet1lsnr_asm
diag/tnslsnr/jiekerac2/listener_scan1
diag/tnslsnr/jiekerac2/listener
diag/tnslsnr/jiekerac2/listener_scan2
diag/tnslsnr/jiekerac2/listener_scan3
diag/asmtool/user_grid/host_3214393793_110
diag/asmtool/user_root/host_3214393793_110
diag/asmcmd/user_grid/jiekerac2
diag/kfod/jiekerac2/kfod
adrci>
adrci> exit

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

cat /u01/app/grid/diag/crs/jiekerac2/crs/trace/ocssd* | grep 'master node' | tail -1cd /u01/app/grid/diag/crs/jiekerac2/crs/tracecat ocssd* | grep 'master node' | tail -12021-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 1jiekerac2:/u01/app/grid/diag/crs/jiekerac2/crs(+ASM2)$ cat /u01/app/grid/diag/crs/jiekerac2/crs/trace/ocssd* | grep 'master node' | tail -1
2021-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 STARTED1               1 19.0.0.0.0        2021-11-01 11:30:26 STARTED

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

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

[root@jiekerac1 bin]# ./ocrconfig -manualbackupjiekerac2     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 STARTED4     4 jieke4      ora-rac12                  11.2.0.4.0        2021-07-24 12:27:33 STARTED3     3 jieke3      ora-rac11                  11.2.0.4.0        2021-07-24 12:34:33 STARTED2     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 主节点相关推荐

  1. ORACLE RAC 中 SRVCTL 命令详细说明

    ORACLE RAC 中 SRVCTL 命令详细说明           注:             RAC:     Real Application Clusters             S ...

  2. oracle sequences优化_性能优化-Oracle RAC中的Sequence Cache问题

    性能优化-Oracle RAC中的Sequence Cache问题 enq: SQ - contention 在RAC情况下,可以将使用频繁的序列Cache值增加到10000,或者更高到50000,这 ...

  3. Oracle RAC中的几个IP

    从Oracle 11g开始,设置了SCAN ip,除此之外还有public ip,virtual ip,private ip,容易让人理不清. 下面逐一解释: public ip: 类似与单实例的or ...

  4. srvctl 在oracle下运行,ORACLE RAC 中 SRVCTL 命令详细说明

    ORACLE RAC 中 SRVCTL 命令详细说明           注:             RAC:     Real Application Clusters             S ...

  5. rman打开oracle归档日志,Oracle RAC中使用RMAN管理归档日志

    RMAN归档配置的两种方案1.在Oracle asm和集群文件系统时的归档方案 对于Oracle RAC来说首选是使用Oracle asm作为reocvery区域.可选择的你也可以使用集群文件系统的归 ...

  6. oracle一个lun多大,Oracle RAC中验证LUN_ID对应情况

    在ORACLE RAC安装的时候, 共享文件使用RAW(裸设备)或者ASM方式 由于盘符不一致造成失败是最常见的故障之一,所以在准备阶段检测各个节点的相同盘符对应的是不是同一个lun就是必须的步骤,判 ...

  7. Oracle RAC中srvctl命令详细说明

    SRVCTL Add 添加数据库或实例的配置信息.在增加实例中,与-i一起指定的名字应该与INSTANCE_NAME 和 ORACLE_SID参数匹配. srvctl add database -d ...

  8. srvctl 在oracle下运行,Oracle RAC中Srvctl命令详细说明文档

    SRVCTL是ORACLE9i RAC集群配置管理的工具.本文是对SRVCTL的所有命令进行详细说明的一篇参考文档. 读者对象:ORACLE9i RAC数据库集群管理员. 注: RAC:Real Ap ...

  9. oracle+rac+算法,Oracle RAC中的投票算法

    两个partition都想以为对方出问题,自己需要接管业务,如果没有投票算法就会导致两个partition同时操作数据库(共享存储)的情况 假设,RAC集群中有三台机器,A,B,C A,B,C都会有3 ...

  10. ORACLE RAC中的oc4j和gsd资源以及RAC相关的进程

    1.RAC相比单实例数据库多出的进程: LMS - Gobal Cache Service Process 全局缓存服务进程 LMD - Global Enqueue Service Daemon 全 ...

最新文章

  1. html5控制两个重叠div的显示隐藏,2个重叠的div分别设置了hover但是只能显示一个div的hover效果?...
  2. VMware(VMDebugger)导致VS2010启动慢的解决办法
  3. 我用的/etc/vimrc
  4. 个性化推荐之召回的方法
  5. fdtd中时间监视器怎么放_利用FDTD软件仿真拓扑光子(六)-单向传播仿真与软件设置...
  6. 剑指offer55-I-二叉树的深度
  7. oracle学习总结1
  8. AD画图器件变灰如何恢复SHIFT+C清除过滤器
  9. OCP 12c最新考试原题及答案(071-7)
  10. 关于-宏碁4741G换固态硬盘SSD的一些注意事项
  11. 深度Linux修改分辨率6,Deepin 修改自定义分辨率
  12. 我的十余年职业生涯之路
  13. C. The Intriguing Obsession
  14. java考研方向,值得推荐!
  15. 校招----shein一面面经
  16. BIND的安装与配置
  17. python 三大器
  18. 中富金石老师靠谱分析:2022年国企改革将着力于三个方向
  19. pytorch set seed
  20. gstreamer获取视频采集卡的数据

热门文章

  1. c++中arccos()的用法(提醒自己)
  2. 计算机考研数据库原理知识,数据库原理考研资料题库真题整理
  3. 设计模式-word版
  4. 用c#实现简单的登录和注册功能
  5. javascript 中判断div背景颜色
  6. PS2022免安装绿色版
  7. 华为是怎样研发的(10)——知识管理
  8. 判断一个数是不是奇数
  9. 风变编程python24_如何看待风变编程的 Python 网课?
  10. 怎么给图片添加水印?教你一键添加水印