【故障處理】因GREP“花哨”功能導致ORA-12157錯誤的排查過程

secooler發表於2009-08-23
這個ORA-12157錯誤已經糾纏我有三天時間了,這個錯誤曾經一度讓我感到很絕望。
在一步一步的排查後,“罪魁禍首”終於漸漸的浮出水面。

注:這裡講述的ORA-12157發生的原因只是導致發生這個錯誤的一種可能,還有很多種情況會導致這個錯誤發生,
ORA-12157錯誤,發生原因的介紹非常的籠統,很難一蹴而就的確認問題的出處,類似7445、600等錯誤,需要一一甄別。


這裡簡單記錄一下排查問題的過程。

作業系統:RedHat 5.3

1.在Oracle的oerr工具中查詢到的錯誤解釋如下
ora10g@testdb183 /home/oracle$ oerr ora 12157
12157, 00000, "TNS:internal network communication error"
// *Cause:  Internal error during network communication.
// *Action: Not normally visible to the user. For further details, turn
// on tracing and reexecute the operation. If error persists, contact
// Worldwide Customer Support.

透過上面的解釋,可以認定毫無任何參考價值。
Metalink上也沒有太多的關於ORA-12157錯誤的資料。

2.問題是這樣被暴露出來的
為完成異機RMAN恢復,在測試資料庫上需要將10.2.0.1的資料庫升級到與生產資料庫一致的10.2.0.3版本資料庫,在軟體升級完成後,使用“sqlplus / as sysdba”方式登入資料庫,ORA-12157錯誤發生了,無論使用什麼手段都無法登陸到資料庫中,更不用說完成後續任務了。報錯現象如下:
ora10g@testdb /home/oracle$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.3.0 - Production on Tue Aug 18 19:17:04 2009

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

ERROR:
ORA-12157: TNS:internal network communication error


Enter user-name:
ERROR:
ORA-12157: TNS:internal network communication error


Enter user-name:
ERROR:
ORA-12157: TNS:internal network communication error


SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus
ora10g@testdb /home/oracle$

3.故障排查過程
1)第一個思路:升級用的介質有問題
順著這個思路,進行了測試。
找來曾經用於生產資料庫升級的10.2.0.3的升級介質,重新升級了兩次,同樣的錯誤又頻繁的出現。
否定了這個原因。

2)第二個思路:主機網路卡有問題
找來網路工程師,進行了從硬到軟的測試,測試結果:一切正常。
問題不在這裡

3)第三個思路:升級後的sqlplus工具問題
升級後,將生產環境的sqlplus工具複製過來,測試,發現故障依舊。
還不是問題的出處。

4)第四個思路:從作業系統開始徹底的重做
重新安裝作業系統,重新部署Oracle環境。
發現這一次的測試,在全新安裝完Oracle軟體之後,同樣的報出這個錯誤,無語~~~

5)第五個思路:既然徹底重新安裝都有問題,我開始懷疑是主機硬體的問題,於是我選擇了一臺最近新到的一臺主機,開始又一次的全新安裝
令我徹底無語的時候發生了,竟然還是報錯,難道是傳說中的RP問題?

6)測試和排查到此我已經倍受打擊,在諸多失敗嘗試後,我選擇了冷靜的思考與迴歸
首先全新的物理主機的安裝都會出現這個ORA-12157錯誤,這是不正常的。
可以肯定,問題一定出在在安裝配置的細節,開始細細的檢查每一個配置細節。
細心的與曾經不下上百次的成功安裝和測試經驗進行對比,真相終於要浮出水面了。

所有的配置都沒有變化,唯一變化的部分是“.bash_profile”內容。
這個檔案中多了“一行”資訊,如下:
export GREP_OPTIONS='--color=always'

曾經新增,設定的目的是高亮的形式顯示grep關鍵字結果。

就是這行的資訊就是導致了無數次的升級和安裝失敗“罪魁禍首”!

在取消了這些資訊之後,一切都恢復應有的“平靜”與“正常”。

4.小結
不可以按照思維定勢去做事,用最樸素的方法做好每一件事件。
不要追求“花哨”的功能,以“簡單實用”為根本準則。
希望這個故障處理過程能給您也起到警示的作用。

鑑於這是在升級後出的問題,如果返工時沒有備份,結果將更加慘烈,所以,在每一次重大操作之前,一定要備份(可以tar整個oracle目錄,也可以exp,也可以RMAN)。
有了備份就有了後路。

Goodluck.

-- The End --

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

相關文章