碰到一个比较奇怪的现象。使用srvctl命令添加数据库时出现了错误:PRKP-1037 : Failed to create cluster database tradedb.
由于要使用RMAN将产品库的RAC环境生成本地的RAC测试环境。
首先将两台服务器的RAC环境建立起来,安装了ORACLE CLUSTERWARE和DATABASE SOFTWARE,由于要通过远端数据库的备份生成,因此利用DBCA建立数据库。通过RMAN将远端数据库恢复到本地。
数据库已经建立完毕,发现ASM和LISTENER也自动添加到了svrctl中。但是数据库信息并没有自动添加进去。
手工执行添加操作:
$ srvctl add db -d tradedb -o /oracle/app/product/10.2/database
PRKP-1037 : Failed to create cluster database tradedb.
检查了Metalink,发现了很多与这个错误相关的bug信息。而且大部分都没有解决。本打算放弃。
由于利用Rman恢复之后,数据库名称没有修改。同事将数据库名称进行了修改,并重启数据库后,再次尝试srvctl add命令发现居然可以顺利的通过了。
$ srvctl add db -d tradedb -o /oracle/app/product/10.2/database
$ srvctl add inst -d pretrade -i prerac1 -n pre1
$ srvctl add inst -d pretrade -i prerac2 -n pre2
数据库和实例信息已经成功添加到srvctl中,但是状态显示似乎并不正确:
$ srvctl status database -d pretrade
Instance prerac1 is not running on node pre1
Instance prerac2 is not running on node pre2
虽然两个实例都启动,但是Oracle并没有检测到。执行关闭操作:
$ srvctl stop db -d pretrade
$ ps -ef|grep ora
oracle 22103 1 0 23:26:19 ? 0:01 ora_ckpt_prerac1
oracle 22064 1 0 23:26:18 ? 0:06 ora_lms1_prerac1
.
.
.
oracle 22058 1 0 23:26:18 ? 0:04 ora_lmd0_prerac1
数据库的并没有真正关闭,回想起以前碰到过的一个小bug,svrctl对于不是自己进行的打开、关闭操作并不认识详细情况参考:http://yangtingkun.itpub.net/post/468/275571
于是尝试先打开,再关闭:
$ srvctl start db -d pretrade
$ srvctl stop db -d pretrade
$ ps -ef|grep ora
oracle 20871 1 0 23:25:35 ? 0:00 /oracle/app/product/10.2/database/bin/tnslsnr LISTENER_PRE1 -inherit
oracle 18798 1 0 23:23:15 ? 0:00 sh -c sh -c 'ulimit -c unlimited; cd /oracle/app/product/10.2/crs/log/pre1/evmd
root 18806 1 0 23:23:15 ? 0:11 /oracle/app/product/10.2/crs/bin/crsd.bin reboot
oracle 21959 1 0 23:26:15 ? 0:00 asm_o000_ ASM1
IXDBA.NET社区论坛
oracle 19749 19158 0 23:24:57 ? 0:00 /oracle/app/product/10.2/crs/bin/evmlogger.bin -o /oracle/app/product/10.2/crs/
oracle 20754 20753 0 23:25:31 ? 0:00 /oracle/app/product/10.2/crs/opmn/bin/ons -d
oracle 8416 7467 0 19:23:38 pts/1 0:00 -sh
oracle 20201 1 0 23:25:11 ? 0:00 asm_psp0_ ASM1
oracle 20254 1 0 23:25:12 ? 0:00 asm_gmon_ ASM1
oracle 19442 19441 0 23:24:47 ? 0:05 /oracle/app/product/10.2/crs/bin/ocssd.bin
oracle 20199 1 0 23:25:11 ? 0:02 asm_diag_ ASM1
oracle 20197 1 0 23:25:11 ? 0:01 asm_pmon_ ASM1
oracle 19441 19440 0 23:24:47 ? 0:00 /bin/sh -c ulimit -c unlimited; cd /oracle/app/product/10.2/crs/log/pre1/cssd;
oracle 24980 24918 0 21:30:34 pts/3 0:00 bash
oracle 24918 15079 0 21:30:32 pts/3 0:00 -sh
root 19310 19259 0 23:24:43 ? 0:00 /oracle/app/product/10.2/crs/bin/oprocd run -t 1000 -m 500 -f