1. 程式人生 > 其它 >sqlplus無法啟動的問題及解決(2) (25天)

sqlplus無法啟動的問題及解決(2) (25天)

今天效能測試部門的同事問我一個問題,說他跑一個shell指令碼呼叫sqlplus 結果報錯

Error 6 initializing SQL*Plus
SP2-0667: Message file sp1<lang>.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之類的名字,格式化的時候就給漏掉了。 他知道這個問題,一個勁的感嘆,真是不應該啊。折騰了好幾個小時了。