簡要記之,僅作備忘。
關鍵詞:紅旗Asianux3 +Oracle 10g R2 for Linux x86-64
1. 上午接到諮詢電話:Linux下Oracle無法啟動。約定下午到現場嘗試解決問題。
2. 到現場後,瞭解基本情況如下:
*.作業系統:Asianux3
*.資料庫:Oracle 10g R2 for Linux x86-64
*.問題表現:伺服器搬到新機房後,之前已裝好的Oracle資料庫無法正常使用,用戶端串連時報監聽錯誤。
3. 問題在前幾天已經發現。
待到現場後,探索服務器上listener.ora、sqlnet.ora、tnsnames.ora這三個檔案已被修改的面目全非。
嘗試一個一個還原。
4. 上述檔案修改還原後,Oracle的dbconsole仍無法啟動。
使用emctl status dbconsole 或e mctl start dbconsole命令,均有報錯:
-----------
OC4J Configuration issue.
/opt/app/oracle/product/10.2.0/db_1/oc4j/j2ee/OC4J_DBConsole_localhost_orcl not found.
-----------
5. 因是正在裝修的新辦公大樓,新機房還未連上外界網路。無法使用筆記本上網查詢問題,只好用手機代勞。
一般是因修改Oracle綁定的伺服器的機器名,造成無法啟動Oracle服務。
但此伺服器在搬遷後只做了IP地址修改,並未對機器名做修改。
一時困惑,無解。
6. 系統目前正在測試部署中,資料庫中還無任何資料。
徵得同意後,決定重裝Oracle。
7. 卸載Oracle後,使用Oranavi做全新安裝。
前段安裝比較順利。在環境檢測階段網路裝置報了一個“未執行”,忽略,繼續。
當建立資料庫執行個體進行到74%時,出現異常:
-----------
參數PORT的值null無效
請參閱/opt/app/oracle/product/10.2.0/db_1/cfgtoollogs/dbca/orcl/emConfig.log中的記錄檔。
-----------
此資料庫執行個體安裝失敗。確定後,繼續完成Oracle的安裝。
安裝完畢後,發現tnsnames.ora中原本應是1521的連接埠,寫著“null”:PORT = null。
8. 懷疑1521連接埠被佔用。或者某設定檔或Oracle使用者的環境變數中未明確指定1521連接埠。
折騰。
一圈下來後,沒有發現任何有價值線索。
無奈,用dbca單獨建立第二個資料庫執行個體,做測試安裝。
同樣的問題,在建立資料庫執行個體到74%時,拋出異常:參數PORT的值null無效。
9. 囿於環境。繼續用手機上網搜尋尋找問題。
終於發現2個多月前,有人遇到相似問題。提到在/etc/hosts檔案中主機IP配置可能有問題。
於是,開啟/etc/hosts檔案中查看。
果然,除了127.0.0.1的IP外,在/etc/hosts檔案中還設定綁定了一個在伺服器搬遷之前的舊主機IP。
10. 修改為現在的正確IP後,卸載已安裝的Oracle資料庫。
重新安裝至完畢,一切OK!
在環境檢測階段也無任何異常,全部通過。
11. 這是第一次使用Asianux作業系統。不知/etc/hosts在系統安裝時,預設的主機配置是如何寫的。
開啟RedFlag Linux,發現預設情況下,/etc/hosts中只有一行:
-----------
127.0.0.1 localhost.localdomain localhost
-----------
此配置使用設定127.0.0.1為HostIP,並無與系統真實的IP做任何綁定,可修改IP地址而Oracle伺服器不會受任何影響。
而在Asianux中,/etc/hosts中出現了多個主機IP。
顯然,是因修改了伺服器的IP而導致Oralce服務受到影響。修改伺服器IP的同時,也需同步修改/etc/hosts檔案中所使用的主機IP。
(還未得知此前該主機的舊IP是否為系統安裝後手工添加的,或與Asianux作業系統有關?需待確認和驗證。)
12. 在linux下,/etc/host是是主機名稱和IP設定檔。
/etc/hosts檔案中可配置如下類似內容:
-----------
127.0.0.1 localhost.localdomain localhost
192.168.1.100 linuxserver.com linuxserver
192.168.1.120 ftpserver ftp120
-----------
通常,hosts檔案中每行文字代表一個主機配置資訊。
每行文字由三部份組成,每部份由空格隔開:
第一部份:網路IP地址
第二部份:主機名稱或網域名稱
第三部份:主機名稱別名
另,每行文字也可為兩部份,即主機IP地址和主機名稱,如:192.168.1.100 linuxServer。
顯示主機名稱和主機IP的命令:
# hostname
# hostname -i
By JRQ
2010/07/10 於南昌
[ -- 完 -- ]