天天看點

sqlplus無法啟動的問題及解決

今天性能測試部門的同僚問我一個問題,說他跑一個shell腳本調用sqlplus

結果報錯

Error 6 initializing SQL*Plus

SP2-0667: Message file sp1.msb not found

SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

我記得自己之前碰到過類似的問題,也是sqlplus啟動不了。

參見日志http://blog.itpub.net/23718752/viewspace-752926/

是因為ORACLE_HOME的設定多了一個"/"結果就報了錯,為此還專門重裝了一次資料庫。

今天碰到這個問題,我第一感覺就是ORACLE_HOME不對。讓同僚把ORACLE_HOME的值發過來。

[Mar26 16:14:26] > echo $ORACLE_HOME

/oravl01/oracle/11.2.0.3

我檢視了下,這個home沒有問題

然後他給我大概解釋了下這個shell腳本,

他們會專門寫一個參數檔案,裡面有ORACLE_HOME之類的變量,然後在shell腳本裡調用,因為業務流程複雜,可能好多shell腳本都有一定的依賴和嵌套調用。

我說先看看這個參數檔案吧,他從遠端機器上打開,我看了下,确實沒有問題,而且他說這個參數檔案一直沒有變過,從solaris環境上直接拿過來用的,

然後我說在哪開始調用的,打上幾個debug資訊好跟蹤,然後他又跑了一次腳本。

檢視腳本報錯資訊,連接配接串的值已經取到了。就是開始調用sqlplus的時候報錯。

我讓他看看腳本是不是有格式的問題,因為dos格式和linux格式的檔案還是有 "^M"的困擾的。

他為了驗證又格式化了一把原來的腳本,還是同樣的錯誤。

他已經沒招了,我說我看看腳本,看有沒有可能是unix到Linux複用腳本的時候有不相容的問題。

我自己登上系統,還是先檢視參數檔案。馬上就發現了問題。

cat -v parameters.ini

_ORACLE_HOME="/oravl01/oracle/11.2.0.3"^M

_ORACLE_SID="XXXX"^M

_TISPERF_DB="XXXX/XXXX@XXXX"^M

_KSH_PATH_OLD=/usr/bin/ksh^M

_KSH_PATH=/bin/ksh^M

原來這哥們從solaris copy這個檔案的時候還是經過了windows來中轉,參數檔案的名字也不是.sh .ksh之類的名字,格式化的時候就給漏掉了。

他知道這個問題,一個勁的感歎,真是不應該啊。折騰了好幾個小時了。