(1)OCR简介 Oracle集群使用两种类型的文件来管理集群资源和节点:OCR (Oracle Cluster Registry, Oracle集群注册表)和表决磁盘(Voting Disk)。这两种文件必须存放在共享存储上。其中,OCR用于解决健忘问题,表决磁盘用于解决脑裂问题。在Oracle 11.2中引入一个新的文件,称为OLR(Oracle Local Registry, Oracle本地注册表),它只允许存放在本地。
Oracle集群软件(Clusterware)把整个集群的配置信息放在共享存储上,这个存储就是OCR磁盘(OCR Disk)。OCR是Oracle RAC配置信息仓库,它管理集群节点的相关信息及实例到节点的映射信息。因此,OCR的内容非常重要,对OCR的操作必须确保OCR内容完整性。在整个集群运行过程中,并不是所有节点都能操作OCR磁盘,而只有一个节点能对OCR磁盘进行读写操作,这个节点称为Master Node。在每个节点的内存中都有一份复制的OCR内容,这份称为OCR Cache。同时,每个节点都有一个OCR Process来读写OCR Cache,但只有一个节点的OCR Process能读写OCR磁盘中的内容。当OCR内容发生改变时,由Master Node的OCR Process负责更新本地和其他节点的OCR Cache内容。
所有需要OCR内容的其他进程,比如OCSSD、EVM等都被称为Client Process。这些进程不会直接访问OCR Cache,而是向OCR Process发送请求,借助OCR Process获得内容。如果想要修改OCR内容,也要由该节点的OCR Process向Master node的OCR process提交申请,由Master OCR Process完成物理的读写,并同步所有节点OCR Cache中的内容。
OCR的结构如下图所示。
OCR的结构 OCR中保存着整个集群的配置信息,配置信息以“Key-Value”的形式被保存着。在Oracle Clusterware安装的过程中,安装程序会提示用户指定OCR位置。用户指定的这个位置会被记录在/etc/oracle/ocr.loc(Linux或AIX)或者/var/opt/oracle/ocr.loc(Solaris系统)文件中。Oracle Clusterware在启动时会根据这里面的内容从指定位置读入OCR内容。
其中,ocrconfig_loc指定OCR的位置。如果为OCR指定了镜像(Mirror),那么还会出现选项ocrmirrorconfig_loc,用于定义OCR镜像的位置。local_only指定是否是RAC系统,如果这个值为FALSE,那么表示是RAC系统,如果这个值为TRUE,那么表示是单实例系统(在使用ASM时需要)。
整个OCR的信息是树形结构,有3个大分支:分别是SYSTEM、DATABASE和CRS。每个分支下面又有许多小分支。OCR记录的信息只能由root用户修改。
OCR中通常包含下列内容:
1)节点成员信息。
2)数据库实例、节点以及其他的映射关系。
3)ASM。
4)资源配置信息(vip、services等)。
5)服务特性(Service characteristics)。
6)Oracle集群中相关进程的信息。
7)CRS控制的第三方应用程序信息。
可以使用命令“ocrdump -local -stdout -xml|more|grep -i \<name\>|sed -e's∧<NAME\>//g' -e 's∧<VNAME\>//g'|awk -F. '{print $1, $2, $3}'|uniq"将OCR中的内容输出到屏幕上。
(2)OCR备份恢复与Oracle数据库的备份恢复相似,OCR的备份也有物理备份和逻辑备份,因此有两种备份方式和两种恢复方式。物理备份是自动进行的,逻辑备份需要手动进行。
因为OCR的内容如此重要,所以Oracle每4h对其做一次物理备份,并且保留最后的3个物理备份,以及前一天、前一周的最后一个物理备份。用户不能自定义物理备份频率以及备份文件的副本数。这个备份由Master Node CRSD进程完成,备份的默认位置在$GRID_HOME/cdata/<cluster_name>目录下,也可由命令ocrconfig -showbackup获取备份的位置。每次备份后,备份文件名自动更改,以反映备份时间顺序,最近一次的备份称为backup00.ocr。这些备份文件除了保存在本地,DBA还应该在其他存储设备上保留一份,以防止意外的存储故障。备份目录可以通过命令“ocrconfg -backuploc <directory_name>”修改。
物理恢复OCR的过程一般有如下几个步骤:
其实OCR也可以通过手动的方式导出、导入,方法如下:
使用ocrconfig -export方式产生的备份,统称之为逻辑备份。对于OCR的配置发生重大的变化前后,如添加删除节点,修改集群资源,创建数据库等,都建议使用逻辑备份。对于由于错误配置而导致的OCR被损坏的情形,可以使用ocrconfig -import方式进行恢复。逻辑备份的恢复方式和物理备份的恢复方式一致,这里不再赘述。
对OCR的恢复还可以采用dd、kfed及md_restore命令进行,这里不再详述。
(3)OLR OCR是用于保存CRSD所管理的资源的注册表,但是在CRSD启动之前集群还有很多初始化资源(例如ASM实例)需要启动,所以,只有OCR是不够的。因此,Oracle在11gR2版本中推出了另一种注册表OLR(Oracle Local Registry,Oracle本地注册表)。OLR类似于Oracle集群注册表,但是OLR只存储与本地节点有关的信息。OLR不与集群中的其他节点共享。OLR存储了集群启动初期ohasd (Oracle High Availability Service)使用的重要环境,如Oracle集群件的版本、配置等。如果OLR丢失或损坏,那么将会导致ohasd进程启动失败。所以,OLR的主要作用就是为ohasd守护进程提供集群的配置信息和初始化资源的定义信息。
Oracle在一个名为/etc/oracle/olr.loc(Linux或AIX)或者/var/opt/oracle/olr.loc(Solaris系统)的文本文件中存储了OLR配置文件的位置。当集群启动时,ohasd会从该文件中读取OLR的位置。对于集群环境(GI Cluster)而言,OLR的文件名一般为$GRID_HOME/cdata/<hostname.olr>,而对于单节点(GI Standalone, Oracle Restart)而言,OLR的文件名一般为$GRID_HOME/cdata/localho st/<ho stname.olr>。下例为集群环境的配置:
OLR的结构仍然沿用了和OCR相同的树形结构,而且其中的信息组织形式和OCR也是相同的。
所以,其维护类似于OCR的维护过程。它们常用到的维护工具有ocrconfig、ocrdump和ocrcheck。其中,加上-local表示对OLR的操作,否则是对OCR的操作。
1)ocrcheck 对OCR/OLR执行快速健康检查,并输出空间使用统计信息。
2)ocrdump 将OCR/OLR的内容转储到一个操作系统文件。
3)ocrconfig 对OCR/OLR执行导入、导出、添加、替换、删除、恢复和显示备份操作。
(4)OLR备份恢复 OLR的备份策略和OCR的有所不同,默认情况下GI在初始安装时会在路径$GRID_HOME/cdata/<节点名>下产生一个备份。OLR不会被自动备份,如果在集群的一些配置信息发生改变后,需要使用下面的命令手动进行备份:
建议在集群的重要配置信息(例如:集群私网配置)发生改变之后,使用命令ocrconfig -local -manualbackup手动备份OLR。当OLR丢失之后,可以使用命令“ocrconfig -local -restore <OLR备份文件>”来恢复,不能从集群的其他节点复制OLR到本地节点,这是因为OLR中保存的一些信息是针对本地节点的。如果需要验证OLR的一致性,那么可以使用ocrcheck -local命令。简单地说,所有适用于OCR的命令同样适用于OLR,但是需要增加-local选项。
对于OLR的备份恢复简单过程如下(MOS: 1193643.1和1368382.1):
(5)表决磁盘 表决磁盘(Voting Disk)也称为仲裁盘,表决磁盘文件主要用于记录节点成员状态信息,例如,包含哪些节点成员,节点添加删除信息的记录等。在出现脑裂时,表决磁盘可以用来决定哪个节点获得控制权,其他的节点必须从集群中剔除。表决磁盘存储在ASM中,有如下几点要求:
1)表决磁盘文件必须全部放入ASM中。
2)表决磁盘存在ASM中的个数不能修改,而是通过ASM的NORMAL、HIGH、EXTERNAL冗余级别决定的。例如:在NORMAL中必须有3个故障组3个表决磁盘,在HIGH中必须要有5个故障组5个表决磁盘,在EXTERNAL只有1个表决磁盘。
3)表决磁盘文件在Oracle 11gR2中不再支持dd命令对其进行备份和还原,而是支持crsctl相关命令或自动备份。在Oracle 11gR2之前的版本,如果要备份表决磁盘的内容那么只有使用dd命令进行备份。
4)表决磁盘文件的个数必须是奇数,便于投票选举,且表决磁盘文件的个数最多为15个,但一般没必要超过5个。
在安装集群时也会提示指定表决磁盘的位置。安装完成后可以通过如下命令来查看表决磁盘的位置:
另外,也可以从V$ASM DISK这个视图中查询,VOTING FILE列为Y的表示包含表决磁盘:
表决磁盘的配置位置是在GPnP profile文件中。对于表决磁盘的维护有很多命令,这里不再详述。
最后需要说明的一点是,如果表决磁盘损坏,而OCR或OLR的备份不可用,那么可以通过重新执行root.sh脚本的方式来修复OCR,修复之后除OCR磁盘组外的所有磁盘组,只要磁盘头没有损坏,就都可以直接对磁盘组进行MOUNT操作来恢复业务数据库。因此,强烈建议OCR磁盘和其他存放数据库数据的磁盘分开存放。