7. 在当前节点上启动 CRS 守护进程(仅限 11.2.0.1!)
现在 OCR 已经恢复,CRS 守护进程可以启动,这是重新创建投票文件所需要的。
对于 11.2.0.2.0,跳过此步骤。
# $CRS_HOME/bin/crsctl start res ora.crsd -init CRS-2672: Attempting to start 'ora.crsd' on 'racnode1' CRS-2676: Start of 'ora.crsd' on 'racnode1' succeeded
3.以独占模式启动CRS堆栈
在具有最新 OCR 备份的节点上,以 root 身份登录并以独占模式启动 CRS,此模式将允许 ASM 在没有投票磁盘和 CRS 守护进程 (crsd.bin) 的情况下启动并保持运行运行步。
11.2.0.1:
# $CRS_HOME/bin/crsctl start crs -excl ... CRS-2672: Attempting to start 'ora.asm' on 'racnode1' CRS-2676: Start of 'ora.asm' on 'racnode1' succeeded CRS-2672: Attempting to start 'ora.crsd' on 'racnode1' CRS-2676: Start of 'ora.crsd' on 'racnode1' succeeded
注意:本文档假设 CRS 磁盘组完全丢失,在这种情况下,CRS 守护进程(资源 ora.crsd)将由于 OCR 的不可访问性而再次终止——即使上述消息表明启动成功。
如果不是这种情况 - 例如:如果 CRS 磁盘组仍然存在(但已损坏或者不正确),则需要使用以下命令手动关闭 CRS 守护程序:
# $CRS_HOME/bin/crsctl stop res ora.crsd -init
否则后续的 OCR 还原将失败。
11.2.0.2 及以上:
# $CRS_HOME/bin/crsctl start crs -excl -nocrs CRS-4123: Oracle High Availability Services has been started. ... CRS-2672: Attempting to start 'ora.cluster_interconnect.haip' on 'auw2k3' CRS-2672: Attempting to start 'ora.ctssd' on 'racnode1' CRS-2676: Start of 'ora.drivers.acfs' on 'racnode1' succeeded CRS-2676: Start of 'ora.ctssd' on 'racnode1' succeeded CRS-2676: Start of 'ora.cluster_interconnect.haip' on 'racnode1' succeeded CRS-2672: Attempting to start 'ora.asm' on 'racnode1' CRS-2676: Start of 'ora.asm' on 'racnode1' succeededM
重要信息:11.2.0.2 中引入了一个新选项“-nocrs”,它阻止了 ora.crsd 资源的启动。
指定此选项至关重要,否则无法启动 ora.crsd 资源将导致 ora.cluster_interconnect.haip 崩溃,进而导致 ASM 崩溃。
1.找到最新的自动OCR备份
使用非共享 CRS 主目录时,自动 OCR 备份可以位于集群的任何节点上,因此需要检查所有节点以获取最新备份:
$ ls -lrt $CRS_HOME/cdata/rac_cluster1/ -rw------- 1 root root 7331840 Mar 10 18:52 week.ocr -rw------- 1 root root 7651328 Mar 26 01:33 week_.ocr -rw------- 1 root root 7651328 Mar 29 01:33 day.ocr -rw------- 1 root root 7651328 Mar 30 01:33 day_.ocr -rw------- 1 root root 7651328 Mar 30 01:33 backup02.ocr -rw------- 1 root root 7651328 Mar 30 05:33 backup01.ocr -rw------- 1 root root 7651328 Mar 30 09:33 backup00.ocr
11.重新扫描ASM磁盘
如果使用 ASMLIB 以 root 用户身份重新扫描每个节点上的所有 ASM 磁盘:
# /usr/sbin/oracleasm scandisks Reloading disk partitions: done Cleaning any stale ASM disks... Scanning system for ASM disks... Instantiating disk "ASMD40"
9. 为 ASM 重新创建 SPFILE(可选)
请注意:
从 11gR2 开始,ASM 可以在没有 PFILE 或者 SPFILE 的情况下启动,因此如果我们是
不为 ASM 使用 SPFILE
不为 ASM 使用共享 SPFILE
使用未存储在 ASM 中的共享 SPFILE(例如在集群文件系统上)
这一步可能应该跳过。
此外,请特别注意 asm_diskstring 参数,因为它会影响投票磁盘的发现。
请使用 ASM 警报日志验证先前的设置。
准备一个带有 ASM 启动参数的 pfile(例如 /tmp/asm_pfile.ora),这些参数可能与下面的示例有所不同。
如果有疑问,请查阅 ASM 警报日志,因为 ASM 实例启动应列出所有非默认参数值。
请注意 ASM 的最后一次启动(在第 2 步中通过 CRS 启动)不会使用 SPFILE,因此需要定位在 CRS 磁盘组丢失之前的启动。
*.asm_power_limit=1 *.diagnostic_dest='/u01/app/oragrid' *.instance_type='asm' *.large_pool_size=12M *.remote_login_passwordfile='EXCLUSIVE'
现在可以使用这个 PFILE 创建 SPFILE:
$ sqlplus / as sysasm SQL*Plus: Release 11.2.0.1.0 Production on Tue Mar 30 11:52:39 2010 Copyright (c) 1982, 2009, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Real Application Clusters and Automatic Storage Management options SQL> create spfile='+CRS' from pfile='/tmp/asm_pfile.ora'; File created. SQL> exit
10. 关闭 CRS
由于 CRS 以独占模式运行,因此需要关闭它才能让 CRS 再次在所有节点上运行。
可能需要使用 force (-f) 选项:
# $CRS_HOME/bin/crsctl stop crs -f ... CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'auw2k3' has completed CRS-4133: Oracle High Availability Services has been stopped.
8. 重新创建投票文件
Voting 文件需要在 CRS 磁盘组中初始化:
# $CRS_HOME/bin/crsctl replace votedisk +CRS Successful addition of voting disk 00caa5b9c0f54f3abf5bd2a2609f09a9. Successfully replaced voting disk group with +CRS. CRS-4266: Voting file(s) successfully replaced
2. 确保所有节点上的 Grid Infrastructure 都已关闭
鉴于 OCR 磁盘组丢失,GI 堆栈将无法在任何节点上运行,但仍可能有各种守护进程在运行。
在每个节点上使用 force(-f ) 选项关闭 GI 堆栈:
# $CRS_HOME/bin/crsctl stop crs -f
13. 验证 CRS
要再次验证 CRS 是否完全正常运行:
# $CRS_HOME/bin/crsctl check cluster -all ** racnode1: CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online ** racnode2: CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online **
# $CRS_HOME/bin/crsctl status resource -t
4. 标记 CRS 磁盘以供 ASMLIB 使用
如果使用 ASMLIB,需要首先标记要用于 CRS 磁盘组的磁盘,作为用户 root 执行:
# /usr/sbin/oracleasm createdisk ASMD40 /dev/sdh1 Writing disk header: done Instantiating disk: done
12.启动CRS
作为 root 用户在所有集群节点上提交 CRS 启动:
# $CRS_HOME/bin/crsctl start crs CRS-4123: Oracle High Availability Services has been started.
5.通过sqlplus创建CRS磁盘组
现在可以从 grid 用户通过 sqlplus(重新)创建磁盘组。
必须将 compatible.asm 属性设置为 11.2,以便 CRS 使用磁盘组:
$ sqlplus / as sysasm SQL*Plus: Release 11.2.0.1.0 Production on Tue Mar 30 11:47:24 2010 Copyright (c) 1982, 2009, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Real Application Clusters and Automatic Storage Management options SQL> create diskgroup CRS external redundancy disk 'ORCL:ASMD40' attribute 'COMPATIBLE.ASM' = '11.2'; Diskgroup created. SQL> exit
如果 OCR 位于 ASM 磁盘组中,则无法直接还原手动或者自动 OCR 备份。
这是因为命令“ocrconfig -restore”需要启动并运行 ASM,以便将 OCR 备份恢复到 ASM 磁盘组。
但是,要使 ASM 可用,CRS 堆栈必须已成功启动。
为使恢复成功,OCR 也不得在使用中 (r/w),例如:在恢复 OCR 时,不得运行 CRS 守护程序。
将 ASM 磁盘组用于 CRS 时,磁盘组中通常有 3 种不同类型的文件可能需要恢复/重新创建:
- Oracle 集群注册表文件 (OCR)
- 投票文件
- ASM 实例的共享 SPFILE
以下示例假定 OCR 位于专用于 CRS 的单个磁盘组中。
磁盘组只有一个使用外部冗余的磁盘。
由于 CRS 磁盘组已丢失,因此 CRS 堆栈在任何节点上都不可用。
示例中使用的以下设置需要根据实际配置进行替换:
GRID user: oragrid GRID home: /u01/app/11.2.0/grid ($CRS_HOME) ASM disk group name for OCR: CRS ASM/ASMLIB disk name: ASMD40 Linux device name for ASM disk: /dev/sdh1 Cluster name: rac_cluster1 Nodes: racnode1, racnode2
注意:本文假设 OCR 磁盘组的名称保持不变,但是可能需要使用不同的磁盘组名称,在这种情况下,必须在 /etc/oracle/ocr 中修改 OCR 磁盘组的名称。
loc 在执行以下步骤之前跨所有节点。
6. 恢复最新的 OCR 备份。
现在 CRS 磁盘组已创建并挂载,OCR 可以恢复必须以 root 用户身份完成:
# cd $CRS_HOME/cdata/rac_cluster1/ # $CRS_HOME/bin/ocrconfig -restore backup00.ocr