1.项目环境:

平台:aix 6.1

oracle版本:11.2.0.3(psu5)

 

2.问题背景:

   由于业务发展,数据库需要扩容,规划把现网的某单实例库转换成rac。按照方案做完以后,两个节点的数据库都可以手动启停,但是无法通过crs启停(但是我已经向集群中注册过了database和instance信息)。crs_stat -t查看也能查到注册的数据库(状态为offline)

srvctl add database -d egapdb -o /apps/oracle/product/11.2.0.3/db_1srvctl add instance -d egapdb -i egapdb1 -n egapdb1srvctl add instance -d egapdb -i egapdb2 -n egapdb2

--如果使用的是asm那么还需要执行如下命令

srvctl modify instance -d egapdb -i egapdb1 -s +ASM1srvctl modify instance -d egapdb -i egapdb2 -s +ASM2

   因为数据库是能够手动正常启停的,我觉得把database注册信息从ocr中删除,再重新添加看能不能解决问题。

srvctl remove database -d <db_unique_name>

但是这个命令执行了很长时间没有反应,不报错,也没有日志,就一直卡着。于是直接ctrl+c把命令结束掉,命令结束掉以后crs_stat -t查看以后已经没有“ora.egapdb.db”的信息了。我以为是已经成功删除了,我准备再次向ocr中注册database资源,但是报如下错:

root@egapdb1:/#srvctl add database -d egapdb -o /apps/oracle/product/11.2.0.3/db_1PRCS-1007 : Server pool egapdb already existsPRCR-1086 : server pool ora.egapdb is already registered

   试着再次删除的时候也报错

root@egapdb1:/#srvctl remove database -d egapdbPRCD-1120 : The resource for database egapdb could not be found.PRCR-1001 : Resource ora.egapdb.db does not exist

 

3.解决方案:

  查了mos发现了一篇类似的troubleshooting

PRCS-1007 PRCR-1086 - Resources in OCR Are not Cleaned up Completely (Doc ID 1108023.1)

根据该文档,判断应该是由于我认为终止srvctl remove database -d 命令以后,导致ocr中注册信息没有完全清除。因为报的错误是

Server pool egapdb already exists”所以就尝试删除serverpool,

--继续报错

root@egapdb1:/#srvctl remove srvpool -g egapdbPRKO-3161 : Server pool egapdb is internally managed as part of administrator-managed database configuration and therefore cannot be removed directly via srvpool object.

后来通过下面的命令删除成功

   删除以后重新向ocr中注册database及instance,注册成功以后能够通过crs正常启停数据库

 

 

----希望能对遇到同样问题的朋友有所帮助!