一.1.1  Oracle RAC OCR 的备份与恢复 

 

 Oracle Clusterware把整个集群的配置信息放在共享存储上,这些信息包括了集群节点的列表、集群数据库实例到节点的映射以及CRS应用程序资源信息。也即是存放在ocr 磁盘(或者ocfs文件)上。因此对于这个配置文件的重要性是不言而喻的。任意使得ocr配置发生变化的操作在操作之间或之后都建议立即备份ocr。

因为OCR的内容如此重要,Oracle 每4个小时对其做一次备份,并且保留最后的3个备份,以及前一天,前一周的最后一个备份。 这个备份由Master Node CRSD进程完成,备份的默认位置是$CRS_HOME/crs/cdata/<cluster_name>目录下。 每次备份后,备份文件名自动更改,以反应备份时间顺序,最近一次的备份叫作backup00.ocr。这些备份文件除了保存在本地,DBA还应该在其他存储设备上保留一份,以防止意外的存储故障。

与Oracle数据库备份恢复相似,OCR的备份也有物理备份或逻辑备份的概念,因此有两种备份方式,两种恢复方式。

 

常用命令:

crsctl query css votedisk

lquerypv -h /dev/rhdisk2

crsctl stop has -f

crsctl start has

crsctl stat res -t

 

一.1.1.1  dd备份恢复

备份表决磁盘:

dd if=/dev/raw/raw3 of=/tmp/votedisk_lhr.bak bs=1024k count=4

恢复表决磁盘:

dd if=/tmp/votedisk_lhr.bak of=/dev/raw/raw3 bs=1024k count=4

 

注:11g不推荐使用dd来进行备份恢复,盘头一般是前4K

一.1.1.2  kfed恢复磁盘头

dd if=/dev/rhdisk2 of=/asm_rhdisk2_dd.bak bs=1024 count=4

dd if=/dev/zero of=/dev/rhdisk2 bs=1024 count=4

kfed repair /dev/rhdisk2

关于kfed、kfod、amdu的更多内容可以参考:http://blog.itpub.net/26736162/viewspace-1694198/

http://blog.itpub.net/26736162/viewspace-1694199/

 

一.1.1.3  md_backup和md_restore恢复磁盘头

 

asmcmd md_backup /oracle/app/11.2.0/grid/cdata/ZFTPCCDB-crs/asm_md_backup.bak

asmcmd md_restore /oracle/app/11.2.0/grid/cdata/ZFTPCCDB-crs/asm_md_backup.bak

 

 

dd if=/dev/rhdisk2 of=/asm_rhdisk2_dd.bak bs=1024k count=4

dd if=/dev/zero of=/dev/rhdisk2 bs=1024k count=4

crsctl stop has -f

crsctl start has

ASMCMD [+] > startup force nomount;

ASMCMD [+] > md_restore /asm_rhdisk2_dd.bak

 

 

ASMCMD [+] > md_backup /rman/asm_md.bak

dd if=/dev/zero  of=/dev/rhdisk2 bs=1024 count=4

crsctl stop has -f

crsctl start has

ASMCMD [+] > startup force nomount;

ASMCMD [+] > md_restore /rman/asm_md.bak

 

关于md_backup和md_restore更多内容可以参考:http://blog.itpub.net/26736162/viewspace-2121309/


一.1.1.1  物理备份与恢复(自动备份)

缺省情况下,Oracle 每4个小时对其做一次备份,并且保留最后的3个副本,以及前一天,前一周的最后一个备份副本。用户不能自定义备份频率以及备份文件的副本数。

对于OCR的备份由是由Master Node CRSD进程完成,因此备份的默认位置是$CRS_HOME/crs/cdata/<cluster_name>目录下。

备份的文件会自动更名,以反应备份时间顺序,最近一次的备份叫作backup00.ocr。

由于是在Master Node的节点之上进行备份,因此备份文件仅存在于Master Node节点。

对于Master Node的节点crash之后则由剩余节点接管。

备份目录可以通过ocrconfig -backuploc <directory_name> 命令修改。

OCR磁盘最多只能有两个,一个Primary OCR 和一个Mirror OCR。两者互为镜像以避免单点故障。

对于物理备份恢复,不能简单的使用操作系统级别的复制命令(使用ocr文件时)来完成,该操作将导致ocr不可用。

对于物理备份,仅仅只能使用restore方式来进行恢复,而不支持import方式

 1,查看备份磁盘 

[zfzhlhrdb2:grid]:/home/grid>ocrconfig -showbackup

 

zfzhlhrdb1     2016/06/30 15:13:46     /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup00.ocr

 

zfzhlhrdb1     2016/06/30 11:13:45     /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup01.ocr

 

zfzhlhrdb1     2016/06/30 07:13:45     /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup02.ocr

 

zfzhlhrdb1     2016/06/29 03:13:41     /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/day.ocr

 

zfzhlhrdb1     2016/06/20 03:13:08     /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/week.ocr

PROT-25: Manual backups for the Oracle Cluster Registry are not available

[zfzhlhrdb2:grid]:/home/grid>oerr prot 25

00025, 0, "Manual backups for the Oracle Cluster Registry are not available"

// *Cause: Manual backups for the Oracle Cluster Registry were not yet created.

// *Action: Manual backups can be created using 'ocrconfig -manualbackup'

//          command.

[zfzhlhrdb2:grid]:/home/grid>ocrconfig -manualbackup

PROT-20: Insufficient permission to proceed. Require privileged user

[zfzhlhrdb2:grid]:/home/grid>exit

[zfzhlhrdb2:root]:/>

[zfzhlhrdb2:root]:/>

[zfzhlhrdb2:root]:/>ocrconfig -manualbackup

 

zfzhlhrdb1     2016/06/30 16:21:34     /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup_20160630_162134.ocr

[zfzhlhrdb2:root]:/>ocrconfig -showbackup

 

zfzhlhrdb1     2016/06/30 15:13:46     /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup00.ocr

 

zfzhlhrdb1     2016/06/30 11:13:45     /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup01.ocr

 

zfzhlhrdb1     2016/06/30 07:13:45     /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup02.ocr

 

zfzhlhrdb1     2016/06/29 03:13:41     /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/day.ocr

 

zfzhlhrdb1     2016/06/20 03:13:08     /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/week.ocr

 

zfzhlhrdb1     2016/06/30 16:21:34     /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup_20160630_162134.ocr

  在节点一执行,可以看到2个节点得到的内容一致:

[zfzhlhrdb1:root]:/>ocrconfig -showbackup

 

zfzhlhrdb1     2016/06/30 15:13:46     /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup00.ocr

 

zfzhlhrdb1     2016/06/30 11:13:45     /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup01.ocr

 

zfzhlhrdb1     2016/06/30 07:13:45     /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup02.ocr

 

zfzhlhrdb1     2016/06/29 03:13:41     /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/day.ocr

 

zfzhlhrdb1     2016/06/20 03:13:08     /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/week.ocr

 

zfzhlhrdb1     2016/06/30 16:21:34     /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup_20160630_162134.ocr

[zfzhlhrdb1:root]:/> 

2,恢复

ocrconfig -restore /app/crs/product/11.0.6/crs/cdata/racluster/backup01.ocr

 

3,查看配置

[grid@rac1 ~]$ more /etc/oracle/ocr.loc

ocrconfig_loc=+DATA

local_only=FALSE

[grid@rac1 ~]$

 

4,查看进程

[grid@rac1 ~]$ ps -ef | grep d.bin

 

root      4694     1  0 10:00 ?        00:00:13 /u01/grid/bin/ohasd.bin reboot

grid      4821     1  0 10:00 ?        00:00:28 /u01/grid/bin/oraagent.bin

root      4823     1  0 10:00 ?        00:00:04 /u01/grid/bin/orarootagent.bin

grid      4846     1  0 10:00 ?        00:00:00 /u01/grid/bin/gipcd.bin

grid      4859     1  0 10:00 ?        00:00:00 /u01/grid/bin/mdnsd.bin

grid      4874     1  0 10:00 ?        00:00:01 /u01/grid/bin/gpnpd.bin

root      8645     1  0 10:47 ?        00:00:04 /u01/grid/bin/cssdmonitor

root      8662     1  0 10:48 ?        00:00:05 /u01/grid/bin/cssdagent

grid      8664     1  0 10:48 ?        00:00:01 /u01/grid/bin/diskmon.bin -d -f

grid      8688     1  0 10:48 ?        00:00:40 /u01/grid/bin/ocssd.bin

root      8754     1  0 10:50 ?        00:00:01 /u01/grid/bin/octssd.bin

grid      8770     1  0 10:50 ?        00:00:02 /u01/grid/bin/evmd.bin

grid      8888     1  0 10:51 ?        00:00:00 /u01/grid/bin/oclskd.bin

root      8920     1  0 10:51 ?        00:00:07 /u01/grid/bin/crsd.bin reboot

root      8966     1  0 10:51 ?        00:00:00 /u01/grid/bin/oclskd.bin

grid      9013  8770  0 10:51 ?        00:00:00 /u01/grid/bin/evmlogger.bin -o /u01/grid/evm/log/evmlogger.info -l /u01/grid/evm/log/evmlogger.log

grid      9055     1  0 10:51 ?        00:00:06 /u01/grid/bin/oraagent.bin

root      9059     1  0 10:51 ?        00:00:42 /u01/grid/bin/orarootagent.bin

grid      9283     1  0 10:52 ?        00:00:00 /u01/grid/bin/tnslsnr LISTENER -inherit

oracle    9549     1  0 10:58 ?        00:00:26 /u01/grid/bin/oraagent.bin

oracle    9773     1  0 11:00 ?        00:00:00 /u01/grid/bin/oclskd.bin

grid     18618     1  0 13:46 ?        00:00:00 /u01/grid/bin/tnslsnr LISTENER_SCAN1 -inherit

grid     22527 21370  0 14:58 pts/2    00:00:00 grep d.bin

[grid@rac1 ~]$

注:

ocssd:用于管理与协调集群中各个节点的关系,并用于节点通信。该进程非常的重要,如果这个进程异常中止,会导致系统自动重启。在某些极端的情况下,如果ocssd无法正常启动,就会导致操作系统循环重启。

crsd:监控节点各个资源,当某个资源发生异常是,自动重启或者切换该资源。

evmd:是一个基于后台的事件检测程序。

oclskd:该守护进程是Oracle 11g(11.10.6)新增的一个后台进程,主要是用于监控RAC数据库节点实例,当某个实例挂起时,就重启该节点。     

一.1.1.2  逻辑备份与恢复(手动备份)

其实OCR也可以通过手动的方式导出、导入、方法如下:

ocrconfig -export /tmp/ocr_bak

ocrconfig -import /tmp/ocr_bak

使用ocrconfig -export 方式产生的备份,统称之为逻辑备份。

对于重大的ocr配置发生变化前后,如添加删除节点,修改集群资源,创建数据库等,都建议使用逻辑备份。

对于由于错误配置而导致的ocr被损坏的情形下,我们可以使用ocrconfig -import方式进行恢复。

对于这种逻辑方式也可以还原丢失或损坏的ocr磁盘(文件)。