sqlplus無法啟動的問題及解決

dbhelper發表於2014-11-27
今天效能測試部門的同事問我一個問題,說他跑一個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之類的名字,格式化的時候就給漏掉了。
他知道這個問題,一個勁的感嘆,真是不應該啊。折騰了好幾個小時了。



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

相關文章