OCR/Vote disk 维护操作: (添加/删除/替换/移动) (文档 ID 1674859.1)

适用于:

Oracle Database - Enterprise Edition - 版本 10.2.0.1 到 11.2.0.1.0 [发行版 10.2 到 11.2]
本文档所含信息适用于所有平台

目标

提供在 Oracle Clusterware 10gR2, 11gR1 和 11gR2 环境中添加,删除,替换,移动 Oracle Cluster Repository (OCR) 和/或 Voting Disk 的步骤。并且包括了把OCR/voting 从裸设备移动到块设备和ASM 设备的步骤。对于 Oracle Clusterware 12c,请参考 Document 1558920.1 Software Patch Level and 12c Grid Infrastructure OCR Backup/Restore。

本文适用于需要修改,移动 OCR,voting disk 的 DBA 和技术支持工程师,客户已经在一套存储上部署了集群环境,可能需要在最短的停机时间内迁移到新的存储。

通常来说,一旦存储已经存在,那么可以通过 cp 或者 dd 文件,但是对于集群来说是有一些困难的,这是因为:

1. Oracle Clusterware 的 OCR 和 voting disks 是联机使用的。(包括primary和镜像)
2. 与 cp 和 dd 命令相比,Oracle提供的 API(ocrconfig and crsctl)更适合用来实现这些功能。

执行操作之前,请备份 OC R和 voting disk。

注意: 当 OCR 和 Voting disk files 存放在一起,像OCFS (例如在 pre-11.2 Clusterware 环境) 或者在同一个 ASM diskgroup (例如在 11.2 Oracle Clusterware 环境), 事实上 OCR 和 Voting disk 是 2 个单独的文件和实体,因此如果希望修改或者移动 OCR 和 Voting disk,那么必须遵守下面提供的步骤。

解决方案

准备磁盘


为了添加或者替换 OCR 或 voting disk,请提前准备新的磁盘。请参考各个平台 Clusteware/Gird Infrastructure 安装文档中关于磁盘的要求。

1. 磁盘大小

版本 10.1:
OCR device minimum size (each): 100M
Voting disk minimum size (each): 20M

版本 10.2:
OCR device 最小值 (每个): 256M
Voting disk最小值 (每个): 256M

版本 11.1:
OCR device 最小值 (每个): 280M
Voting disk 最小值 (每个): 280M

版本 11.2:
OCR device 最小值 (每个): 300M
Voting disk 最小值 (每个): 300M

2. 裸设备或者块设备 (pre 11.2)

请参考各个平台 Clusteware/Gird Infrastructure 安装文档。
对于windows平台,请使用命令$CRS_HOME\bin\GUIOracleOBJManager.exe创建新的裸设备链接,例如:
\\.\VOTEDSK2
\\.\OCR2

3. ASM disks (11.2+)

在windows平台,请参考 Document 331796.1 How to setup ASM on Windows 
在Linux平台,请参考 Document 580153.1 How To Setup ASM on Linux Using ASMLIB Disks, Raw Devices or Block Devices? 
其他平台,请参考 Clusterware/Gird Infrastructure安装手册 OTN (Chapter: Oracle Automatic Storage Management Storage Configuration)。

4. 集群文件系统

如果 OCR 在集群文件系统上,在添加/替换之前,新的 OCR 或者 OCRMIRROR 文件必需提前创建,否则会出现PROT-21: Invalid parameter (10.2/11.) or PROT-30 The Oracle Cluster Registry location to be added is not accessible (针对版本11.2)错误。

使用 root 用户
# touch /cluster_fs/ocrdisk.dat
# touch /cluster_fs/ocrmirror.dat
# chown root:oinstall /cluster_fs/ocrdisk.dat  /cluster_fs/ocrmirror.dat
# chmod 640 /cluster_fs/ocrdisk.dat  /cluster_fs/ocrmirror.dat

不需要提前在集群文件系统上创建 voting disk 文件。

执行删除命令后,需要手动在集群文件系统上删除 ocr/voting 文件。

5. 权限

对于 OCR 设备:
chown root:oinstall <OCR device>
chmod 640 <OCR device>

对于 Voting 设备:
chown <crs/grid>:oinstall <Voting device>
chmod 644 <Voting device>

如果 OCR/Voting disk 使用 ASM 磁盘:
chown griduser:asmadmin <asm disks>
chmod 660 <asm disks>

6. 冗余

Voting 磁盘(不要使用偶数个):
External 需要最少1个 Voting 磁盘(或者1个 failure group)
Normal 需要最少3个 Voting 磁盘(或者3个 failure group)
High 需要最少5个 Voting 磁盘(或者5个 failure group)

缺少 failure group 会引起 voting disk 创建失败。例如 ORA-15274: Not enough failgroups (3) to create voting files

OCR: 
10.2 和 11.1,最多2个 OCR 设备:OCR 和 OCRMIRROR
11.2+,最多5个 OCR。

请参考各个平台对应文档 Oracle® Grid Infrastructure Installation Guide 获得更多信息

添加/删除/替换/移动 OCR device

注意: 必须以 root 用户登录,因为 root 用户拥有 OCR 文件。"ocrconfig -replace"命令只能在CRS 运行时执行,否则报错"PROT-1: Failed to initialize ocrconfig"。

请确保执行这些操作时 CRS 在所有节点都是运行的,否则在关闭的节点上这些命令将不会生效,那么将来关闭节点的 CRS 启动时会有问题。需要使用"ocrconfig -repair"命令来修复 ocr.loc 文件。

对于 11.2 及以上版本而且 OCR 在 ASM 磁盘组的集群,由于 unpublished Bug 8604794 - FAIL TO CHANGE OCR LOCATION TO DG WITH 'OCRCONFIG -REPAIR -REPLACE'的存在,使用"ocrconfig -repair"命令将 OCR 位置修改到不同的 ASM 磁盘组是不能正常工作的。临时的解决方法是手动编辑 /etc/oracle/ocr.loc 或 /var/opt/oracle/ocr.loc文件 或 Windows registry HYKEY_LOCAL_MACHINE\SOFTWARE\Oracle\ocr剑指,指向设定的磁盘组。

如果 OLR 有任何问题,请参考 How to restore OLR in 11.2 Grid Infrastructure Note 1193643.1.

在做任何改变前确保有一个近期的 OCR 文件备份:

ocrconfig -showbackup

如果没有近期的 OCR 文件备份,可以 export 当前的 OCR 文件。使用下面的命令生成一个在线 OCR 文件的导出文件:

版本 10.2

# ocrconfig -export <OCR export_filename> -s online

版本 11.1 和 11.2

# ocrconfig -manualbackup
node1 2008/08/06 06:11:58 /crs/cdata/crs/backup_20080807_003158.ocr

使用导出文件来恢复 OCR,执行下面命令:

# ocrconfig -import <OCR export_filename>

从 11.2 开始,请参考 How to restore ASM based OCR after complete loss of the CRS diskgroup on Linux/Unix systems Document 1062983.1

检查 OCR 是否健康,运行 ocrcheck 命令,应该返回下面的信息:

# ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 2
Total space (kbytes) : 497928
Used space (kbytes) : 312
Available space (kbytes) : 497616
ID : 576761409
Device/File Name : /dev/raw/raw1
Device/File integrity check succeeded
Device/File Name : /dev/raw/raw2
Device/File integrity check succeeded

Cluster registry integrity check succeeded

对于11.1及以上版本, ocrcheck 命令还应该返回:
Logical corruption check succeeded

1. 当只有一个 OCR 设备时,添加一个 OCRMIRROR 设备:

添加一个 OCR mirror 设备,提供全路径包括文件名。
10.2 和 11.1:

# ocrconfig -replace ocrmirror <filename>
eg:
# ocrconfig -replace ocrmirror /dev/raw/raw2
# ocrconfig -replace ocrmirror /dev/sdc1
# ocrconfig -replace ocrmirror /cluster_fs/ocrdisk.dat
> ocrconfig -replace ocrmirror \\.\OCRMIRROR2  - for Windows

11.2+: 版本 11.2 之后,最多可添加4个 ocrmirrors

# ocrconfig -add <filename>
eg:
# ocrconfig -add +OCRVOTE2
# ocrconfig -add /cluster_fs/ocrdisk.dat

2. 删除一个 OCR 设备

删除一个 OCR 设备: 
10.2 和 11.1:

# ocrconfig -replace ocr

11.2+:

# ocrconfig -delete <filename>
eg:
# ocrconfig -delete +OCRVOTE1
* 一旦 OCR 设备被删除,ocrmirror 设备自动转换为 OCR。
* 如果只有一个 OCR 设备,那么不允许删除 OCR ,命令将会返回错误 PROT-16。

删除 OCR mirror 设备: 
10.2 和 11.1:

# ocrconfig -replace ocrmirror

11.2+:

# ocrconfig -delete <ocrmirror filename>
eg:
# ocrconfig -delete +OCRVOTE2

如果是集群文件系统,那么删除之后,旧的 OCR/OCRMIRROR 文件可以被删除。

3. 替换或者移动 OCR 设备位置

注意. 1. 替换 OCR 设备前,一个 ocrmirror 必须存在,否则报错 PROT-16。
2. 如果 OCR 设备被替换为不同大小的设备,那么新的设备大小只有集群重启后才会被显示。

10.2 和 11.1:
替换 OCR 设备,提供全路径包括文件名:

# ocrconfig -replace ocr <filename>
eg:
# ocrconfig -replace ocr /dev/sdd1
$ ocrconfig -replace ocr \\.\OCR2 - for Windows

替换 OCR mirror 设备,提供全路径包括文件名:

# ocrconfig -replace ocrmirror <filename>
eg:
# ocrconfig -replace ocrmirrow /dev/raw/raw4
# ocrconfig -replace ocrmirrow \\.\OCRMIRROR2  - for Windows

11.2:
替换 OCR 或者 OCRMIRRORs 的命令和之前版本是相同的(至少2个 OCR 存在):

# ocrconfig -replace <current filename> -replacement <new filename>
eg:
# ocrconfig -replace /cluster_file/ocr.dat -replacement +OCRVOTE
# ocrconfig -replace +CRS -replacement +OCRVOTE

4. 当集群停止时如何恢复 OCR

如果 OCR 不可访问,CRSD 进程将不会启动,因此集群将不能完全启动。恢复 OCR 需要访问好的 OCR 备份,查看自动 OCR 备份:

# ocrconfig -showbackup

从OCR 备份恢复:

# ocrconfig -restore <path/filename of OCR backup>

对于 11.2: 如果 OCR 位于 ASM 磁盘,但是 ASM DISK 也丢失了,请参考:
How to restore ASM based OCR after complete loss of the CRS diskgroup on Linux/Unix systems Document 1062983.1
How to Restore OCR After the 1st ASM Diskgroup is Lost on Windows Document 1294915.1

如果没有有效的 OCR 备份,那么需要重新初始化 OCR 和 voting。
对于10.2 和 11.1:
请参考 How to Recreate OCR/Voting Disk Accidentally Deleted Document 399482.1

对于 11.2:
需要在集群的所有节点deconfig 集群软件并且重新运行roo.sh 脚本。

添加/删除/移动 voting disk

注意: 1. 对于版本10.2 和 11.1, crsctl votedisk 命令必须以 root 用户运行,但是对于11.2 及以上版本, 可以用 grid 用户运行。
2. 对于 11.2,如果 OCR 和 voting 使用 ASM 磁盘,那么这个命令在 Windows 和 Unix 平台是相同的。

对于 11.2 之前,备份 voting disk:

$ dd if=voting_disk_name of=backup_file_name

对于 Windows:

ocopy \\.\votedsk1 o:\backup\votedsk1.bak

对于 11.2+,不需要备份 voting disk,在发生任何配置变化是voting disk 会被自动备份到 OCR 上。如果 voting disk 中的内容发生了以下变化之一, Oracle Clusterware 会自动备份 voting disk:

  • 配置参数,比如 misscount 被添加或者修改

  • 执行 voting disk 添加或者删除操作

当添加或者替换 voting disk后,voting disk 内容会从VF备份中自动恢复到新的VF中。

对应于 10gR2 版本

修改任何 voting disk 前,停止 oracle 集群(使用 root 用户执行 crsctl stop crs)。查看当前 voting disk 位置:
crsctl query css votedisk

1. 添加一个 Voting Disk,提供全路径包括文件名:

# crsctl add css votedisk <VOTEDISK_LOCATION> -force
eg:
# crsctl add css votedisk /dev/raw/raw1 -force
# crsctl add css votedisk /cluster_fs/votedisk.dat -force
> crsctl add css votedisk \\.\VOTEDSK2 -force   - for windows

2. 删除一个 Voting Disk,提供全路径包括文件名:

# crsctl delete css votedisk <VOTEDISK_LOCATION> -force
eg:
# crsctl delete css votedisk /dev/raw/raw1 -force
# crsctl delete css votedisk /cluster_fs/votedisk.dat -force
> crsctl delete css votedisk \\.\VOTEDSK1 -force   - for windows

3. 移动一个 Voting Disk,提供全路径包括文件名,先添加一个设备,然后删除旧的:

# crsctl add css votedisk <NEW_LOCATION> -force
# crsctl delete css votedisk <OLD_LOCATION> -force
eg:
# crsctl add css votedisk /dev/raw/raw4 -force
# crsctl delete css votedisk /dev/raw/raw1 -force

修改 Voting Disk 后,在所有节点启动 oracle 集群

# crsctl start crs

确认 Voting Disk 位置:

# crsctl query css votedisk

对于 11gR1 版本

从 11.1.0.6 开始,下面的命令可以在线执行(CRS 正在运行)

1. 添加一个 Voting Disk,提供全路径包括文件名:

# crsctl add css votedisk <VOTEDISK_LOCATION>
eg:
# crsctl add css votedisk /dev/raw/raw1
# crsctl add css votedisk /cluster_fs/votedisk.dat
> crsctl add css votedisk \\.\VOTEDSK2        - for windows

2. 删除一个 Voting Disk,提供全路径包括文件名:

# crsctl delete css votedisk <VOTEDISK_LOCATION>
eg:
# crsctl delete css votedisk /dev/raw/raw1 -force
# crsctl delete css votedisk /cluster_fs/votedisk.dat
> crsctl delete css votedisk \\.\VOTEDSK1     - for windows

3. 移动一个Voting Disk, 提供全路径包括文件名

# crsctl add css votedisk <NEW_LOCATION> 
# crsctl delete css votedisk <OLD_LOCATION>
eg:
# crsctl add css votedisk /dev/raw/raw4
# crsctl delete css votedisk /dev/raw/raw1

确认 Voting Disk 位置:

# crsctl query css votedisk

对于 11gR2 版本

从 11.2开始,Voting Disk 可以存放于 ASM 磁盘组或者集群文件系统,当 Grid Infrastructure 运行是,执行下面的命令,以 grid 用户:

1. 添加一个 Voting Disk
a. 当 votedisk 位于集群文件系统:

$ crsctl add css votedisk <cluster_fs/filename>

b. 当 votedisk 位于 ASM 磁盘组,没有添加选项。
Votedisk 数量是由磁盘组冗余度决定。如果希望更多 votedisk 副本,可以移动 votedisk 到更高冗余度的磁盘组。见步骤4。
如果 votedisk 从一个正常或者高冗余度的磁盘组被删除,可以使用下面的命令添加回来:

alter diskgroup <vote diskgroup name> add disk '</path/name>' force;

2. 删除一个Voting Disk
a. 当 Voting Disk 位于集群文件系统时:

$ crsctl delete css votedisk <cluster_fs/filename>
or
$ crsctl delete css votedisk <vdiskGUID>     (vdiskGUID is the File Universal Id from 'crsctl query css votedisk')

b. 当 Voting Disk 位于 ASM时,没有删除选项,只能从一个 asm 磁盘组替换为另外一个 asm 磁盘组。

3. 在集群文件系统上移动一个 Voting Disk 

$ crsctl add css votedisk <new_cluster_fs/filename>
$ crsctl delete css votedisk <old_cluster_fs/filename>
or
$ crsctl delete css votedisk <vdiskGUID>

4. ASM 磁盘组冗余度或者位置变化

$ crsctl replace votedisk <+diskgroup>|<vdisk>

例子:从外部冗余磁盘组 +OCRVOTE 移动到正常冗余磁盘组 +CRS

1. create new diskgroup +CRS as desired

2. $ crsctl query css votedisk
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   5e391d339a594fc7bf11f726f9375095 (ORCL:ASMDG02) [+OCRVOTE]
Located 1 voting disk(s).

3. $ crsctl replace votedisk +CRS
Successful addition of voting disk 941236c324454fc0bfe182bd6ebbcbff.
Successful addition of voting disk 07d2464674ac4fabbf27f3132d8448b0.
Successful addition of voting disk 9761ccf221524f66bff0766ad5721239.
Successful deletion of voting disk 5e391d339a594fc7bf11f726f9375095.
Successfully replaced voting disk group with +CRS.
CRS-4266: Voting file(s) successfully replaced

4. $ crsctl query css votedisk
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   941236c324454fc0bfe182bd6ebbcbff (ORCL:CRSD1) [CRS]
 2. ONLINE   07d2464674ac4fabbf27f3132d8448b0 (ORCL:CRSD2) [CRS]
 3. ONLINE   9761ccf221524f66bff0766ad5721239 (ORCL:CRSD3) [CRS]
Located 3 voting disk(s).

5. 在 ASM 磁盘组和集群文件系统之间移动 voting disk 
a. ASM 磁盘组移动到集群文件系统:

$ crsctl query css votedisk
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   6e5850d12c7a4f62bf6e693084460fd9 (ORCL:CRSD1) [CRS]
 2. ONLINE   56ab5c385ce34f37bf59580232ea815f (ORCL:CRSD2) [CRS]
 3. ONLINE   4f4446a59eeb4f75bfdfc4be2e3d5f90 (ORCL:CRSD3) [CRS]
Located 3 voting disk(s).

$ crsctl replace votedisk /rac_shared/oradata/vote.test3
Now formatting voting disk: /rac_shared/oradata/vote.test3.
CRS-4256: Updating the profile
Successful addition of voting disk 61c4347805b64fd5bf98bf32ca046d6c.
Successful deletion of voting disk 6e5850d12c7a4f62bf6e693084460fd9.
Successful deletion of voting disk 56ab5c385ce34f37bf59580232ea815f.
Successful deletion of voting disk 4f4446a59eeb4f75bfdfc4be2e3d5f90.
CRS-4256: Updating the profile
CRS-4266: Voting file(s) successfully replaced

$ crsctl query css votedisk
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   61c4347805b64fd5bf98bf32ca046d6c (/rac_shared/oradata/vote.disk) []
Located 1 voting disk(s). 

b. 从集群文件系统移动到 ASM 磁盘组

$ crsctl query css votedisk
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   61c4347805b64fd5bf98bf32ca046d6c (/rac_shared/oradata/vote.disk) []
Located 1 voting disk(s).

$ crsctl replace votedisk +CRS
CRS-4256: Updating the profile
Successful addition of voting disk 41806377ff804fc1bf1d3f0ec9751ceb.
Successful addition of voting disk 94896394e50d4f8abf753752baaa5d27.
Successful addition of voting disk 8e933621e2264f06bfbb2d23559ba635.
Successful deletion of voting disk 61c4347805b64fd5bf98bf32ca046d6c.
Successfully replaced voting disk group with +CRS.
CRS-4256: Updating the profile
CRS-4266: Voting file(s) successfully replaced

[oragrid@auw2k4 crsconfig]$ crsctl query css votedisk
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   41806377ff804fc1bf1d3f0ec9751ceb (ORCL:CRSD1) [CRS]
 2. ONLINE   94896394e50d4f8abf753752baaa5d27 (ORCL:CRSD2) [CRS]
 3. ONLINE   8e933621e2264f06bfbb2d23559ba635 (ORCL:CRSD3) [CRS]
Located 3 voting disk(s).

6. 确认:

$ crsctl query css votedisk

 

对于 Extended Cluster 上 Voting disk 维护

请参考 oracle 白皮书: Oracle Clusterware 11g Release 2 (11.2) – Using standard NFS to support a third voting file for extended cluster configurations

如果使用 asmca 工具有任何问题,请参考 How to Manually Add NFS voting disk to an Extended Cluster using ASM in 11.2 Note 1421588.1 。

参考

NOTE:866102.1 - Renaming OCR Using "ocrconfig -overwrite" Fails
NOTE:390880.1 - OCR Corruption after Adding/Removing voting disk to a cluster when CRS stack is running
NOTE:1573574.1 - OCR Placement and Size Specification
NOTE:1558920.1 - Software Patch Level and 12c Grid Infrastructure OCR Backup/Restore 
NOTE:1062983.1 - How to restore ASM based OCR after complete loss of the CRS diskgroup on Linux/Unix systems

上一篇:【C++ Primer | 15】继承的构造函数


下一篇:WPF 捕获键盘输入事件