oracle RAC各版本集群总结和常用命令汇总

oracle RAC学习

RAC介绍

RAC:高可用集群,负载均衡集群,高性能计算集群

RAC是⼀种⾼可⽤,⾼性能,负载均衡的share-everything的集群

8i:内存融合雏形

内存融合雏形(Oracle Parallel Server): 实现多实例的数据读读,读写模式(DLM) ,写写模式仍需要借助磁盘作为中介

9i:数据库层⾯实现集群

1、真正内存融合

​ (scn)

2、Global Resource Dictionary

​ 到这个目录里面去找,这个资源在那个节点上面。

3、RAC 特有进程: LMON,LMS,LMD

lms:维护集群数据缓存的一致性 :节点之间传输数据,传输SCN号,节点之前通讯

lmd:维护集群共享池一致性(维护队列资源):管理集群之间队列的信息(多个节点都要访问一个资源的话,由于优先级的不同,或者锁的信息,那么这些节点需要排队)

lmon:对lmd的监视和保护(维护心跳机制):保证集群之间两节点是相通的

9i的时候没有集群管理软件

image-20241127150802777

10g:集群管理软件,真正实现集群;ASM存储管理

CRS(Cluster Ready Service)的出现使得集群能够真正在操作系统和数据库层⾯实现

ASM专⻔⽤于集群⽂件的管理

1、CSS负责维护集群的⼀致性,主要功能是通过ocssd守护进程实 现的,ocssd以oracle⽤户进程运⾏,运⾏级别为实时。主要通过读 取VF中的投票信息来维护集群的⼀致性。

2、CRS组件负责对集群的所有应⽤程序资源进程管理,并实现应⽤ 程序的⾼可⽤

3、EVM负责产⽣并记录集群事件,并在节点之间传递发⽣的事件。

image-20241127152144522

11g:Grid Infrastucture,集群软件更独⽴地管理和部署

1、集群组件的资源形式及agent管理

2、SCAN的引⼊

​ 节点之间的增加和删除,不用调整应用端的连接信息。

3、OCR和Voting也可以保存在ASM磁盘中了。

4、新增加集群进程:LMHB

​ 监控LMON、lms、lmd及其他进程

12c:Flex Cluster,Flex ASM

Flex Cluster和Flex ASM,彻底改变了RAC集群中数据库实例与ASM实例之间的关系

(如果 Oracle 12c 数据库实例与一个 ASM 实例的连接断开,数据库连接将故障切换至其他服务器上的另一个 ASM 实例)

image-20241127155215781

19c新特性:

  • Grid零停机补丁升级

  • 重新支持共享文件系统

    • 在12.2版本中,Oracle RAC不支持将ocr和voting disk放在共享文件系统中,现在19c(19.3)重新开始支持。
  • 务支持故障恢复首选节点

    • 为动态数据库服务支持"preferred"(首选)和"available"(可用)的放置配置,可以给服务配置一个首选节点,当该节点发生故障重新恢复正常后,服务将自动切换回该节点上。

单实例DB vs RAC

组件单实例环境RAC环境
SAG实例拥有自己的SGA每个实例拥有自己的SGA
后台进程实例有自己的后台进程集实例有自己的后台进程集
数据文件仅由一个实例访问由所有实例共享,必须放在共享存储
控制文件仅由一个实例访问由所有实例共享,必须放在共享存储
联机重做日志文件专供一个实例写入和读取仅有一个实例写入,但其他实例可以在恢复和存档期间读取,如果一个实例关闭,那么其他实例的日志切换可以强制对空闲实例重做日志进行归档
存档后的重做日志专供该实例使用专属于该实例,故障恢复期间其他实例可以访问
闪回恢复日志仅由一个实例访问由所有实例共享,必须放在共享存储
告警日志和其他追踪文件专供该实例使用专属于每个实例,其他实例不会读写
ORACLE_HOME同一台服务器上访问不同数据库的多个实例可以使用相同的可执行文件与单实例相同,但也可以放在共享存储上,允许所有实例共用一个可执行文件

RAC日志路径

oracle 11G

#集群日志
##$ORACLE_HOME/log/${hostname}/alert${sid}.log   ---- 11g  
##$ORACLE_BASE/diag/crs/${主机名}/crs/trace       ---- 19c
#ASM日志
##$ORACLE_BASE/diag/asm/+asm/${ASM实例名}/trace
##/app/oracle/grid/diag/asm/+asm/+ASM1/trace/alert_+ASM1.log[grid@hferp71:/home/grid]$sqlplus / as sysasm
SQL*Plus: Release 11.2.0.4.0 Production on Tue Nov 26 15:20:39 2024
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management optionsSQL> show parameter dump
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
background_core_dump                 string      partial
background_dump_dest                 string      /oracle/app/grid/diag/asm/+asm/+ASM1/trace
core_dump_dest                       string      /oracle/app/grid/diag/asm/+asm/+ASM1/cdump
max_dump_file_size                   string      unlimited
shadow_core_dump                     string      partial
user_dump_dest                       string      /oracle/app/grid/diag/asm/+asm/+ASM1/trace#ASM日志
[grid@hferp71:/oracle/app/grid/diag/asm/+asm/+ASM1/trace]$
#集群日志
[grid@hferp71:/oracle/app/11.2.0/grid/log/hferp71/crsd]
#监听日志
[grid@hferp71:/oracle/app/grid/diag/tnslsnr/hferp71/listener/trace]

oracle 19C

[grid@hfcwdb66:/home/grid]$sqlplus / as sysasm
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Nov 26 15:34:05 2024 Version 19.7.0.0.0
Copyright (c) 1982, 2019, Oracle.  All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.7.0.0.0SQL> show parameter dumpNAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
background_core_dump                 string      partial
background_dump_dest                 string      /oracle/app/19c/grid/rdbms/log
core_dump_dest                       string      /oracle/app/grid/diag/asm/+asm/+ASM1/cdump
max_dump_file_size                   string      unlimited
shadow_core_dump                     string      partial
user_dump_dest                       string      /oracle/app/19c/grid/rdbms/log#ASM日志
[grid@hfcwdb66:/oracle/app/grid/diag/asm/+asm/+ASM1/trace]$
#集群日志
[grid@hfcwdb66:/oracle/app/grid/diag/crs/hfcwdb66/crs/trace]$
#监听日志
[grid@hfcwdb66:/oracle/app/grid/diag/tnslsnr/hfcwdb66/listener/trace]

主要后台进程

LMON:

​ LMON:LOCK Monitor Processes 也被称为Global enqueue service monitor

​ 监控集群的状况,维护CGS(实现实例之间心跳的机制)的内存结构;监控非正常终⽌的进程和实例;增加或减少实例时,锁和资源的重新配置;监控全局锁资源,处理死锁和阻塞。

#11G
[root@hferp71 ~]# ps -ef |grep lmon
grid      20301      1  0 10:47 ?        00:00:40 asm_lmon_+ASM1
oracle    25839      1  0 11:42 ?        00:00:34 ora_lmon_hferpdb1
root      41007  40928  0 14:33 pts/4    00:00:00 grep --color=auto lmon#19C
[root@hfcwdb66 ~]# ps -ef |grep lmon
grid     19020     1  0 13:16 ?        00:00:06 asm_lmon_+ASM1
oracle   21264     1  0 13:16 ?        00:00:06 ora_lmon_hfcwdb1
root     27633 17168  0 14:33 pts/0    00:00:00 grep --color=auto lmon

LMON用于监控整个集群的global enqueues(全局锁)和resources, 而且会执行global enqueue recovery。实例异常终止后,会由LMON来进行GCS内存方面的处理。

  • 全局锁是用于控制并发访问共享资源的机制,它可以确保多个会话或事务之间的数据一致性和并发控制。LMON进程负责监控全局锁的分配和释放,并协调集群中各个节点之间的锁的访问和使用。

    • 全局锁资源管理:LMON进程负责管理全局锁资源的分配和释放。它维护全局锁的状态信息,如锁的拥有者、等待者和持有者等,并根据请求和释放来更新这些信息。当一个实例加入或者离开集群后,LMON会对lock和resource进行reconfiguration.

    • 锁的冲突检测和解决:LMON进程会检测并解决全局锁的冲突。当一个会话请求获取一个已经被其他会话持有的锁时,LMON会检测到这个冲突,并根据锁的优先级和请求者的等待时间来决定如何解决冲突。

    • 锁的队列管理:LMON进程维护全局锁的等待队列,并根据请求的先后顺序和优先级来管理队列。它会将等待锁的会话放入适当的队列中,并在锁的释放时选择适当的会话来获取锁。

    • 跨节点通信:LMON进程负责在集群节点之间进行通信,以便协调全局锁的使用和访问。它会与其他节点上的LMON进程交换信息,以保持全局锁的一致性和同步。LMON会在不同的实例间进行通讯检查,如果发现对方通讯超时,就会发出节点eviction,所以很多时候节点发生eviction后(ORA-481, ORA-29740等),我们需要查看LMON的trace来了解eviction的原因。

LMS:

​ LMSn:Lock Monitor Services也称作GCS(Global Cache Services)processes

​ 维护GRD中数据块资源的信息,完成数据块在实例之间的传递⼯作。相关消息的发送和接收⼯作。是整个内存融合体系中最忙碌的进程。

[root@hferp71 ~]# ps -ef |grep lms
grid      20306      1  0 10:47 ?        00:01:06 asm_lms0_+ASM1
oracle    25843      1  0 11:42 ?        00:01:03 ora_lms0_hferpdb1
root      41469  40928  0 14:39 pts/4    00:00:00 grep --color=auto lms#19C
[root@hfcwdb66 ~]# ps -ef |grep lms
grid     19024     1  0 13:16 ?        00:00:16 asm_lms0_+ASM1
oracle   21270     1  0 13:16 ?        00:00:18 ora_lms0_hfcwdb1
oracle   21272     1  0 13:16 ?        00:00:18 ora_lms1_hfcwdb1
root     32252 17168  0 14:39 pts/0    00:00:00 grep --color=auto lms

处理集群中的全局缓存(Global Cache)服务。

  • LMS进程的主要功能包括:

    • 全局缓存的读取和写入:LMS进程负责处理其他节点请求的全局缓存数据块的读取和写入。当一个节点需要访问另一个节点的数据块时,它会向LMS进程发送请求,LMS进程会协调数据的传输和同步。

    • 数据块的传输和同步:LMS进程负责在集群节点之间传输和同步数据块。当一个节点需要访问另一个节点的数据块时,LMS进程会将数据块从一个节点传输到另一个节点,并确保数据的一致性和可用性。

    • 数据块的锁管理:LMS进程负责管理全局缓存数据块的锁。它会处理其他节点请求的锁,并确保数据块在并发访问时的一致性和完整性。

    • 数据块的失效处理:LMS进程负责处理全局缓存数据块的失效。当一个节点修改了一个数据块时,LMS进程会通知其他节点对该数据块的缓存进行失效处理,以确保数据的一致性。

​ LMS进程会维护在Global Resource Directory (GRD)中的数据文件以及每个cached block的状态。LMS用于在RAC的实例间进行message以及数据块的传输。LMS是Cache Fusion的一个重要部分。LMS进程可以说是RAC上最活跃的后台进程,会消耗较多的CPU.一般每个实例会有多个LMS进程,每个Oracle版本的默认的LMS进程数目会有所不同,大部分版本的默认值是:MIN(CPU_COUNT/2, 2))

LMD:

​ LMD:Lock Monitor Deamon Process

​ 负责内存中的队列资源,每个实例只有⼀个LMD进程,为LMD0.

[root@hferp71 ~]# ps -ef |grep lmd
grid      20304      1  0 10:47 ?        00:00:43 asm_lmd0_+ASM1
oracle    25841      1  0 11:42 ?        00:00:28 ora_lmd0_hferpdb1
root      41737  40928  0 14:42 pts/4    00:00:00 grep --color=auto lmd[root@hfcwdb66 ~]# ps -ef |grep lmd
root      2816 17168  0 14:42 pts/0    00:00:00 grep --color=auto lmd
grid     19022     1  0 13:16 ?        00:00:14 asm_lmd0_+ASM1
oracle   21267     1  0 13:16 ?        00:00:07 ora_lmd0_hfcwdb1
oracle   21274     1  0 13:16 ?        00:00:05 ora_lmd1_hfcwdb1

LMD 进程主要负责处理集群中的缓存块的读取和写入请求。它们协调数据块在集群节点之间的共享和一致性。

大概过程如下:

1.一个连接发出了global enqueue 请求

2.这个请求会被发给本节点的LMD0进程

3.这个前台进程会处于等待状态

4.LMD0会找到这个资源的master节点是谁

5.LMD0会把这个请求发送给master节点

6.如果需要的话,master节点会增加一个新的master资源

7.这时从master节点可以获知谁是owner, waiter

8.当这个资源被grant给requestor后, master节点的LMD0进程会告知requestor节点的LMD0

9.然后requestor节点的LMD0会通知申请资源的前台进程

LCK:

​ LCK:Lock Process

​ 负责锁的管理(辅助LMD进程队列资源的管理),LCK0,只有⼀个

[root@hferp71 ~]# ps -ef |grep lck
grid      20331      1  0 10:47 ?        00:00:02 asm_lck0_+ASM1
oracle    25881      1  0 11:42 ?        00:00:12 ora_lck0_hferpdb1
root      41871  40928  0 14:44 pts/4    00:00:00 grep --color=auto lck[root@hfcwdb66 ~]# ps -ef |grep lck
root      4272 17168  0 14:44 pts/0    00:00:00 grep --color=auto lck
grid     19031     1  0 13:16 ?        00:00:00 asm_lck1_+ASM1
grid     19060     1  0 13:16 ?        00:00:02 asm_lck0_+ASM1
oracle   21295     1  0 13:16 ?        00:00:00 ora_lck1_hfcwdb1
oracle   21373     1  0 13:16 ?        00:00:02 ora_lck0_hfcwdb1

LCK0进程主要处理非cache fustion的资源请求,比如library 和row cache 请求。

  • LCK0处理在实例一级的锁:
    • Row cache entries
    • Library cache entries
    • Result cache entries
    • 这些实例级的锁的owner, waiter是LCK0进程。
    • 只要这个实例的锁的owner是LCK0,那么这个实例的任何一个连接都可以使用这种cached的metedata.
    • 如果本地的实例没有拥有这个lock,那么需要申请这个lock,前台进程会等待DFS Lock Handle。

另外,当shared pool出现压力需要释放一些内存来存放新的cursor时,LCK进程会将dictionary cache 的一些内存进行释放。

DIAG:

​ DIAG:Diagnostic Deamon

​ 转储数据块相关的诊断信息,当系统可能出现性能问题时,

​ DIAG进程响应其他进程发出的dump请求,将相关 的诊断信息写到trace⽂件中。这种⽅式⽣成诊断信息的操作是轻量级的,并不会对系统产⽣可⻅的性能影响。

[root@hferp71 ~]# ps -ef |grep diag
grid      20295      1  0 10:47 ?        00:00:17 asm_diag_+ASM1
oracle    25828      1  0 11:42 ?        00:00:15 ora_diag_hferpdb1
root      42033  40928  0 14:46 pts/4    00:00:00 grep --color=auto diag[root@hfcwdb66 ~]# ps -ef |grep diag
root      6964 17168  0 14:46 pts/0    00:00:00 grep --color=auto diag
root      7280     1 14 13:10 ?        00:13:56 /opt/oracle.ahf/jre/bin/java -server -Xms64m -Xmx128m -Djava.awt.headless=true -Ddisable.checkForUpdate=true -XX:HeapDumpPath=/oracle/app/oracle.ahf/data/hfcwdb66/diag/tfa oracle.rat.tfa.TFAMain /opt/oracle.ahf/tfa
grid     19012     1  0 13:16 ?        00:00:04 asm_diag_+ASM1
grid     19833     1  0 13:16 ?        00:00:31 /oracle/app/19c/grid/jdk/bin/java -server -Xms30M -Xmx512M -Djava.awt.headless=true -Ddisable.checkForUpdate=true -DTRACING.ENABLED=false -XX:ParallelGCThreads=1 -cp /oracle/app/19c/grid/jlib/cha.jar:/oracle/app/19c/grid/jlib/chaconfig.jar:/oracle/app/19c/grid/jlib/cha-diag-msg.jar:/oracle/app/19c/grid/jlib/clsce.jar:/oracle/app/19c/grid/jlib/srvm.jar:/oracle/app/19c/grid/jlib/srvmhas.jar:/oracle/app/19c/grid/jlib/srvmasm.jar:/oracle/app/19c/grid/jlib/netcfg.jar:/oracle/app/19c/grid/jdbc/lib/ojdbc8.jar:/oracle/app/19c/grid/ucp/lib/ucp.jar:/oracle/app/19c/grid/jlib/fte.jar:/oracle/app/19c/grid/jlib/jai_core.jar:/oracle/app/19c/grid/jlib/mlibwrapper_jai.jar:/oracle/app/19c/grid/jlib/vecmath.jar:/oracle/app/19c/grid/jlib/jai_codec.jar:/oracle/app/19c/grid/jlib/jh.jar oracle.cha.server.CHADDriver
oracle   21237     1  0 13:16 ?        00:00:03 ora_diag_hfcwdb1
root     22065 17770  0 13:17 ?        00:00:09 /oracle/app/19c/grid/perl/bin/perl /oracle/app/19c/grid/bin/diagsnap.pl start

用来打印诊断信息。diag进程会响应别的进程发出的dump请求,将相关的诊断信息写到diag trace文件中。在RAC上,当发出global oradebug请求时,会由每个实例的diag进程来打印诊断信息到diag trace中。

LMHB:

监控RAC中的其他进程。

[root@hferp71 ~]# ps -ef |grep lmhb
grid      20310      1  0 10:47 ?        00:00:01 asm_lmhb_+ASM1
oracle    25849      1  0 11:42 ?        00:00:01 ora_lmhb_hferpdb1
root      42150  40928  0 14:47 pts/4    00:00:00 grep --color=auto lmhb[root@hfcwdb66 ~]# ps -ef |grep lmhb
root      8071 17168  0 14:47 pts/0    00:00:00 grep --color=auto lmhb
grid     19026     1  0 13:16 ?        00:00:09 asm_lmhb_+ASM1
oracle   21289     1  0 13:16 ?        00:00:08 ora_lmhb_hfcwdb1

监控本地的LMON, LMD, LCK0,RMS0 and LMSn等进程是否运行正常,是否被阻塞或者已经hang了。

RAC常见的问题

并发控制

在集群环境中,数据是放在共享存储上的,每个节点之间的身份是对等的,对数据有相同的访问权利,这就要求集群件对这种对等权限的并发访问有控制机制。

在Oracle RAC中,利用Distribute Lock Management(DLM)机制进行多个节点间并发访问的控制。(内存融合机制

健忘症

该问题是由于每个节点上都有一份集群配置信息,修改节点的配置信息得不到同步导致的。

解决健忘问题的最简单办法是,整个集群只有一份集群配置信息,无论哪个节点修改了配置信息,都是同一份,配置信息对每个节点都是一样的。

Oracle RAC使用OCR Disk文件解决这个问题

如果需要修改其内容,节点上的OCR process会通知可以更改OCR Disk的节点一OCR master Node,master node节点上的OCR process负责更新本地和其他节点的OCR cache内容。

OCR Disk每四个小时自动备份一次。

脑裂

在集群环境中,节点间需要某种机制,比如心跳,了解彼此的健康状况。

假如心跳出了问题,每个节点都会认为其他节点都不复存在了,自己是唯一的幸存者,就会控制整个集群。因为数据是共享的,都来控制独享,势必会破坏共享数据的完整性和一致性。

这时候表决盘被引入,通过投票机制,获得最高票数或者最早到达的获得投票的,幸存,其他节点被踢出。

在Oracle RAC中Voting Disk用来记录节点间成员的状态,出现脑裂时,仲裁哪个节点获得控制权,其他的节点将被剔除。

IO隔离

虽然节点被剔除了,但是并没有限制其对共享数据的访问,所以为了限制已踢出节点对共享数据的访问,必须进行IO隔离。

Oracle RAC采取的是直接重启故障节点。

OCR、voting disk的作用

​ OCR(Oracle Cluster Registry)和Voting Disk是Oracle数据库集群中的两个重要组件。可以通过登录到Oracle Grid Infrastructure管理界面来检查OCR和Voting Disk的状态。在管理界面中,可以查看OCR和Voting Disk的详细信息,并进行相关的配置和管理操作。

OCR(Oracle Cluster Registry)

OCR是用于存储和管理Oracle数据库集群配置信息的共享存储。它记录了集群中的所有节点、资源、服务和配置参数等信息

OCR记录节点成员的配置信息,如database、ASM、instance、listener、VIP等CRS资源的配置信息,

类似于oralce的注册表。

检查OCR状态

[grid@hferp71:/home/grid]$ocrcheck
Status of Oracle Cluster Registry is as follows :Version                  :          3Total space (kbytes)     :     262120Used space (kbytes)      :       2996Available space (kbytes) :     259124ID                       :  216145073Device/File Name         :   +dggrid1Device/File integrity check succeededDevice/File Name         :   +dggrid2Device/File integrity check succeededDevice/File not configuredDevice/File not configuredDevice/File not configuredCluster registry integrity check succeededLogical corruption check bypassed due to non-privileged user#19C
[grid@hfcwdb66:/home/grid]$ocrcheck
Status of Oracle Cluster Registry is as follows :Version                  :          4Total space (kbytes)     :     491684Used space (kbytes)      :      84268Available space (kbytes) :     407416ID                       :  215749915Device/File Name         :  +DGGRID01Device/File integrity check succeededDevice/File Name         :  +DGGRID02Device/File integrity check succeededDevice/File not configuredDevice/File not configuredDevice/File not configuredCluster registry integrity check succeededLogical corruption check bypassed due to non-privileged user
  • OCR的主要作用包括:

    • 配置管理:OCR存储了集群的配置信息,包括节点信息、资源配置、服务配置等。当集群发生变化时,如添加或删除节点、修改资源配置等,OCR会记录这些变化并通知其他节点进行相应的配置更新。

    • 故障恢复:OCR存储了集群的状态信息,可以用于故障恢复。当节点或资源发生故障时,OCR可以提供相关的信息,帮助集群进行故障切换和恢复。

    • 高可用性:OCR是一个共享存储,可以被所有节点访问。这样,在节点故障或网络分区的情况下,其他节点仍然可以访问OCR,并继续提供服务,保证了集群的高可用性。

ASMCMD> ls -ls
Type     Redund  Striped  Time             Sys  Block_Size  Blocks      Bytes      Space  Name
OCRFILE  MIRROR  COARSE   NOV 26 14:00:00  Y          4096   66591  272756736  578813952  REGISTRY.255.1129492283
ASMCMD> pwd
+dggrid2/hferpcluster/ocrfileASMCMD> ls -ls
Type     Redund  Striped  Time             Sys  Block_Size  Blocks      Bytes      Space  Name
OCRFILE  MIRROR  COARSE   NOV 26 14:00:00  Y          4096   66591  272756736  578813952  REGISTRY.255.1129488961
ASMCMD> pwd
+dggrid1/hferpcluster/ocrfile

Voting Disk

Voting Disk是用于实现Oracle数据库集群中的节点间投票的共享存储。

检查Voting Disk状态:

[grid@hferp71:/home/grid]$crsctl query css votedisk
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------1. ONLINE   a1212283af854fe2bff79eef8af29d1d (/dev/mapper/asm-dggrid1) [DGGRID1]2. ONLINE   8b2ec6fe91284f02bf5e5ffcceac3334 (/dev/mapper/asm-dggrid2) [DGGRID1]3. ONLINE   2485b14a4cba4f34bfc8899f1eecc38b (/dev/mapper/asm-dggrid3) [DGGRID1]
Located 3 voting disk(s).[grid@hfcwdb66:/home/grid]$crsctl query css votedisk
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------1. ONLINE   476d4ace60274f1ebfa68287b2e72abc (/dev/asm-grid01) [DGGRID01]2. ONLINE   ce56146bf03e4f6cbfd2a5783b9e282c (/dev/asm-grid02) [DGGRID01]3. ONLINE   3a877d39a9b54ff6bfcdbd61250f7ef0 (/dev/asm-grid03) [DGGRID01]
Located 3 voting disk(s).
  • 主要作用包括:

    • 节点间投票:在Oracle数据库集群中,节点通过投票来决定集群中的主节点(Master Node)。每个节点都有一个投票权,通过投票来决定集群中的决策,如故障切换、资源分配等。Voting Disk存储了节点的投票信息,确保集群中的决策是基于多数节点的一致性。

    • 高可用性:Voting Disk也是一个共享存储,可以被所有节点访问。这样,在节点故障或网络分区的情况下,其他节点仍然可以访问Voting Disk,并继续进行投票,保证了集群的高可用性。

    • 动态节点管理:Voting Disk还用于动态节点管理。当集群中添加或删除节点时,Voting Disk会记录这些变化,并通知其他节点进行相应的配置更新和投票权的重新分配。

网络层

Public IP(公共IP):

​ Public IP是用于外部客户端访问数据库的IP地址。它是唯一对外可见的IP地址,用于连接到数据库的监听器,以及通过网络访问数据库服务。Public IP通常是与数据库服务器所在的物理网络接口卡(NIC)相关联的IP地址。

Private IP(私有IP):

​ Private IP是用于集群内部节点之间的通信的IP地址。它是在集群内部使用的,不对外可见。Private IP通常是与数据库服务器所在的专用网络接口卡(NIC)相关联的IP地址。它用于节点间的集群通信、缓存一致性(Cache Fusion)和共享存储访问等。

Virtual IP(虚拟IP):

​ Virtual IP是用于提供高可用性和故障切换的IP地址。它是一个虚拟的IP地址,可以在集群中的多个节点之间进行切换。当某个节点发生故障时,Virtual IP会自动切换到其他健康的节点上,以保证数据库服务的连续性。Virtual IP通常与VIP资源相关联,由Oracle Clusterware动态管理。

SCAN(Single Client Access Name,单客户端访问名称):

​ SCAN是用于提供集中化的数据库服务名称的虚拟主机名。它是在集群中的多个节点上运行的SCAN监听器的统一名称。当客户端连接到数据库时,可以使用SCAN来访问数据库服务,而不需要指定具体的节点名称或IP地址。SCAN提供了更简单、更灵活的连接方式,并支持动态的节点管理和故障切换。

什么是脑裂

​ 脑裂(Split-Brain)是指在分布式系统中,主节点与备份节点之间的通信中断或网络故障导致系统出现分裂的情况。在脑裂发生时,主节点和备份节点都认为自己是主节点,导致系统出现不一致的状态。

  • 脑裂可能导致以下问题:

    • 数据不一致:主节点和备份节点在网络分裂期间可能会更新各自的数据,导致数据不一致。

    • 服务冲突:主节点和备份节点可能同时提供相同的服务,导致冲突和数据损坏。

    • 数据丢失:在脑裂发生时,可能会丢失一些数据,因为主节点和备份节点无法及时同步数据。

  • 为了避免脑裂问题,通常会使用一些机制来确保主备节点之间的通信和一致性,例如:

    • 心跳检测:主备节点之间通过定期发送心跳消息来检测彼此的存活状态。

    • 智能切换:当检测到主节点失效时,备份节点会自动切换为主节点,以确保系统的连续性和可用性。

    • 数据同步:主备节点之间通过数据同步机制来保持数据的一致性,例如使用复制或日志传输等方式。

全局资源目录 (GRD)

​ Oracle集群RAC的全局资源目录(Global Resource Directory,简称GRD)是Oracle RAC(Real Application Clusters,实际应用集群)中的一个关键组件。GRD用于跟踪和管理集群中的资源状态和分配情况。

GRD关键信息

GRD存储了以下关键信息:

  1. 实例信息:GRD记录了集群中的所有实例(Instance)的状态和配置信息,包括实例的名称、节点信息、运行状态等。
  2. 服务信息:GRD记录了集群中的所有服务(Service)的状态和配置信息,包括服务的名称、实例分配情况、负载均衡策略等。
  3. 数据库资源信息:GRD记录了数据库资源(如表空间、数据文件、控制文件等)的分配情况和状态。
  4. 锁信息:GRD跟踪和管理集群中的锁资源,包括共享锁和排他锁等。

​ GRD通过在集群中的每个节点上维护一个本地资源目录(Local Resource Directory,简称LRD),并使用集群间的通信机制来保持LRD之间的同步,从而实现全局的资源管理和状态跟踪。

主要作用

​ GRD的主要作用是支持Oracle RAC的高可用性和负载均衡功能。通过GRD,集群中的各个节点可以了解其他节点的资源状态,从而实现故障转移和资源的动态分配。同时,GRD还支持服务级别的负载均衡,通过根据服务的负载情况和节点的资源状况来动态调整服务的分配策略,以提供更好的性能和可用性。

image-20241127150802777

全局缓存服务(GCS)

Oracle集群RAC全局缓存服务(Global Cache Service,简称GCS)是Oracle RAC(Real Application Clusters)中的一个关键组件。GCS负责管理和协调集群中的共享缓存(Shared Cache),以支持并发访问和共享数据。

在Oracle RAC中,每个节点都有自己的本地缓存(Local Cache),用于存储本地数据块。而共享缓存则是所有节点共享的一部分内存,用于存储全局数据块。GCS负责跟踪和管理共享缓存中的数据块的分配和使用情况。

通过GCS,Oracle RAC实现了高可用性和可扩展性。它允许多个节点同时访问和更新共享数据,提供了更高的并发性能和更好的系统可用性。同时,GCS还通过动态分配和移动数据块,实现了负载均衡和故障转移的功能。

主要功能

GCS的主要功能包括:

  1. 数据块的分配和释放:GCS负责将全局数据块分配给各个节点的本地缓存,并在需要时将数据块从一个节点的本地缓存移动到另一个节点的本地缓存。
  2. 数据块的一致性:GCS通过协调各个节点之间的数据访问和更新,确保对共享数据块的并发访问是一致的。例如,当一个节点修改了一个数据块时,GCS会通知其他节点更新其本地缓存中的副本。
  3. 数据块的锁管理:GCS负责管理共享缓存中的锁资源,以支持并发事务的隔离和一致性。它通过协调各个节点之间的锁请求和释放,保证并发事务的正确执行。

缓存融合(Cache Fusion)

缓存融合(Cache Fusion)是Oracle集群RAC(Real Application Clusters)中的一个关键特性,用于实现高性能和高可用性的共享缓存访问。

在Oracle RAC中,每个节点都有自己的本地缓存(Local Cache),用于存储本地数据块。当一个节点需要访问另一个节点的数据块时,传统的做法是通过网络将数据块传输到请求节点的本地缓存中,这种方式称为远程读(Remote Read)。

缓存融合通过直接访问其他节点的本地缓存,而不是通过网络传输数据块,来实现更快的数据访问。当一个节点需要访问另一个节点的数据块时,它会向目标节点发送一个请求,目标节点会将数据块直接发送给请求节点的本地缓存,而不是通过网络传输。这种方式称为直接读(Direct Read)。

缓存融合是Oracle RAC实现高性能和高可用性的关键技术之一。它通过直接访问其他节点的本地缓存,减少了网络开销,提高了数据访问的速度和并发性能,从而提供了更好的用户体验和系统可用性。

缓存融合的主要优势:

  1. 更快的数据访问:由于数据块直接从本地缓存传输,而不需要通过网络,所以缓存融合可以显著提高数据访问的速度。这对于需要频繁访问其他节点的数据的应用程序特别有益。
  2. 减少网络开销:传统的远程读需要通过网络传输数据块,会产生较大的网络开销。而缓存融合可以减少网络开销,提高系统的整体性能和吞吐量。
  3. 更好的并发性能:缓存融合允许多个节点同时访问和更新共享数据块,提供了更高的并发性能。它通过协调各个节点之间的数据访问和更新,确保对共享数据块的并发访问是一致的。

RAC的心跳机制

image-20241127172134192

image-20241127191218408

网络心跳

介绍:网络心跳主要是确保集群节点间的连通性,以便节点之间能够了解彼此的状态。

原理:ocssd.bin进程每秒向其他节点发送网络心跳,通过心跳情况确认节点的连通性,以及当网络心跳出现问题时做出处理。

相关进程:

这个功能主要是由守护进程ocssd.bin完成的。ocssd.bin守护进程包含以下线程:

发送线程(clssnmSending Thread):每秒向集群中其他节点发送网络心跳信息

分析线程(clssnmPolling Thread):分析收到的网络心跳信息并进行处理,如果发现某一些节点持续丢失网络心跳,就会通知集群进行重新配置。

集群重新配置线程(clssnmRcfgMgrThread):当接收到分析线程的重新配置的通知时,该进程进行重新配置。

派遣线程(clssnmClusterListener):负责接收从远程传递过来的消息,之后,根据信息的种类发给相关的线程进行处理。

image-20241127172205346

磁盘心跳

介绍:如果由于网络心跳异常,导致集群出现脑裂的发生,磁盘心跳则帮助解决该问题。

原理:oracle集群的每一个节点每秒都会向集群中所有的表决盘注册本地节点的磁盘心跳信息,也就是说,所有的VF的信息是相同的。同时会将自己能够联系的到的集群中的其他节点的信息,或者说本地节点认为集群中的成员列表信息填入到表决盘中。一旦发生脑裂,CSS的重新配置线程就会通过表决盘的信息了解集群节点间的联通新,从而决定集群会分裂成几个子集群,以及每个子集群所包含的节点情况和每个节点的状态。

相关进程

磁盘心跳线程(clssnmvDiskPing Thread):该线程负责向集群的表决盘中发送磁盘心跳,同时,该线程也负责读取表决盘中的kill block的信息,以确定本地节点是否需要重新启动。

磁盘心跳监控线程(clssnmvDiskPingMonitor Thread):监控磁盘心跳线程是否能够正常地发送心跳,是否能正确读取kill block的信息。

Kill block线程(clssnmv KillBlock Thread):负责监控VF的kill block信息.

本地心跳

介绍:监控ocssd.bin进程以及本地节点的状态

原理:Oracle每一秒在向远端节点发送网络心跳的同时,同一进程向cssdagent和cssdmonitor发送本地ocssd.bin进程的状态

srvctl、crsctl命令

srvctl命令-应用层

srvctl(Server Control)是一个命令行工具,可用于管理定义在 Oracle Cluster Registry (OCR)上的资源。

这些资源包括节点应用(nodeapps), 它构成Oracle Cluterware ,而其包括the Oracle Notification Service (ONS), the Global Services Daemon (GSD)

其他的资源也可以被 SRVCTL管理 , 如 databases, instances, listeners, services, and applications。

通过 SRVCTL,可以启动或停止 nodeapps、databases、instances、listeners 和 services,删除或移去 instances 和 services,增加 services,管理配置信息。

**查看 scan ip 地址配置 **
srvctl config scan 
srvctl status scan [grid@hferp71:/home/grid]$srvctl config scan
SCAN name: hferpdbscan, Network: 1/172.30.21.0/255.255.255.0/ens33
SCAN VIP name: scan1, IP: /hferpdbscan/172.30.21.175
[grid@hferp71:/home/grid]$srvctl status scan
SCAN VIP scan1 is enabled
SCAN VIP scan1 is running on node hferp71
[grid@hferp71:/home/grid]$[grid@hfcwdb66:/home/grid]$srvctl config scan
SCAN name: hfcwdbscan, Network: 1
Subnet IPv4: 172.30.21.0/255.255.255.0/enp0s3, static
Subnet IPv6:
SCAN 1 IPv4 VIP: 172.30.21.140
SCAN VIP is enabled.
[grid@hfcwdb66:/home/grid]$srvctl status scan
SCAN VIP scan1 is enabled
SCAN VIP scan1 is running on node hfcwdb66
[grid@hfcwdb66:/home/grid]$
查看 SCAN 监听情况
srvctl status scan_listener [grid@hferp71:/home/grid]$srvctl status scan_listener
SCAN Listener LISTENER_SCAN1 is enabled
SCAN listener LISTENER_SCAN1 is running on node hferp71
[grid@hferp71:/home/grid]$[grid@hfcwdb66:/home/grid]$srvctl status scan_listener
SCAN Listener LISTENER_SCAN1 is enabled
SCAN listener LISTENER_SCAN1 is running on node hfcwdb66
[grid@hfcwdb66:/home/grid]$
查询节点应用程序状态
srvctl status nodeapps[grid@hferp71:/home/grid]$srvctl status nodeapps
VIP hferp71vip is enabled
VIP hferp71vip is running on node: hferp71
VIP hferp72vip is enabled
VIP hferp72vip is running on node: hferp72
Network is enabled
Network is running on node: hferp71
Network is running on node: hferp72
GSD is disabled
GSD is not running on node: hferp71
GSD is not running on node: hferp72
ONS is enabled
ONS daemon is running on node: hferp71
ONS daemon is running on node: hferp72
[grid@hferp71:/home/grid]$[grid@hfcwdb66:/home/grid]$srvctl status nodeapps
VIP 172.30.21.138 is enabled
VIP 172.30.21.138 is running on node: hfcwdb66
VIP 172.30.21.139 is enabled
VIP 172.30.21.139 is running on node: hfcwdb67
Network is enabled
Network is running on node: hfcwdb66
Network is running on node: hfcwdb67
ONS is enabled
ONS daemon is running on node: hfcwdb66
ONS daemon is running on node: hfcwdb67
[grid@hfcwdb66:/home/grid]$
节点应用程序配置(VIP、GSD、ONS、监听器)
srvctl config nodeapps[grid@hferp71:/home/grid]$srvctl config nodeapps
Network exists: 1/172.30.21.0/255.255.255.0/ens33, type static
VIP exists: /hferp71vip/172.30.21.173/172.30.21.0/255.255.255.0/ens33, hosting node hferp71
VIP exists: /hferp72vip/172.30.21.174/172.30.21.0/255.255.255.0/ens33, hosting node hferp72
GSD exists
ONS exists: Local port 6100, remote port 6200, EM port 2016
[grid@hferp71:/home/grid]$[grid@hfcwdb66:/home/grid]$srvctl config nodeapps
Network 1 exists
Subnet IPv4: 172.30.21.0/255.255.255.0/enp0s3, static
Subnet IPv6:
Ping Targets:
Network is enabled
Network is individually enabled on nodes:
Network is individually disabled on nodes:
VIP exists: network number 1, hosting node hfcwdb66
VIP Name: hfcwdb66vip
VIP IPv4 Address: 172.30.21.138
VIP IPv6 Address:
VIP is enabled.
VIP is individually enabled on nodes:
VIP is individually disabled on nodes:
VIP exists: network number 1, hosting node hfcwdb67
VIP Name: hfcwdb67vip
VIP IPv4 Address: 172.30.21.139
VIP IPv6 Address:
VIP is enabled.
VIP is individually enabled on nodes:
VIP is individually disabled on nodes:
ONS exists: Local port 6100, remote port 6200, EM port 2016, Uses SSL true
ONS is enabled
ONS is individually enabled on nodes:
ONS is individually disabled on nodes:
[grid@hfcwdb66:/home/grid]$
监听查看
查看监听状态
srvctl status listener[grid@hferp71:/home/grid]$srvctl status listener
Listener LISTENER is enabled
Listener LISTENER is running on node(s): hferp71,hferp72[grid@hfcwdb66:/home/grid]$srvctl status listener
Listener LISTENER is enabled
Listener LISTENER is running on node(s): hfcwdb67,hfcwdb66
查看监听配置
srvctl config listener -a[grid@hferp71:/home/grid]$srvctl config listener -a
Name: LISTENER
Network: 1, Owner: grid
Home: <CRS home>/oracle/app/11.2.0/grid on node(s) hferp71,hferp72
End points: TCP:1521
[grid@hferp71:/home/grid]$[grid@hfcwdb66:/home/grid]$srvctl config listener -a
Name: LISTENER
Type: Database Listener
Network: 1, Owner: grid
Home: <CRS home>/oracle/app/19c/grid on node(s) hfcwdb67,hfcwdb66
End points: TCP:1521
Listener is enabled.
Listener is individually enabled on nodes:
Listener is individually disabled on nodes:
[grid@hfcwdb66:/home/grid]$
查看scan监听器的状态
[grid@hferp71:/home/grid]$srvctl config scan_listener
SCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521
[grid@hferp71:/home/grid]$[grid@hfcwdb66:/home/grid]$srvctl config scan_listener
SCAN Listeners for network 1:
Registration invited nodes:
Registration invited subnets:
Endpoints: TCP:1521
SCAN Listener LISTENER_SCAN1 exists
SCAN Listener is enabled.
[grid@hfcwdb66:/home/grid]$
查看scan网络配置
srvctl status scan_listener[grid@hferp71:/home/grid]$srvctl status scan_listener
SCAN Listener LISTENER_SCAN1 is enabled
SCAN listener LISTENER_SCAN1 is running on node hferp71
[grid@hferp71:/home/grid]$[grid@hfcwdb66:/home/grid]$srvctl status scan_listener
SCAN Listener LISTENER_SCAN1 is enabled
SCAN listener LISTENER_SCAN1 is running on node hfcwdb66
[grid@hfcwdb66:/home/grid]$
查看vip网络
srvctl status vip -n tbase1[grid@hferp71:/home/grid]$srvctl status vip -n hferp71
VIP hferp71vip is enabled
VIP hferp71vip is running on node: hferp71
[grid@hferp71:/home/grid]$srvctl status vip -n hferp72
VIP hferp72vip is enabled
VIP hferp72vip is running on node: hferp72[grid@hfcwdb66:/home/grid]$srvctl status vip -n hfcwdb66
VIP 172.30.21.138 is enabled
VIP 172.30.21.138 is running on node: hfcwdb66
[grid@hfcwdb66:/home/grid]$srvctl status vip -n hfcwdb67
VIP 172.30.21.139 is enabled
VIP 172.30.21.139 is running on node: hfcwdb67
数据库查看
数据库名称
srvctl config database[grid@hferp71:/home/grid]$srvctl config database
hferpdb[grid@hfcwdb66:/home/grid]$srvctl config database
hfcwdb
数据库状态
srvctl status database -d hferpdb -f -v[grid@hferp71:/home/grid]$srvctl status database -d hferpdb -f -v
Instance hferpdb1 is running on node hferp71. Instance status: Open.
Instance hferpdb2 is running on node hferp72. Instance status: Open.
检查指定实例的状态
srvctl status instance -d hferpdb -i hferpdb1[grid@hferp71:/home/grid]$srvctl status instance -d hferpdb -i hferpdb1
Instance hferpdb1 is running on node hferp71
查看数据库配置
srvctl config database -d hferpdb -a[grid@hferp71:/home/grid]$srvctl config database -d hferpdb -a
Database unique name: hferpdb
Database name: hferpdb
Oracle home: /oracle/app/oracle/product/11.2.0/db_1
Oracle user: oracle
Spfile: +DGSYSTEM/hferpdb/spfilehferpdb.ora
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: hferpdb
Database instances: hferpdb1,hferpdb2
Disk Groups: DGSYSTEM,DGDATA01
Mount point paths:
Services:
Type: RAC
Database is enabled
Database is administrator managed
[grid@hferp71:/home/grid]$[grid@hfcwdb66:/home/grid]$srvctl config database -d hfcwdb -a
Database unique name: hfcwdb
Database name: hfcwdb
Oracle home: /oracle/app/oracle/product/19c/db_1
Oracle user: oracle
Spfile: +DGSYSTEM/HFCWDB/PARAMETERFILE/spfile.278.1130977937
Password file: +DGSYSTEM/HFCWDB/PASSWORD/pwdhfcwdb.266.1130972971
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools:
Disk Groups: DGSYSTEM,DGDATA01
Mount point paths:
Services:
Type: RAC
Start concurrency:
Stop concurrency:
Database is enabled
Database is individually enabled on nodes:
Database is individually disabled on nodes:
OSDBA group: dba
OSOPER group: oper
Database instances: hfcwdb1,hfcwdb2
Configured nodes: hfcwdb66,hfcwdb67
CSS critical: no
CPU count: 0
Memory target: 0
Maximum memory: 0
Default network number for database services:
Database is administrator managed
[grid@hfcwdb66:/home/grid]$
ASM查询
srvctl status asm
srvctl status asm -a[grid@hferp71:/home/grid]$srvctl status asm
ASM is running on hferp71,hferp72
[grid@hferp71:/home/grid]$srvctl status asm -a
ASM is running on hferp71,hferp72
ASM is enabled.[grid@hfcwdb66:/home/grid]$srvctl status asm
ASM is running on hfcwdb67,hfcwdb66
[grid@hfcwdb66:/home/grid]$srvctl status asm -a
ASM is running on hfcwdb67,hfcwdb66
ASM is enabled.
ASM instance +ASM1 is running on node hfcwdb66
Number of connected clients: 2
Client names: hfcwdb1:hfcwdb:hfcwdbcluster hfcwdb66:_OCR:hfcwdbcluster
ASM instance +ASM2 is running on node hfcwdb67
Number of connected clients: 2
Client names: hfcwdb2:hfcwdb:hfcwdbcluster hfcwdb67:_OCR:hfcwdbcluster
[grid@hfcwdb66:/home/grid]$
查看asm配置
srvctl config asm -a[grid@hferp71:/home/grid]$srvctl config asm -a
ASM home: /oracle/app/11.2.0/grid
ASM listener: LISTENER
ASM is enabled.
[grid@hferp71:/home/grid]$[grid@hfcwdb66:/home/grid]$srvctl config asm -a
ASM home: <CRS home>
Password file: +dggrid01/orapwASM
Backup of Password file: +dggrid01/orapwASM_backup
ASM listener: LISTENER
ASM is enabled.
ASM is individually enabled on nodes:
ASM is individually disabled on nodes:
ASM instance count: 3
Cluster ASM listener: ASMNET1LSNR_ASM
[grid@hfcwdb66:/home/grid]$
启动实例
grid@hefei1:/home/grid]$srvctl stop instance -node hefei1 -db hefeidb
grid@hefei1:/home/grid]$srvctl start instance -node hefei1 -db hefeidb
grid@hefei1:/home/grid]$srvctl status instance -node hefei1 -db hefeidb
监听相关
$ srvctl-h
$ srvctl start listener
$srvctl stop listener
$srvctl start listener-I mylistener #启动指定的监听名称
$ srvctl status listener
手动漂移scan ip
[grid@rac1 ~]$ srvctl relocate scan_listener -i 1 -n rac1
手工漂移vip
[grid@hfdb30:/home/grid]$srvctl relocate vip -i hfdb30 -n hfdb31 -f -vVIP was relocated successfully.
[grid@rac1 ~]$ srvctl relocate vip -i rac1 -n rac1 -f -v
VIP was relocated successfully
添加新的本地监听
srvctl add listener -l listener_1522 -p 1522 -o $ORACLE_HOME -k 1
srvctl start listener -l listener_1522
scan监听增加新的监听端口
srvctl modify scan_listener -p 1521,1522srvctl modify scan_listener -u
srvctl stop scan_listener
srvctl start scan_listener
注册数据库信息
[oracle@hfcwdb66:/oracle/app/oracle/product/19c/db_1/dbs]$srvctl add database -d hfzcdb -o /oracle/app/oracle/product/19c/db_1 -p +dgsystem/hfzcdb/parameterfile/spfile.278.1134481697
[oracle@hfcwdb66:/oracle/app/oracle/product/19c/db_1/dbs]$srvctl add instance -d hfzcdb -i hfzcdb1 -n hfcwdb66                                 
[oracle@hfcwdb66:/oracle/app/oracle/product/19c/db_1/dbs]$srvctl add instance -d hfzcdb -i hfzcdb2 -n hfcwdb67
[oracle@hfcwdb66:/oracle/app/oracle/product/19c/db_1/dbs]$srvctl enable database -d hfzcdb
PRCC-1010 : hfzcdb was already enabled
PRCR-1002 : Resource ora.hfzcdb.db is already enabled
[oracle@hfcwdb66:/oracle/app/oracle/product/19c/db_1/dbs]$srvctl enable instance -d hfzcdb -i hfzcdb1
[oracle@hfcwdb66:/oracle/app/oracle/product/19c/db_1/dbs]$srvctl enable instance -d hfzcdb -i hfzcdb2
[oracle@hfcwdb66:/oracle/app/oracle/product/19c/db_1/dbs]$--启动数据库【两个数据库一起启动】
[oracle@hfcwdb66:/oracle/app/oracle/product/19c/db_1/dbs]$srvctl start database -d hfzcdb

crsctl命令-集群层

crsctl(Cluster Ready Services Control )是一个命令行工具,可以用于管理 Oracle Clusterware daemons(何谓 daemon,又名守护进程、后台进程,名称以字母括 Cluster Synchronization Services (CSS), Cluster-Ready Services (CRS), and Event Manager (EVM)。

通过 CRSCTL,可以启动或停止 Oracle Cluster,确定 Oracle Clusterware 的当前状态。

cd $GRID_HOME

grid的安装目录

启停集群: (需要root用户)
crsctl stop crs
crsctl start crs
开启/关闭集群自动启动
crsctl disable crs
crsctl enable crs
查看集群名字:显示当前集群的名称。
cemutlo -n 
olsnodes -c[grid@hferp71:/home/grid]$cemutlo -n
hferpcluster
[grid@hferp71:/home/grid]$
[grid@hferp71:/home/grid]$olsnodes -c
hferpcluster[grid@hfcwdb66:/home/grid]$cemutlo -n
hfcwdbcluster
[grid@hfcwdb66:/home/grid]$
[grid@hfcwdb66:/home/grid]$olsnodes -c
hfcwdbcluster
查看集群版本

查询当前集群软件版本和主机名。

crsctl query crs softwareversion hostname [grid@hferp71:/home/grid]$ crsctl query crs softwareversion hferp72
Oracle Clusterware version on node [hferp72] is [11.2.0.4.0][grid@hfcwdb66:/home/grid]$crsctl query crs softwareversion hfcwdb66
Oracle Clusterware version on node [hfcwdb66] is [19.0.0.0.0]
查看集群组件状态

显示所有集群组件的状态。

crsctl stat res -t[grid@hferp71:/home/grid]$crsctl stat res -t
--------------------------------------------------------------------------------
NAME           TARGET  STATE        SERVER                   STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DGDATA01.dgONLINE  ONLINE       hferp71ONLINE  ONLINE       hferp72
ora.DGGRID1.dgONLINE  ONLINE       hferp71ONLINE  ONLINE       hferp72
ora.DGGRID2.dgONLINE  ONLINE       hferp71ONLINE  ONLINE       hferp72
ora.DGRECOVERY.dgONLINE  ONLINE       hferp71ONLINE  ONLINE       hferp72
ora.DGSYSTEM.dgONLINE  ONLINE       hferp71ONLINE  ONLINE       hferp72
ora.LISTENER.lsnrONLINE  ONLINE       hferp71ONLINE  ONLINE       hferp72
ora.asmONLINE  ONLINE       hferp71                  StartedONLINE  ONLINE       hferp72                  Started
ora.gsdOFFLINE OFFLINE      hferp71OFFLINE OFFLINE      hferp72
ora.net1.networkONLINE  ONLINE       hferp71ONLINE  ONLINE       hferp72
ora.onsONLINE  ONLINE       hferp71ONLINE  ONLINE       hferp72
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr1        ONLINE  ONLINE       hferp71
ora.cvu1        ONLINE  ONLINE       hferp71
ora.hferp71.vip1        ONLINE  ONLINE       hferp71
ora.hferp72.vip1        ONLINE  ONLINE       hferp72
ora.hferpdb.db1        ONLINE  ONLINE       hferp71                  Open2        ONLINE  ONLINE       hferp72                  Open
ora.oc4j1        ONLINE  ONLINE       hferp71
ora.scan1.vip1        ONLINE  ONLINE       hferp71
[grid@hferp71:/home/grid]$

检查Cluster Ready Services(CRS)的状态。

crsctl check crs[grid@hferp71:/home/grid]$crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online[grid@hfcwdb66:/home/grid]$crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
[grid@hfcwdb66:/home/grid]$

检查Cluster Synchronization Services Daemon(CSSD)的状态。

crsctl check cssd[grid@hferp71:/home/grid]$crsctl check cssd
CRS-272: This command remains for backward compatibility only
Cluster Synchronization Services is online[grid@hfcwdb66:/home/grid]$crsctl check cssd
CRS-272: This command remains for backward compatibility only
Cluster Synchronization Services is online
[grid@hfcwdb66:/home/grid]$

检查Cluster Ready Services Daemon(CRSD)的状态。

crsctl check crsd[grid@hferp71:/home/grid]$crsctl check crsd
CRS-272: This command remains for backward compatibility only
Cluster Ready Services is online
[grid@hferp71:/home/grid]$

检查Event Manager Daemon(EVM)的状态。

crsctl check evmd[grid@hferp71:/home/grid]$crsctl check evmd
CRS-272: This command remains for backward compatibility only
Event Manager is online
查看OCR位置

检查并显示OCR(Oracle Cluster Registry)的位置。

ocrcheck[grid@hferp71:/home/grid]$ocrcheck
Status of Oracle Cluster Registry is as follows :Version                  :          3Total space (kbytes)     :     262120Used space (kbytes)      :       2996Available space (kbytes) :     259124ID                       :  216145073Device/File Name         :   +dggrid1Device/File integrity check succeededDevice/File Name         :   +dggrid2Device/File integrity check succeededDevice/File not configuredDevice/File not configuredDevice/File not configuredCluster registry integrity check succeededLogical corruption check bypassed due to non-privileged user[grid@hfcwdb66:/home/grid]$ocrcheck
Status of Oracle Cluster Registry is as follows :Version                  :          4Total space (kbytes)     :     491684Used space (kbytes)      :      84268Available space (kbytes) :     407416ID                       :  215749915Device/File Name         :  +DGGRID01Device/File integrity check succeededDevice/File Name         :  +DGGRID02Device/File integrity check succeededDevice/File not configuredDevice/File not configuredDevice/File not configuredCluster registry integrity check succeededLogical corruption check bypassed due to non-privileged user
查看集群私网信息

显示集群私网的信息,包括名称和IP地址。

oifcfg getif[grid@hfcwdb66:/home/grid]$oifcfg getif
enp0s3  172.30.21.0  global  public
enp0s8  10.10.1.0  global  cluster_interconnect,asm
查看所有crs资源状态

crsctl stat res -t

显示所有CRS资源的状态,并包括初始化状态

crsctl stat res -t -init[grid@hfcwdb66:/home/grid]$crsctl stat res -t -init
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.asm1        ONLINE  ONLINE       hfcwdb66                 STABLE
ora.cluster_interconnect.haip1        ONLINE  ONLINE       hfcwdb66                 STABLE
ora.crf1        ONLINE  ONLINE       hfcwdb66                 STABLE
ora.crsd1        ONLINE  ONLINE       hfcwdb66                 STABLE
ora.cssd1        ONLINE  ONLINE       hfcwdb66                 STABLE
ora.cssdmonitor1        ONLINE  ONLINE       hfcwdb66                 STABLE
ora.ctssd1        ONLINE  ONLINE       hfcwdb66                 ACTIVE:0,STABLE
ora.diskmon1        OFFLINE OFFLINE                               STABLE
ora.evmd1        ONLINE  ONLINE       hfcwdb66                 STABLE
ora.gipcd1        ONLINE  ONLINE       hfcwdb66                 STABLE
ora.gpnpd1        ONLINE  ONLINE       hfcwdb66                 STABLE
ora.mdnsd1        ONLINE  ONLINE       hfcwdb66                 STABLE
ora.storage1        ONLINE  ONLINE       hfcwdb66                 STABLE
--------------------------------------------------------------------------------
查看集群active version

查询集群的活动版本。

crsctl query crs activeversion[grid@hfcwdb66:/home/grid]$crsctl query crs activeversion
Oracle Clusterware active version on the cluster is [19.0.0.0.0]
启停HAS
crsctl stop has
crsctl start has[grid@hferp71:/home/grid]$crsctl check has
CRS-4638: Oracle High Availability Services is online[grid@hferp71:/home/grid]$crsctl check cluster
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online[grid@hferp71:/home/grid]$crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
查看远程节点CRS状态
crsctl check cluster[grid@hferp71:/home/grid]$crsctl check cluster
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
查看voting disk超时(disktimeout)
crsctl get css disktimeout[grid@hfcwdb66:/home/grid]$crsctl get css disktimeout
CRS-4678: Successful get disktimeout 200 for Cluster Synchronization Services.
查看私网延迟(Misscount)
crsctl get css misscount[grid@hferp71:/home/grid]$crsctl get css misscount
CRS-4678: Successful get misscount 30 for Cluster Synchronization Services.
移动voting disk到别的磁盘组
crsctl replace votedisk +OCRVD
新增votedisk
crsctl add css votedisk 
删除votedisk
crsctl delete css votedisk 
查看ocr备份信息
ocrconfig -showbackup[grid@hferp71:/home/grid]$ocrconfig -showbackuphferp71     2024/11/26 15:02:35     /oracle/app/11.2.0/grid/cdata/hferpcluster/backup00.ocr
hferp72     2024/08/30 08:41:10     /oracle/app/11.2.0/grid/cdata/hferpcluster/backup01.ocr
hferp72     2024/08/30 04:41:08     /oracle/app/11.2.0/grid/cdata/hferpcluster/backup02.ocr
hferp71     2024/11/26 15:02:35     /oracle/app/11.2.0/grid/cdata/hferpcluster/day.ocr
hferp71     2024/11/26 15:02:35     /oracle/app/11.2.0/grid/cdata/hferpcluster/week.ocr
PROT-25: Manual backups for the Oracle Cluster Registry are not available[grid@hfcwdb66:/home/grid]$ocrconfig -showbackuphfcwdb66     2024/11/26 17:31:29     +dggrid01:/hfcwdbcluster/OCRBACKUP/backup00.ocr.264.1186075881     1476904475
hfcwdb66     2024/08/02 14:28:43     +dggrid01:/hfcwdbcluster/OCRBACKUP/backup01.ocr.263.1175956113     1476904475
hfcwdb66     2024/08/02 10:28:31     +dggrid01:/hfcwdbcluster/OCRBACKUP/backup02.ocr.262.1175941701     1476904475
hfcwdb66     2024/11/26 17:31:29     +dggrid01:/hfcwdbcluster/OCRBACKUP/day.ocr.259.1186075891     1476904475
hfcwdb66     2024/11/26 17:31:29     +dggrid01:/hfcwdbcluster/OCRBACKUP/week.ocr.260.1186075893     1476904475
PROT-25: Manual backups for the Oracle Cluster Registry are not available
查看集群是否为standard或者flex ASM
crsctl get cluster mode status[grid@hfcwdb66:/home/grid]$crsctl get cluster mode status
Cluster is running in "flex" mode
查看crs配置
crsctl config crs 
单节点集群has命令
crsctl check has
crsctl config has
crsctl disable has
crsctl enable has
crsctl query has releaseversion
crsctl query has softwareversion
crsctl start has
crsctl stop has

两者的区别

  • srvctl:

    • srvctl命令用于管理和配置数据库实例、服务(Service)、监听器(Listener)等数据库相关组件。它提供了一系列用于启动、停止、迁移、重启等操作的命令。
  • crsctl:

    • crsctl命令用于管理和配置Oracle Clusterware,它是Oracle RAC环境中的基础软件组件。crsctl可以用于管理集群节点、资源(Resource)、服务、OCR(Oracle Cluster Registry)等集群组件。
使用权限:
  • srvctl:

    • srvctl命令需要在数据库管理员(DBA)用户下执行,通常是在数据库服务器上执行。
  • crsctl:

    • crsctl命令需要在root用户下执行,因为它需要对操作系统层面的资源进行管理和配置。
使用场景:
  • srvctl:

    • srvctl主要用于管理和配置数据库实例、服务和监听器等数据库相关组件。它可以用于启动、停止、迁移数据库实例,管理服务的路由和负载均衡,以及管理监听器的配置和状态等。
  • crsctl:

    • crsctl主要用于管理和配置Oracle Clusterware,它可以用于管理集群节点、资源和服务等。它可以用于启动、停止、重启集群节点,管理资源的状态和配置,以及管理集群服务的状态和配置等。

failover和Load Balance

Failover(故障切换):

​ Failover是指在Oracle RAC中,当一个节点(服务器)发生故障或不可用时,自动将该节点上的资源切换到其他可用节点上。这样可以保证系统的高可用性和连续性。Failover是通过Oracle Clusterware来实现的,它会监测节点的状态,并在发现节点故障时自动触发故障切换操作。在Failover过程中,客户端的连接会自动重新定向到新的可用节点,以确保应用程序的持续运行。

FAILOVER的两种方式:

一种称做连接时的FAILOVER,它是指当用户按照tnsnames.ora文件中的配置信息,尝试去连接一个指定的监听器失败时,将自动连接另外一个地址。(需要设定:FAILOVER=on)

另一种FAILOVER方式发生在会话连接已经建立之后,此时发生的FAILOVER被称作TAF,当用户在一个实例上操作失败时,允许重新连接到另一个实例上继续进行操作。

  • TAF有两种工作模式:SESSION模式和SELECT模式

    • SESSION模式 : 当会话在某个实例上操作失败时,TAF可以重新创建会话并连接到新的实例上。

      hefeidb = 
      (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = hfeduscan)(PORT = 1521)) (LOAD_BALANCE = yes) (FAILOVER = ON) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = hefeidb) (FAILOVER_MODE = (TYPE = SESSION)  #session(METHOD = BASIC) ) ) ) 
      
    • SELECT模式 : 如果一个正在执行的查询在某个实例上发生故障,TAF将会在另一个实例上重新执行这个查询。

      hefeidb = 
      (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = hfeduscan)(PORT = 1521)) (LOAD_BALANCE = yes) (FAILOVER = ON) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = hefeidb) (FAILOVER_MODE = (TYPE = SELECT) #select (METHOD = BASIC)) ) 
      ) 
      

Load Balancing(负载均衡):

​ Load Balancing是指在Oracle RAC中,将客户端的请求均匀地分配到不同的节点上,以实现负载的均衡。这样可以提高系统的性能和可扩展性。Load Balancing是通过Oracle Net Services来实现的,它会根据不同的负载均衡策略(如轮询、连接数、响应时间等)将客户端的请求分发到不同的节点上。通过负载均衡,可以有效地利用集群中的资源,避免某个节点过载而导致性能下降。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/62669.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据资产管理是什么?为什么重要?核心组成部分(分类分级、登记追踪、质量管理、安全合规)、实施方法、未来趋势、战略意义

文章目录 一、引言&#xff1a;数据的新时代二、什么是数据资产管理&#xff1f;2.1 定义2.2 核心功能 三、为什么数据资产管理至关重要&#xff1f;3.1 面对的数据管理挑战 四、数据资产管理的核心组成部分4.1 数据分类与分级4.2 数据资产登记与追踪4.3 数据质量管理4.4 数据安…

C++高阶算法[汇总]

&#xff08;一&#xff09;高精度算法概述 高精度算法是指能够处理超出常规数据类型表示范围的数值的算法。在 C 中&#xff0c;标准数据类型通常有固定的位数和精度限制&#xff0c;而高精度算法可以解决大数运算、金融计算和科学计算等领域的问题。 &#xff08;二&#x…

springboot365高校疫情防控web系统(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;高校疫情防控的设计与实现 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为…

Electron实现打开子窗口加载vue路由指定的组件页面白屏

白屏有两种情况&#xff1a; Vue项目使用的history路由的话就会显示空白&#xff0c;加载不出来路由&#xff0c;也不能跳转路由 这种情况看我上一篇文章Electron vue3 打包之后不能跳转路由-CSDN博客 Electron中已经能正常加载页面跳转路由&#xff0c;但是创建子窗口加载子页…

智能探针技术:实现可视、可知、可诊的主动网络运维策略

网络维护的重要性 网络运维是确保网络系统稳定、高效、安全运行的关键活动。在当今这个高度依赖信息技术的时代&#xff0c;网络运维的重要性不仅体现在技术层面&#xff0c;更关乎到企业运营的方方面面。网络运维具有保障网络的稳定性、提升网络运维性能、降低企业运营成本等…

泷羽sec-shell脚本(全) 学习笔记

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…

鸿蒙学习使用模拟器运行应用(开发篇)

文章目录 1、系统类型和运行环境要求2、创建模拟器3、启动和关闭模拟器4、安装应用程序包和上传文件QA:在Windows电脑上启动模拟器&#xff0c;提示未开启Hyper-V 1、系统类型和运行环境要求 Windows 10 企业版、专业版或教育版及以上&#xff0c;且操作系统版本不低于10.0.18…

MySQL 利用JSON特性完成复杂数据存储和查询

情景描述 下面一个应用场景&#xff0c;是数据库需要存储文库类的信息。文库分多个种类&#xff0c;比如图书类、论文类等多个类别&#xff0c;每个类别有不同的字段信息。 常规处理方法 要在单张表中去存储不同种类的文库数据&#xff0c;表就会变成这样的结构&#xff1a; …

【数据结构】哈希 ---万字详解

unordered系列关联式容器 在C98中&#xff0c;STL提供了底层为红黑树结构的一系列关联式容器&#xff0c;在查询时效率可达到log_2 N&#xff0c;即最差情况下需要比较红黑树的高度次&#xff0c;当树中的节点非常多时&#xff0c;查询效率也不理想。最好 的查询是&#xff0c…

【Redis篇】Hash的认识以及相关命令操作

目录 前言 基本命令 HSET HGET HEXISTS HDEL HKEYS HVALS HGETALL HMGET HLEN HSETNX HINCRBY HINCRBYFLOAT 内部编码 高内聚&#xff0c;低耦合 前言 可以看出&#xff1a; Redis 的 Hash 是一个键&#xff08;key&#xff09;下包含多个字段&#xff08;field…

可解释机器学习 | Python实现LGBM-SHAP可解释机器学习

机器学习 | Python实现GBDT梯度提升树模型设计 目录 机器学习 | Python实现GBDT梯度提升树模型设计基本介绍模型使用参考资料基本介绍 LightGBM(Light Gradient Boosting Machine)是一种基于决策树的梯度提升框架,是一种高效的机器学习模型。SHAP(SHapley Additive exPlan…

mysql--二进制安装编译安装yum安装

二进制安装 创建用户和组 [rootlocalhost ~]# groupadd -r -g 306 mysql [rootlocalhost ~]# useradd -r -g 306 -u 306 -d /data/mysql mysql 创建文件夹并添加所属文件用户和组 [rootlocalhost ~]# mkdir -p /data/mysql [rootlocalhost ~]# chown mysql:mysql /data/mysql …

大模型开发和微调工具Llama-Factory-->WebUI

WebUI LLaMA-Factory 支持通过 WebUI 零代码微调大模型。 通过如下指令进入 WebUI llamafactory-cli webui# 如果是国内&#xff0c; # USE_MODELSCOPE_HUB 设为 1&#xff0c;表示模型从 ModelScope 魔搭社区下载。 # 避免从 HuggingFace 下载模型导致网速不畅 USE_MODELSC…

【WPS】【EXCEL】将单元格中字符按照分隔符拆分按行填充到其他单元格

问题&#xff1a;实现如下图的效果 解答&#xff1a; 一、函数 IFERROR(TRIM(MID(SUBSTITUTE($A$2,",",REPT(" ",LEN($A$2))),(ROW(A1)-1)*LEN($A$2)1,LEN($A$2))),"") 二、在单元格C2中填写如下函数 三、全选要填充的单元格并且按CTRLD 函数…

Java有关数组的相关问题

Java中的栈和堆的含义 栈 存储局部变量&#xff1a;栈主要用于存储方法中的局部变量&#xff0c;包括基本数据类型&#xff08;int、double、boolean等&#xff09;和对象的引用&#xff08;不包含对象本身&#xff09;。 遵循后进先出原则&#xff1a;当一个方法被调用时&…

提升阅读体验,Balabolka让文字跃然“声”上

作为一个专业的语音合成工具&#xff0c;Balabolka为用户提供了全方位的文本朗读解决方案。这款软件不仅可以将各类文本实时转换为清晰的语音输出&#xff0c;还能将转换后的音频内容导出为多种主流格式。它强大的兼容性使其能够处理各类电子书和文档格式&#xff0c;让用户可以…

解决`-bash: ./configure:/bin/sh^M:解释器错误: 没有那个文件或目录`的问题

解决`-bash: ./configure:/bin/sh^M:解释器错误: 没有那个文件或目录`的问题 一、错误原因分析二、解决方法方法一:使用`dos2unix`工具方法二:使用`sed`命令方法三:使用`tr`命令方法四:在文本编辑器中转换方法五:在Windows系统中使用适当的工具三、预防措施四、总结在使…

Flink双流Join

在离线 Hive 中&#xff0c;我们经常会使用 Join 进行多表关联。那么在实时中我们应该如何实现两条流的 Join 呢&#xff1f;Flink DataStream API 为我们提供了3个算子来实现双流 join&#xff0c;分别是&#xff1a; join coGroup intervalJoin 下面我们分别详细看一下这…

Python生日祝福烟花

1. 实现效果 2. 素材加载 2个图片和3个音频 shoot_image pygame.image.load(shoot(已去底).jpg) # 加载拼接的发射图像 flower_image pygame.image.load(flower.jpg) # 加载拼接的烟花图 烟花不好去底 # 调整图像的像素为原图的1/2 因为图像相对于界面来说有些大 shoo…

26页PDF | 数据中台能力框架及评估体系解读(限免下载)

一、前言 这份报告详细解读了数据中台的发展历程、核心概念、能力框架及成熟度评估体系。它从阿里巴巴的“大中台&#xff0c;小前台”战略出发&#xff0c;探讨了数据中台如何通过整合企业内部的数据资源和能力&#xff0c;加速业务迭代、降低成本&#xff0c;并推动业务增长…