zhangnana00 2013-02-26
OCR相当于Windows的注册表。对于Windows而言,所有的软件信息,用户,配置,安全等等统统都放到注册表里边。而集群呢,同样如此,所有和集群相关的资源,配置,节点,RAC数据库统统都放在这个仓库里。如果OCR被破坏则导致集群服务启动异常,需要修复OCR。因此OCR的管理与维护对于整个集群而言,是相当重要的。本文主要描述了Oracle 10g RAC下的OCR的管理与维护。
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 <-- OCR (primary)
Device/File integrity check succeeded
Device/File not configured <-- OCR Mirror (not configured)
Cluster registry integrity check succeeded
#如果clusterware处于关闭状态也可通过查询ocr.loc获得ocr文件所在的位置
oracle@bo2dbp:~> more /etc/oracle/ocr.loc
ocrconfig_loc=/dev/raw/raw1
local_only=FALSE
#校验OCR产生的日志文件
$ORA_CRS_HOME/log/<hostname>/client/ocrcheck_<pid>.log
3、dump OCR的内容
#缺省情况下,ocrdump命令导出文件被命名为OCRDUMPFILE,其文件类型为ASCII文件,如果缺省文件已存在,则收到PROT-303文件存在提示
#导出ocr到缺省文件
oracle@bo2dbp:~> 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
<OCRDUMP>
<TIMESTAMP>01/07/2013 14:15:42</TIMESTAMP>
<COMMAND>/u01/oracle/crs/bin/ocrdump.bin -stdout -keyname SYSTEM.css -xml </COMMAND>
<KEY>
<NAME>SYSTEM.css</NAME>
<VALUE_TYPE>UNDEF</VALUE_TYPE>
<VALUE><![CDATA[]]></VALUE>
<USER_PERMISSION>PROCR_ALL_ACCESS</USER_PERMISSION>
<GROUP_PERMISSION>PROCR_READ</GROUP_PERMISSION>
<OTHER_PERMISSION>PROCR_READ</OTHER_PERMISSION>
<USER_NAME>root</USER_NAME>
<GROUP_NAME>root</GROUP_NAME>
............
#导出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 <destination_file>
ocrconfig -replace ocrmirror <disk>
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