ocr就好比windows的一个注册表,存储了所有与集群,rac数据库相关的配置信息。而且是公用的配置,也就是说多个节点共享相同的配置
ocr就好比windows的一个注册表,存储了所有与集群,,rac数据库相关的配置信息。而且是公用的配置,也就是说多个节点共享相同的配置信息。因此该配置应当存储于共享磁盘。本文主要基于oracle 10g rac描述了集群的ocr以及ocr产生的健忘问题。
一、ocr的特点
类似于windows注册表,用于存储所有与集群,rac数据库相关的配置信息
被多个节点所共享,因此,只能存储于共享磁盘。支持单disk以及镜像方式来存放。大小通常100mb-1gb。
在oracle 10g中,只能存储于裸设备或者ocfs文件系统,以及nfs,gfs文件系统。oracle 11g中可以直接存放在asm中。
整个集群及rac数据库配置需要在ocr中来进行维护。换句话说,就像windows注册表的导入导出,修改、更新键值等。
通常情况下,ocr中的配置信息会随着使用工具对其进行自动更新。如srvctl,dbca,oem,netca等。
而ocr的配置与维护则通常包括ocr的校验,备份,查看ocr的内容,添加移出ocr文件,重定位,修复ocr文件。
ocr磁盘最多只能有两个,一个primary ocr 和一个mirror ocr,两个ocr 磁盘互为镜像,以防止ocr 磁盘的单点故障。
注:集群,我们通常指的是clusterware,而rac数据库,即是基于集群之上的数据库。
二、ocr包含的内容
ocr中通常包含下列内容
节点成员信息
数据库实例,节点,以及其他的映射关系
asm
资源配置信息(vip,services等等)
服务特性(service characteristics)
oracle集群中相关进程的信息
crs控制的第三方应用程序信息
三、ocr的工作过程
由于ocr存放于共享存储,因此在cluster中的每个节点都通过本地ocr进程访问ocr缓存在其内存中维护着的一个副本。同时由于对ocr
的所有操作必须确保ocr内容完整性,所以在oracle clusterware运行过程中,并不是所有结点都能操作ocr disk。 只有一个ocr进程对共
享存储中的ocr进行读写操作。这个节点叫作ocr master结点。此进程负责刷新(refresh)其自己拥有的本地缓存以及cluster中其他节点
的ocr cache。也就是说,ocr客户端查询都是通过本地ocr进程来查询本地的一个ocr副本,而当客户端需要更新ocr时,它们将通过本地ocr
进程与那个扮演读写ocr文件的进程ocr master进行交互。
#下面是一个两节点的rac,可以看出ocr master节点起初在第一个节点,后来转移到第二个节点,再后来又到第一个节点。
#这是由于节点一关闭或节点一上的集群处于不可用状态导致ocr master节点发生了转移。
oracle@bo2dbp:/u01/oracle/crs/log/bo2dbp/cssd> cat ocssd.log | grep master node
[ cssd]clss-3001: local node number 1, master node number 1
[ cssd]clss-3001: local node number 1, master node number 1
[ cssd]clss-3001: local node number 1, master node number 1
[ cssd]clss-3001: local node number 1, master node number 1
[ cssd]clss-3001: local node number 1, master node number 2
[ cssd]clss-3001: local node number 1, master node number 1
oracle@bo2dbp:~> grep -i master node $ora_crs_home/log/bo2dbp/cssd/ocssd.log | tail -1
[ cssd]clss-3001: local node number 1, master node number 1
ocr客户端应用有:oracle通用安装器(oui)、srvctl、企业管理器(em)、dbca、dbua、netca和虚拟网络协议助理(vipca)。
此外,ocr维护管理着crs内部中定义的各种应用程序的资源的依赖和状态信息,特别是database、instance、services和节点的应用程序。
ocr配置文件的名字是ocr.loc,linux下位于/etc/oracle/ocr.loc。
后附ocr结构图