Create spfile from pfile命令要注意

quanjima發表於2014-11-03
                     

自從9i版本開始,Oracle資料庫開始引進另外一種初始化引數檔案,spfile.簡單說明一點:①該引數是一個二進位制檔案,不可以用文字編輯器直接編輯修改;②一般駐留在Database  server端;③對引數的修改在資料庫重新啟動後仍然生效;④可以透過RMAN工具進行備份。Oracle現在已經不推薦使用PFILE了。資料庫在啟動的過程當中預設讀取引數檔案的順序是:在$ORACLE_HOME/dbs路徑下查詢並使用名為spfileSID.ora的引數檔案啟動,次之查詢spfile.ora檔案,最後才會查詢名為initSID.ora的pfile來啟動資料庫,若這三個檔案都沒有查到,則資料庫在預設情況下就啟不來。當然,我們也可以在啟動的過程中顯示指定使用一個非預設路徑下的某個非預設命名的pfile來啟動資料庫,命令類似於{SQL>startup pfile=/u01/app/..../init.ora}。但是,我們卻不可以在啟動的過程中顯示指定用某個SPFILE來啟動資料庫!

在這裡,我想說明的是:我們在做PFILE與SPFILE互相“倒騰”的過程當中要稍加留意的是,一定要注意引數檔案的路徑要寫全,如果不是利用預設的路徑。

例如:我在一次解決問題的過程當中,就犯了一個低階的錯誤:客戶應用環境下當前的SPFILE丟掉了,沒有有效地引數檔案備份,只有一個不能用的PFILE,例項根本就無法載入了。好在,客戶在建資料庫的最後一步過程中,保留了指令碼。這樣,就可以利用該檔案來啟動資料庫了,啟動例項之後,我就執行了:SQL>create spfile from pfile;返回結果提示,SPFILE建立成功,然後shutdown,再啟動。結果報錯,“ORA-03113: 通訊通道的檔案結束 ORA-01041: 內部錯誤, hostdef 副檔名不存在”,例項無法啟動。我就很詫異了???後來,問題的原因就是執行SQL>create spfile from pfile的時候,沒有顯示指定pfile=xxxxx,也就是說,利用pfile來建立SPFILE的過程當中,pfile本身就是一個不可以用來啟動例項的引數檔案,那麼利用該檔案來建立出來的SPFILE肯定也是一個“廢品”檔案了。解決問題的方法:重新利用那個指令碼中的引數檔案啟動例項,然後顯示的利用該檔案來建立一個可用的SPFILE。經過仔細的調整初始化引數,最後資料庫有了SPFILE,可以正常啟動到OPEN階段!!!

結論:我們在做引數檔案互相轉換的過程當中,要謹慎確認,建立檔案的源頭是不是一個正確的可用的檔案。

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

相關文章