Oracle9i的Windows平臺自動啟動問題

qinwen740發表於2010-12-22

前天把一臺伺服器的oracle升級了一下,從9.0升到9.2,同時打了patchset,執行了catpatch.sql,似乎一切正常。但過了兩天,發現,似乎資料庫本身不能隨系統一起啟動,每次都得手工進入啟動。

在網上查了一下,有建議重建windows服務的,也有建啟動指令碼放入啟動組的,不過我還是想正面解決這個問題。查到正常情況下,oracle的windows平臺自啟動,和所建立的windows服務(OracleServiceXXX)以及一個登錄檔鍵值有關。而我的系統windows服務肯定已經設定為自動啟動,升級流程沒有提示任何錯誤。因此再查查登錄檔吧。

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME2

ORA_ORCL_AUTOSTART
ORA_ORCL_PFILE

因為曾經升級的關係,因此當前的Oracle不在通常所說的HOME2裡,Oracle的登錄檔部署結構和Java的發行版比較像,設定幾個profile,然後在所謂的選擇器裡設定當前的profile。

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ALL_HOMES

DEFAULT_HOME

而我的ORA_ORCL_AUTOSTART已經設定為TRUE,應該也沒有問題。但意外發現ORA_ORCL_PFILE指向一個不存在的PFILE。而9i預設優先使用SPFILE為啟動引數檔案。因為手工啟動可以成功,那麼估計是應用了SPFILE。為進一步證實是使用了SPFILE,在sqlplus使用下面語句確認。

SELECT name,value FROM v$parameter WHERE name='spfile';

返回

%ORACLE_HOME%\DATABASE\SPFILE%ORACLE_SID%.ORA

個人估計是ORA_ORCL_PFILE鍵使得Oracle的windows服務去查詢不存在的PFILE,因為查詢不到,所以導致啟動失敗。而手工啟動時,因為優先查詢SPFILE,因此不存在這個問題。於是把ORA_ORCL_PFILE改成;ORA_ORCL_PFILE,問題解決。

對於網上重建服務可以解決自啟動問題,估計原理應該也是異曲同工的。

http://blog.mllm.org/node/152

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

相關文章