OCR 类似于Windows注册表,用于存储所有与集群,RAC数据库相关的配置信息,被多个节点所共享,因此,只能存储于共享磁盘。支持单disk以及镜像方式来存放。大小通常100MB-1GB。
在Oracle 10g中,只能存储于裸设备或者ocfs文件系统,以及nfs,gfs文件系统。Oracle 11g中可以直接存放在asm中。
整个集群及RAC数据库配置需要在OCR中来进行维护。换句话说,就像windows注册表的导入导出,修改、更新键值等。
OCR磁盘最多只能有两个,一个Primary OCR 和一个Mirror OCR,两个OCR 磁盘互为镜像,以防止OCR 磁盘的单点故障。
健忘症是由于某个节点更新了OCR中的内容,而集群中的另外一些节点此时处于关闭,维护或重启阶段,OCR Master进程来不及将其信息更新到这些异常节点缓存而导致的不一致。
比如,在A节点发出了添加ocr镜像的命令,在这个时候B节点处于重启阶段。重启后A已经更新完毕,而此时B并不知道已经为ocr增加了一个新的镜像磁盘,健忘由此而生。
针对健忘症,
解决办法: 最简单的办法就是整个集群只有一份配置,各节点公用这份配置,无论在哪个节点修改配置,都是修改相同的配置文件,这样就是保证修改不会丢失。Oracle采用的方法就是把这个配置文件放在共享存储上,这个文件就是OCR Disk。
扩展
在整个集群中,只有一个节点能对OCR Disk进行读写操作,这个节点叫作Master Node,所有节点都会在内存中保留一份OCR的拷贝,同时哟一个OCR Process从这个内存中读取内容。OCR内容发生改变时,由Master Node的OCR Process负责同步到其他节点的OCR Process。
因为OCR的内容如此重要,Oracle每4个小时对其做一次备份,并且保留最后的3个备份,以及前一天,前一周的最后一个备份。这个备份由Master Node CRSD进程完成,备份的默认位置是$CRS_HOME\crs\cdata\<cluster_name>目录下。每次备份后,备份文件名自动更改,以反应备份时间顺序,最近一次的备份叫作backup00.ocr。这些备份文件除了保存在本地,DBA还应该在其他存储设备上保留一份,以防止意外的存储故障。
由于OCR很重要,因此提供了一定的工具:
3.2.1 ocrdump
该命令能以ASCII的方式打印出OCR的内容,但是这个命令不能用作OCR的备份恢复,也就是说产生的文件只能用作阅读,而不能用于恢复。
命令格式:ocrdump [-stdout] [filename] [-keyname name] [-xml]
参数说明:
-stdout:把内容打印输出到屏幕上
Filename:内容输出到文件中
-keyname:只打印某个键及其子健内容
-xml:以xml格式打印输出
示例:把system.css键的内容以.xml格式打印输出到屏幕
[root@rac1 bin]#./ocrdump -stdout -keyname system.css -xml|more
……
这个命令在执行过程中,会在$CRS_HOME\log\<node_name>\client目录下产生日志文件,文件名ocrdump_<pid>.log,如果命令执行出现问题,可以从这个日志查看问题原因。
3.2.2 ocrcheck
Ocrcheck命令用于检查OCR内容的一致性,命令执行过程会在$CRS_HOME\log\nodename\client目录下产生ocrcheck_pid.log日志文件。 这个命令不需要参数。
[root@rac1 bin]#./ocrcheck
3.2.3 ocrconfig
该命令用于维护OCR磁盘,安装clusterware过程中,如果选择External Redundancy冗余方式,则只能输入一个OCR磁盘位置。但是Oracle允许配置两个OCR磁盘互为镜像,以防止OCR磁盘的单点故障。OCR磁盘和Votedisk磁盘不一样,OCR磁盘最多只能有两个,一个Primary OCR和一个Mirror OCR。
[root@rac1 bin]# ./ocrconfig –help
–查看自助备份
[root@rac1 bin]#./ocrconfig -showbackup
在缺省情况下,OCR自动备份在$CRS_HOME\CRS\CDATA\cluster_name目录下,可以通过ocrconfig -backuploc <directory_name>命令修改到新的目录
3.2.4 使用导出,导入进行备份和恢复
Oracle推荐在对集群做调整时,比如增加,删除节点之前,应该对OCR做一个备份,可以使用export备份到指定文件,如果做了replace或者restore等操作,Oracle建议使用cluvfy comp ocr -n all命令来做一次全面的检查。该命令在clusterware的安装软件里。
1) 首先关闭所有节点的CRS
[root@rac1 bin]#./crsctl stop crs
2) 用root用户导出OCR内容
[root@rac1 bin]# ./ocrconfig -export /u01/ocr.exp
6) 检查OCR一致性
[root@rac1 bin]# ./ocrcheck
PROT-601: Failed to initialize ocrcheck