srvctl新增資料庫資訊報錯

yangtingkun發表於2007-10-03

碰到一個比較奇怪的現象。使用srvctl命令新增資料庫時出現了錯誤:PRKP-1037 : Failed to create cluster database tradedb.


由於要使用RMAN將產品庫的RAC環境生成本地的RAC測試環境。

首先將兩臺伺服器的RAC環境建立起來,安裝了ORACLE CLUSTERWAREDATABASE SOFTWARE,由於要透過遠端資料庫的備份生成,因此利用DBCA建立資料庫。透過RMAN將遠端資料庫恢復到本地。

資料庫已經建立完畢,發現ASMLISTENER也自動新增到了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

資料庫的並沒有真正關閉,回想起以前碰到過的一個小bugsvrctl對於不是自己進行的開啟、關閉操作並不認識詳細情況參考: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
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
oracle 20207 1 0 23:25:12 ? 0:03 asm_lms0_+ASM1
oracle 16115 16082 0 23:21:34 pts/4 0:00 -sh
oracle 11140 8416 0 22:00:14 pts/1 0:00 bash
oracle 20211 1 0 23:25:12 ? 0:00 asm_mman_+ASM1
oracle 20252 1 0 23:25:12 ? 0:00 asm_rbal_+ASM1
oracle 19158 18798 0 23:24:18 ? 0:02 /oracle/app/product/10.2/crs/bin/evmd.bin
oracle 20213 1 0 23:25:12 ? 0:00 asm_dbw0_+ASM1
oracle 20225 1 0 23:25:12 ? 0:00 asm_lgwr_+ASM1
oracle 20243 1 0 23:25:12 ? 0:00 asm_ckpt_+ASM1
oracle 20551 1 0 23:25:23 ? 0:01 /oracle/app/product/10.2/database/bin/racgimon daemon ora.pre1.ASM1.asm
oracle 20287 1 0 23:25:13 ? 0:01 asm_lck0_+ASM1
oracle 20250 1 0 23:25:12 ? 0:00 asm_smon_+ASM1
oracle 9153 3066 0 23:56:29 pts/4 0:00 grep ora
oracle 20205 1 0 23:25:11 ? 0:03 asm_lmd0_+ASM1
oracle 17810 17749 0 22:44:00 pts/2 0:00 bash
oracle 3066 19185 0 23:52:39 pts/4 0:00 -sh
oracle 20753 1 0 23:25:31 ? 0:00 /oracle/app/product/10.2/crs/opmn/bin/ons -d
oracle 20203 1 0 23:25:11 ? 0:03 asm_lmon_+ASM1
oracle 23627 23536 0 22:08:15 pts/6 0:00 -sh
oracle 23691 23627 0 22:08:17 pts/6 0:00 bash
oracle 9154 9153 0 23:56:29 pts/4 0:00 ps -ef
oracle 17749 14738 0 22:43:57 pts/2 0:00 -sh
oracle 19440 19260 0 23:24:47 ? 0:00 sh -c /bin/sh -c 'ulimit -c unlimited; cd /oracle/app/product/10.2/crs/log/pre1
$ srvctl start db -d pretrade
$ ps -ef|grep ora
oracle 11382 1 0 23:57:54 ? 0:00 ora_diag_prerac1
oracle 11384 1 0 23:57:54 ? 0:00 ora_psp0_prerac1
.
.
.
oracle 11417 1 1 23:57:54 ? 0:03 ora_lmd0_prerac1
oracle 20250 1 0 23:25:12 ? 0:00 asm_smon_+ASM1
oracle 17470 1 1 00:01:48 ? 0:00 ora_m000_prerac1
oracle 11461 1 1 23:57:55 ? 0:01 ora_mmon_prerac1
$ srvctl status database -d pretrade
Instance prerac1 is running on node pre1
Instance prerac2 is running on node pre2

至此,srvctl可以正常工作了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-69445/,如需轉載,請註明出處,否則將追究法律責任。

相關文章