環境描述:OS/aix5.3-64bit DB/10.2.0.3-64bit
今天在一台aix生產系統上準備用裸裝置建立一個新的資料庫。於是調用dbca使用資料倉儲模板建庫。其中裸裝置與資料表空間以及spfile的對應關係儲存在wilson_raw.conf檔案中,該檔案內容如下:
control01=/dev/rlv_bas_ctl01
control02=/dev/rlv_bas_ctl02
control03=/dev/rlv_bas_ctl03
system=/dev/rlv_bas_system01
sysaux=/dev/rlv_bas_sysaux01
undotbs1=/dev/rlv_bas_undo01
temp=/dev/rlv_bas_temp01
users=/dev/rlv_bas_users01
redo1_1=/dev/rlv_bas_log11
redo1_2=/dev/rlv_bas_log12
redo2_1=/dev/rlv_bas_log21
redo2_2=/dev/rlv_bas_log22
redo3_1=/dev/rlv_bas_log31
redo3_2=/dev/rlv_bas_log32
spfile=/dev/rlv_bas_spfile
但是在調用dbca建庫過程中出現了如下錯誤
通過查詢metalink發現此錯誤與Oracle的一個bug有關,具體內容請參考10.2.0.3 Database Upgrade Using DBUA Failed With Error "failed to retrieve size of raw device" [ID 432725.1]。由於本系統上已經存在一個生產庫,出於安全考量沒有按照此metalink上的辦法替換rawutl命令。
解決辦法:通過dbca模板建庫生產建庫指令碼,通過修改建庫指令碼中資料檔案,記錄檔,控制檔案的檔案系統路徑改為裸裝置的路徑,接著在sqlplus中手動調用建庫指令碼即可建立成功。此時的新庫中資料檔案,記錄檔,控制檔案都是使用裸裝置,而pfile則是使用的檔案系統,如果希望spfile也使用裸裝置則可以通過dd或者create spfile from pfile將參數檔案從檔案系統遷移到裸裝置。