您好,欢迎访问一九零五行业门户网

Oracle 11g RAC OCR 与 db_unique_name 配置关系 说明

数据库的实例名本来是dave,因为做成rac standby,所以数据库的db_unique_name 就改成了dave_st。 这个在单实例是没有什么问题,
一. 问题一
在做rac standby 的alert log里发现如下错误: 
success: diskgroup data was mounted
error: failed toestablish dependency between database dave_st and diskgroup resourceora.data.dg
success: diskgroup fra was mounted
error: failed toestablish dependency between database dave_st and diskgroup resource ora.fra.dg 
数据库的实例名本来是dave,因为做成rac standby,所以数据库的db_unique_name 就改成了dave_st。 这个在单实例是没有什么问题,但rac 的db_unique_name 也会注册到ocr中。 
因此对于rac 的standby,除了要修改数据库的db_unique_name ,还需要修改ocr中,我这里的案例是我原来的rac 环境已经搭建好的情况,如果是新搭建的环境,就不会出现这种问题了。 
二. 问题二 原来的db_unique_name 是dave,后来改成了dave_st。 然后rac 节点的pfile,就会自动被修改,即使我们修改成dave_st, 在我们使用srvctl start 来启动数据库时,就会自动改成dave,导致不能启动,当然,手工修改之后,在进sqlplus,是可以正常启动,但是用srvctl 检查状态还是未启动。 
这也是为什么在rac 环境下推荐使用srvctl 来启动和关闭数据库,而 不是直接使用sqlplus来操作的原因。 
[oracle@rac2 dbs]$ cat initdave2.ora
spfile='+data/dave/spfiledave.ora' # line added by agent 
这样导致启动时找不到启动文件而报错,如下:
[oracle@rac1 dbs]$ srvctl start database -ddave
prcr-1079 : failed to start resourceora.dave.db
crs-5017: the resource actionora.dave.db start encountered the following error:
ora-01078: failure in processing systemparameters
ora-01565: error inidentifying file '+data/dave/spfiledave.ora'
ora-17503: ksfdopn:2failed to open file +data/dave/spfiledave.ora
ora-15056: additional error message
ora-17503: ksfdopn:2 failed to open file+data/dave/spfiledave.ora 
三.解决方法 上面的2个问题,都是因为ocr中数据库的配置出现了问题。 
--查看当前配置:
[grid@rac1 ~]$ srvctl config database -ddave
database unique name:dave
database name: dave
oracle home: /u01/app/oracle/11.2.0/db_1
oracle user: oracle
spfile:+data/dave/spfiledave.ora
domain:
start options: open
stop options: immediate
database role: primary
management policy: automatic
server pools: dave
database instances:dave1,dave2
disk groups: data,fra
mount point paths:
services:
type: rac
database is administrator managed
[grid@rac1 ~]$ 
我们这里将db_unique_name 修改成dave_st. 不过不能直接修改,需要先将数据库remove掉,在修改。 
这里要用oracle用户操作,不然可能会出现权限问题,,导致数据库不能启动。 
[oracle@rac1 ~]$ srvctl remove database -d dave 
[oracle@rac1 ~]$ srvctlconfig database -d dave_st
database unique name:dave_st
database name: dave
oracle home: /u01/app/oracle/11.2.0/db_1
oracle user: oracle
spfile:
domain:
start options: open
stop options: immediate
database role: primary
management policy: automatic
server pools: dave_st
database instances:
disk groups:
mount point paths:
services:
type: rac
database is administrator managed
[oracle@rac1 ~]$ 
--修改数据库的其他资源:
[oracle@rac1 ~]$ srvctl modify database -d dave_st -a data,fra
[oracle@rac1 ~]$ srvctl add instance -d dave_st -i dave1 -n rac1
[oracle@rac1 ~]$ srvctl add instance -d dave_st -i dave2 -n rac2
[oracle@rac1 ~]$ srvctl modify database -d dave_st -p +data/dave_st/spfiledave.ora 
最终结果如下:
[oracle@rac1 ~]$ srvctl config database -d dave_st
database unique name:dave_st
database name: dave
oracle home: /u01/app/oracle/11.2.0/db_1
oracle user: oracle
spfile:+data/dave_st/spfiledave.ora
domain:
start options: open
stop options: immediate
database role: primary
management policy: automatic
server pools: dave_st
database instances:dave1,dave2
disk groups: data,fra
mount point paths:
services:
type: rac
database is administrator managed 
[oracle@rac1 dbs]$ srvctlstatus database -d dave_st
instance dave1 is running on node rac1
instance dave2 is running on node rac2 
--验证进程状态:
[grid@rac1 u01]$ crs_stat.sh
name target state host
------------------------------ ------------------- -------
ora.data.dg online online rac1
ora.fra.dg online online rac1
ora.listener.lsnr online online rac1
ora.listener_scan1.lsnr online online rac1
ora.ocrvoting.dg online online rac1
ora.asm online online rac1
ora.cvu offline offline
ora.dave_st.db online online rac1
ora.gsd offline offline
ora.net1.network online online rac1
ora.oc4j offline offline
ora.ons online online rac1
ora.rac1.asm1.asm online online rac1
ora.rac1.listener_rac1.lsnr online online rac1
ora.rac1.gsd offline offline
ora.rac1.ons online online rac1
ora.rac1.vip online online rac1
ora.rac2.asm2.asm online online rac2
ora.rac2.listener_rac2.lsnr online online rac2
ora.rac2.gsd offline offline
ora.rac2.ons online online rac2
ora.rac2.vip online online rac2
ora.registry.acfs online online rac1
ora.scan1.vip online online rac1
[grid@rac1 u01]$ ls 
通过以上实验,也可以看出,ocr中的记录是根据db_unique_name 来进行判断的。而非db_name。
相关阅读:
oracle 11g rac 执行root.sh时遭遇 crs-0184/prcr-1070   
oracle 11g使用deferred_segment_creation 延迟段创建特性时遇到的问题总结
oracle 11g rac asm磁盘全部丢失后的恢复
oracle 11g新特性:rman脚本中使用替换变量
其它类似信息

推荐信息