Oracle RAC OCR维护操作总结
本文包含OCR磁盘组替换;OCR文件的备份、损坏、恢复;Votding Disk文件的损坏、恢复。
一、19C rac集群,OCR磁盘组替换
替换计划:将CRS磁盘组(本案例中OCR文件存放在CRS磁盘组中)替换为 CRSDG磁盘组
0、root设置环境变量,方便后续执行GI集群操作
两个节点都执行
echo "export PATH=$PATH:/u01/app/crs/bin" >>/etc/profile
退出重新登录即可生效!
备注:
/u01/app/crs/bin请以实际环境的目录代替
su - grid
which crsctl
/u01/app/crs/bin/crsctl
其中/u01/app/crs/bin,就是需要加入环境变量的目录
1、现有情况收集(在替换OCR磁盘之前,我们先确认需要迁移的OCR磁盘组存储的对象)
19c集群,OCR磁盘组中,主要包含五类文件
1)OCR配置文件
2)OCR 备份文件(12c之后新增变化)
3)votedisk心跳盘
4)asm实例的spfile参数文件
5)asm实例的密码文件(12c之后新增变化)
6)asm实例的密码文件备份(12c之后新增变化)
查看方法
ocrcheck
crsctl query css votedisk
ocrconfig -showbackup
spfile参数文件的查看方法
方法一
su - grid
cat $ORACLE_HOME/gpnp/`hostname`/profiles/peer/profile.xml |grep -i spfile
方法二
sqlplus "/as sysasm"
show parameter spfile;
asm实例的密码文件查看
asmcmd pwget --asm
asm实例密码文件的备份查看
srvctl config asm
本案例中的具体情况
1)
[root@host61rac1 ~]# ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 4
Total space (kbytes) : 901284
Used space (kbytes) : 84208
Available space (kbytes) : 817076
ID : 2060429423
Device/File Name : +CRS --可以看到存放在CRS磁盘组中
Device/File integrity check succeeded
Device/File not configured
Device/File not configured
Device/File not configured
Device/File not configured
Cluster registry integrity check succeeded
Logical corruption check succeeded
2)
[root@host61rac1 ~]# crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 006aa14f8afe4f27bf9279e84d32e4d2 (/dev/asm-diskb) [CRS]
Located 1 voting disk(s).
3)
[root@host61rac1 ~]# ocrconfig -showbackup
PROT-24: Auto backups for the Oracle Cluster Registry are not available
host62rac2 2026/07/21 09:17:48 +CRS:/raccluster/OCRBACKUP/backup_20260721_091748.ocr.259.1239182269 1191252804
host62rac2 2026/07/21 09:13:21 +CRS:/raccluster/OCRBACKUP/backup_20260721_091321.ocr.258.1239182001 1191252804
4)
sqlplus "/as sysasm"
show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +CRS/raccluster/ASMPARAMETERFILE/registry.253.1238776455
5)
[root@host61rac1 ~]# asmcmd pwget --asm
+CRS/orapwASM
6)[grid@host61rac1 ~]$ srvctl config asm
ASM home: <CRS home>
Password file: +CRSDG/orapwASM
Backup of Password file: +CRS/orapwASM_backup
ASM listener: LISTENER
ASM instance count: 2
Cluster ASM listener: ASMNET1LSNR_ASM
2、备份OCR中的内容
备份本地的集群配置文件OLR
备份OCR集群共享配置文件,如果备份的目录在OCR自己的diskgroup,要先修改到其他asm目录(或者复制到文件系统)
备份asm实例的spfile参数文件
备份asm实例密码文件
具体方法
1)备份OLR,两个节点都执行
ocrconfig -local -showbackup
ocrconfig -local -manualbackup
ocrconfig -local -showbackup
2)备份OCR集群共享配置文件
ocrconfig -showbackup
ocrconfig -manualbackup
ocrconfig -copy +CRS:/raccluster/OCRBACKUP/backup_20260721_103239.ocr.260.1239186759 /home/grid/backup00.ocr
上面命令,将备份在磁盘组中的ocr文件,复制到本地文件系统,实现异地存放
ocrconfig -export /tmp/orcexp.txt //同时完成一次ocr文件的逻辑备份
3)备份asm实例的spfile参数文件
su - grid
sqlplus "/as sysasm"
create pfile='/home/grid/asmpfile.ora' from spfile;
验证:
[grid@host61rac1 ~]$ ls -ltr asmpfile.ora
-rw-r--r-- 1 grid oinstall 257 Jul 21 10:39 asmpfile.ora
4)备份asm实例密码文件
asmcmd pwcopy +CRS/orapwASM /home/grid/asmpwd.bak
验证:
[grid@host61rac1 ~]$ ls -ltr asmpwd*
-rw-r----- 1 grid oinstall 3072 Jul 21 10:42 asmpwd.bak
3、OCR磁盘组替换
1、创建新的OCR磁盘组,计划替换现有的磁盘组
su - grid
sqlplus / as sysasm
CREATE DISKGROUP CRSDG NORMAL REDUNDANCY DISK '/dev/asm-diskc','/dev/asm-diskd','/dev/asm-diske' ATTRIBUTE 'compatible.asm'='19.0.0.0.0','au_size'='1M';
在所有节点挂载:
srvctl start diskgroup -diskgroup crsdg
2、添加CRSDG到ocrconfig
ocrconfig -add +crsdg
3、检查
ocrcheck
检查结果,可以看到如下
Device/File Name : +CRS
Device/File integrity check succeeded
Device/File Name : +CRSDG
Device/File integrity check succeeded
4、在线替换ocr config集群配置文件磁盘组路径
ocrconfig -delete +CRS
ocrcheck
5、在线替换votedisk心跳盘
crsctl replace votedisk +crsdg
crsctl query css votedisk
运行过程
[root@host61rac1 ~]# crsctl replace votedisk +crsdg
crsctl query css votedisk
Successful addition of voting disk 34208a5c622d4ffabf43e926d1465b94.
Successful addition of voting disk 2ddea94b0ffe4fbebfafadf285f0ade2.
Successful addition of voting disk cdea25b778d74fc0bf7ddc6a43b18cd5.
Successful deletion of voting disk 006aa14f8afe4f27bf9279e84d32e4d2.
Successfully replaced voting disk group with +crsdg.
CRS-4266: Voting file(s) successfully replaced
[root@host61rac1 ~]# crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 34208a5c622d4ffabf43e926d1465b94 (/dev/asm-diskc) [CRSDG]
2. ONLINE 2ddea94b0ffe4fbebfafadf285f0ade2 (/dev/asm-diskd) [CRSDG]
3. ONLINE cdea25b778d74fc0bf7ddc6a43b18cd5 (/dev/asm-diske) [CRSDG]
6、迁移asm实例的参数文件,需要停集群启动导独占模式(如果这里不重启集群,那么asm实例的spfile文件,需要下次重启才会生效!)
1)启动到独占模式
crsctl stop crs -f (两个节点都需要停止)
crsctl start crs -excl -nocrs
2)将asm实例的参数文件生成到新的CRSDG里面
sqlplus "/as sysasm"
create spfile='+CRSDG' from pfile='/home/grid/asmpfile.ora';
或者通过如下方法:
asmcmd spget
asmcmd spmove +CRS/raccluster/ASMPARAMETERFILE/registry.253.1238776455 +CRSDG/spfileasm.ora
asmcmd spget
备注:上述两种方法,都需要重启后才能生效!!当前的spfile文件无法删除(asm实例已经启动)
3)新的ASM spfile路径会自动更新到gnpnp profile里面,验证方法:
su - grid
cat $ORACLE_HOME/gpnp/`hostname`/profiles/peer/profile.xml |grep -i spfile
结果包含:SPFile="+CRSDG/raccluster/ASMPARAMETERFILE/registry.253.1239188509" 说明自动更新完毕
备注:另一个节点,在下次启动后,会自动更新这个配置文件!
4)重启集群
crsctl stop crs
crsctl start crs
7、迁移asm实例的密码文件
1)查看当前asm的路径
asmcmd pwget --asm
+CRS/orapwASM
2)通过pwcopy方式迁移到新的磁盘OCRDG路径下
asmcmd pwcopy --asm +CRS/orapwASM +CRSDG/orapwASM
备注:如果提示ASMCMD-8028,则需要添加force
[grid@host61rac1 ~]$ asmcmd pwcopy --asm +CRS/orapwASM +CRSDG/orapwASM
ASMCMD-8028: Password file '+CRS/orapwASM' is associated with 'asm' already. Use the force option.
asmcmd pwcopy --asm +CRS/orapwASM +CRSDG/orapwASM -f
asmcmd pwset --asm +CRSDG/orapwASM -f
3)检查确认
asmcmd pwget --asm
8、更换ASM的密码文件备份
srvctl config asm
srvctl modify asm -pwfilebackup +CRSDG/orapwASM_backup
验证:
srvctl config asm
9、建议修改OCR配置文件的备份路径(建议备份异地存放,不和OCR配置文件存放在同一个磁盘组中)
ocrconfig -showbackuploc
ocrconfig -backuploc +CRSDG
ocrconfig -showbackuploc
10、可选项,建议重启集群,验证有无问题
crsctl stop crs -f
crsctl start crs
##特别是检查spfile文件是否迁移成功
11、可选项,删除旧CRS磁盘组
srvctl disable diskgroup -g CRS
srvctl remove diskgroup -g CRS -f
sqlplus / as sysasm
alter diskgroup CRS dismount;
##除了将执行drop diskgroup的节点之外,其他节点都执行该命令
drop diskgroup CRS FORCE including contents;
至此,OCR配置文件的磁盘组,CRS成功替换为CRSDG磁盘组!
二、11G rac集群,OCR磁盘组替换
替换计划:将CRS磁盘组(本案例中OCR文件存放在CRS磁盘组中)替换为 CRSDG磁盘组
0、root设置环境变量,方便后续执行GI集群操作
两个节点都执行
echo "export PATH=$PATH:/u01/app/crs/bin" >>/etc/profile
退出重新登录即可生效!
备注:
/u01/app/crs/bin请以实际环境的目录代替
su - grid
which crsctl
/u01/app/crs/bin/crsctl
其中/u01/app/crs/bin,就是需要加入环境变量的目录
1、现有情况收集(在替换OCR磁盘之前,我们先确认需要迁移的OCR磁盘组存储的对象)
11G集群,OCR磁盘组中,主要包含三类文件
1)OCR配置文件
2)votedisk心跳盘
3)asm实例的spfile参数文件
查看方法
ocrcheck
crsctl query css votedisk
ocrconfig -showbackup
spfile参数文件的查看方法
方法一
su - grid
cat $ORACLE_HOME/gpnp/`hostname`/profiles/peer/profile.xml |grep -i spfile
方法二
sqlplus "/as sysasm"
show parameter spfile;
本案例中的具体情况
1)
[root@host33rac1 ~]# ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 3
Total space (kbytes) : 262120
Used space (kbytes) : 3016
Available space (kbytes) : 259104
ID : 658120619
Device/File Name : +CRS --存放在CRS磁盘住中
Device/File integrity check succeeded
Device/File not configured
Device/File not configured
Device/File not configured
Device/File not configured
Cluster registry integrity check succeeded
Logical corruption check succeeded
2)
[root@host33rac1 ~]# crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 41d9279f4e5c4fbfbf2bbeb1c20a6666 (/dev/asm-diskb) [CRS]
3)
[root@host33rac1 ~]# ocrconfig -showbackup
host33rac1 2026/07/03 15:38:30 /u01/app/crs/cdata/host-cluster/backup00.ocr
host34rac2 2026/06/26 16:57:11 /u01/app/crs/cdata/host-cluster/backup01.ocr
host33rac1 2026/06/25 15:12:08 /u01/app/crs/cdata/host-cluster/backup02.ocr
##备注11g rac ocr备份文件默认存放在文件系统目录中,无需单独处理
4)
cat $ORACLE_HOME/gpnp/`hostname`/profiles/peer/profile.xml |grep -i spfile
SPFile="+CRS/host-cluster/asmparameterfile/registry.253.1236776089"
2、备份OCR中的内容
备份本地的集群配置文件OLR
备份OCR集群共享配置文件,11G默认备份在文件系统中
备份asm实例的spfile参数文件
具体方法
1)备份OLR,两个节点都执行
ocrconfig -local -showbackup
ocrconfig -local -manualbackup
ocrconfig -local -showbackup
2)备份OCR集群共享配置文件
ocrconfig -showbackup
ocrconfig -manualbackup
ocrconfig -export /tmp/orcexp.txt //同时完成一次ocr文件的逻辑备份
3)备份asm实例的spfile参数文件
su - grid
sqlplus "/as sysasm"
create pfile='/home/grid/asmpfile.ora' from spfile;
3、OCR磁盘组替换
1、创建新的OCR磁盘组,计划替换现有的磁盘组
su - grid
sqlplus / as sysasm
CREATE DISKGROUP CRSDG NORMAL REDUNDANCY DISK '/dev/asm-diskc','/dev/asm-diskd','/dev/asm-diske' ATTRIBUTE 'compatible.asm'='11.2.0.4.0','au_size'='1M';
2、添加CRSDG到ocrconfig
ocrconfig -add +crsdg
3、检查
ocrcheck
检查结果,可以看到如下
Device/File Name : +CRS
Device/File integrity check succeeded
Device/File Name : +CRSDG
Device/File integrity check succeeded
4、在线替换ocr config集群配置文件磁盘组路径
ocrconfig -delete +CRS
ocrcheck
5、在线替换votedisk心跳盘
crsctl replace votedisk +crsdg
crsctl query css votedisk
6、迁移asm实例的参数文件,无需停止集群
1)将asm实例的参数文件生成到新的CRSDG里面
sqlplus "/as sysasm"
create spfile='+CRSDG' from pfile='/home/grid/asmpfile.ora';
2)新的ASM spfile路径会自动更新到gnpnp profile里面,验证方法:
su - grid
cat $ORACLE_HOME/gpnp/`hostname`/profiles/peer/profile.xml |grep -i spfile
结果包含:SPFile="+CRSDG/host-cluster/asmparameterfile/registry.253.1239189919" 说明自动更新完毕
备注:两个节点都会自动更新这个配置文件!
7、可选项,建议重启集群,验证有无问题
crsctl stop crs
crsctl start crs
至此,OCR配置文件的磁盘组,CRS成功替换为CRSDG磁盘组!
三、OCR配置文件的备份和恢复总结
1、OCR相关文件备份
1)物理备份OCR集群共享配置文件
ocrconfig -showbackup
ocrconfig -manualbackup
2)逻辑备份
ocrconfig -export /tmp/orcexp.txt //同时完成一次ocr文件的逻辑备份
3)本地OLR文件备份
ocrconfig -local -showbackup
ocrconfig -local -manualbackup
ocrconfig -local -showbackup
2、OCR物理恢复
特别注意:OCR物理恢复,应该在当时物理备份的节点上操作(或者将ocr备份文件传输至其它节点,再进行恢复)
步骤说明:
手动物理备份OCR文件
查看OCR文件
检查OCR组件(grid用户来执行)
停止CRS(2节点都执行)
OCR备份节点(主节点上),排它模式启动CRS
查看主节点上,ora.crsd是否启动了,如果启动了,执行关闭ora.crsd资源
在节点(主节点上)执行OCR文件还原恢复
关闭主节点
启动CRS集群(2节点都执行)
具体命令如下
1)ocrconfig -manualbackup
2)ocrconfig -showbackup
3)cluvfy comp ocr -n all -verbose
4)crsctl stop crs -f
5)crsctl start crs -excl -nocrs
6)crsctl stat res -t -init
7)crsctl stop resource ora.crsd -init //可选,执行关闭ora.crsd资源
8)ocrconfig -restore /u01/app/crs/cdata/host-cluster/backup00.ocr
9)crsctl stop has -f
10)crsctl start crs
3、 OCR逻辑恢复
1)crsctl stop crs //停止CRS(2节点都执行)
2)crsctl start crs -excl -nocrs //OCR备份节点(主节点上),排它模式启动CRS
3)crsctl stat res -t -init //查看主节点上,ora.crsd是否启动了,如果启动了,执行关闭ora.crsd资源
4)crsctl stop resource ora.crsd -init //可选,执行关闭ora.crsd资源
5)ocrconfig -import /tmp/orcexp.txt //在主节点上执行逻辑恢复
6)crsctl stop has -f //关主节点的
7)crsctl start crs //启动CRS集群(2节点都执行)
4、OLR备份与恢复
加参数-local即可实现OLR文件的备份和还原。需要注意的是OLR不会自动备份,只能手动备份。每个节点上都要做。
ocrconfig -local -showbackup
ocrconfig -local -manualbackup
ocrconfig -local -restore /u01/app/crs/cdata/host33rac1/backup_20260624_125751.olr
5、无备份情况下的OCR、OLR的恢复
如果无备份,可以通过重新执行root.sh脚本的方式来修复OCR,修复之后除OCR磁盘组外的所有磁盘组,只要磁盘头没有损坏,就都可以直接对磁盘组进行mount操作来恢复业务数据库。
强烈建议OCR磁盘组和其它存放数据库数据的磁盘组分开存放!!
四、Voting Disk文件还原和恢复
从 11gR2 开始,Voting Disk 已不再是简单的裸设备镜像,而是一个包含复杂元数据(如 CSS Header、FUID)的逻辑实体。使用 dd 恢复会破坏这些元数据,导致集群无法启动。必须使用正确的恢复方法(crsctl命令)
场景一、OCR配置文件无问题,仅Voting Disk 丢失
这是最常见的情况。只要 OCR(Oracle Cluster Registry)是完好的,就可以利用其中的信息来重建 Voting Disk。
操作步骤
1、停止所有节点的集群软件
在每个节点上,以 root 用户执行:
crsctl stop crs -f
2、以独占维护模式启动一个节点
crsctl start crs -excl -nocrs
重要提示:-excl 和 -nocrs 两个参数必须同时使用,缺一不可。
-excl 让CSS跳过Voting Disk检查
-nocrs 仅启动本地节点的 Oracle High Availability Services (OHASD) 进程,但不加载集群就绪服务 (CRS) 层,为后续操作提供窗口。
3、确认 Voting Disk 当前状态
执行以下命令,确认 Voting Disk 已丢失或状态异常:
crsctl query css votedisk
4、重建 Voting Disk
执行 crsctl replace votedisk 命令将 Voting Disk 重建到指定的 ASM 磁盘组。
crsctl replace votedisk +<你的ASM磁盘组名>
此命令会从完好的 OCR 中读取集群配置信息,并在指定的 ASM 磁盘组中自动创建新的 Voting Disk。
5、验证恢复结果
再次查询,确认 Voting Disk 已成功创建且状态为 ONLINE。
crsctl query css votedisk
6、重启集群
先停止独占模式的集群,再以正常模式启动所有节点。
crsctl stop crs -f
crsctl start crs
7、最终验证
在所有节点上执行以下命令,确保 Voting Disk 在所有节点均可见且状态正常:
crsctl query css votedisk
场景二、OCR 和 Voting Disk 同时丢失
参照前面的方法,先恢复OCR文件,然后再恢复votedisk文件即可