OCR相当于Windows的注册表。对于Windows而言,所有的软件信息,用户,配置,安全等等统统都放到注册表里边。而集群呢,同样如此,所有和集群相关的资源,配置,节点,RAC数据库统统都放在这个仓库里。如果OCR被破坏则导致集群服务启动异常,需要修复OCR。因此OCR的管理与维护对于整个集群而言,是相当重要的。本文主要描述了Oracle 10g RAC下的OCR的管理与维护。
OCR 相关参考:
Oracle RAC OCR 与健忘症
Oracle RAC OCR 的备份与恢复
1、环境
oracle@bo2dbp:~> cat /etc/issue
Welcome to SUSE Linux Enterprise Server 10 SP3 (x86_64) - Kernel r (l).
oracle@bo2dbp:~> crsctl query crs activeversion
CRS active version on the cluster is [10.2.0.3.0]
2、校验OCR文件
oracle@bo2dbp:~> ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 2
Total space (kbytes) : 204560
Used space (kbytes) : 6160
Available space (kbytes) : 198400
ID : 1512159503
Device/File Name : /dev/raw/raw1 ocrdump
oracle@bo2dbp:~> ls -hltr OCRDUMPFILE
-rw-r--r-- 1 oracle oinstall 44K 2013-01-07 14:13 OCRDUMPFILE
oracle@bo2dbp:~> file OCRDUMPFILE
OCRDUMPFILE: ASCII text
#导出ocr到指定文件
oracle@bo2dbp:~> ocrdump /tmp/`hostname`_ocrdump_`date +%Y%m%d:%H%M`
oracle@bo2dbp:~> ls /tmp/*ocr*
/tmp/bo2dbp_ocrdump_20130107:1415
#导出ocr中system.css项的内容
oracle@bo2dbp:~> ocrdump -stdout -keyname SYSTEM.css -xml >ocrdump.xml
oracle@bo2dbp:~> more ocrdump.xml
01/07/2013 14:15:42
/u01/oracle/crs/bin/ocrdump.bin -stdout -keyname SYSTEM.css -xml
SYSTEM.css
UNDEF
PROCR_ALL_ACCESS
PROCR_READ
PROCR_READ
root
root
............
#导出ocr中关于ocr的备份情况
oracle@bo2dbp:~> ocrdump -stdout -keyname SYSTEM.OCR -xml>ocrdump_bak.xml
4、添加OCR文件
#注,下面的描述中crs在所有的节点处于online状态,即对于ocr的添加,移动,代替crs无需处于offline状态
oracle@bo2dbp:~> crsctl check crs
CSS appears healthy
CRS appears healthy
EVM appears healthy
oracle@bo2dbp:~> ssh bo2dbs crsctl check crs
CSS appears healthy
CRS appears healthy
EVM appears healthy
ocrconfig -replace ocrmirror
ocrconfig -replace ocrmirror
oracle@bo2dbp:~> sudo -s rcraw status
root'''s password:
/dev/raw/raw1: bound to major 8, minor 33
/dev/raw/raw2: bound to major 8, minor 49
/dev/raw/raw11: bound to major 8, minor 113
/dev/raw/raw21: bound to major 8, minor 129
/dev/raw/raw22: bound to major 8, minor 145
running
oracle@bo2dbp:~> sudo -s /u01/oracle/crs/bin/ocrconfig -replace ocrmirror /dev/raw/raw11
root'''s password:
oracle@bo2dbp:~> ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 2
Total space (kbytes) : 204560
Used space (kbytes) : 6184
Available space (kbytes) : 198376
ID : 1512159503
Device/File Name : /dev/raw/raw1
Device/File integrity check succeeded
Device/File Name : /dev/raw/raw11 #新的ocr镜像已经被添加
Device/File integrity check succeeded
Cluster registry integrity check succeeded
#下面是连接到第二个节点查看
oracle@bo2dbp:~> ssh bo2dbp ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 2
Total space (kbytes) : 204560
Used space (kbytes) : 6184
Available space (kbytes) : 198376
ID : 1512159503
Device/File Name : /dev/raw/raw1
Device/File integrity check succeeded
Device/File Name : /dev/raw/raw11 #新的ocr镜像已经被添加
Device/File integrity check succeeded
Cluster registry integrity check succeeded
#从两个节点查看ocr.loc文件记录的ocr位置是否发生变化
oracle@bo2dbp:~> more /etc/oracle/ocr.loc
#Device/file getting replaced by device /dev/raw/raw11
ocrconfig_loc=/dev/raw/raw1
ocrmirrorconfig_loc=/dev/raw/raw11 #可以看到增加了ocrmirror位置
local_only=false
oracle@bo2dbp:~> ssh bo2dbs cat /etc/oracle/ocr.loc
#Device/file getting replaced by device /dev/raw/raw11
ocrconfig_loc=/dev/raw/raw1
ocrmirrorconfig_loc=/dev/raw/raw11
#下面来尝试多添加一个ocrmirror,我们使用裸设备为raw21的做为镜像
oracle@bo2dbp:~> sudo -s /u01/oracle/crs/bin/ocrconfig -replace ocrmirror /dev/raw/raw21
root'''s password:
oracle@bo2dbp:~> ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 2
Total space (kbytes) : 204560
Used space (kbytes) : 6184
Available space (kbytes) : 198376
ID : 1512159503
Device/File Name : /dev/raw/raw1
Device/File integrity check succeeded
Device/File Name : /dev/raw/raw21 #可以看到原来的raw11已经被替代了
Device/File integrity check succeeded
Cluster registry integrity check succeeded
#从上面的描述可知,ocr磁盘只能有两个,一个作为primary,一个作为mirror