oracle登入無響應問題解決方案(oracle4612267補丁安裝教程),oracle11g安裝教程
今天中午將近12點的時候突然收到簡訊警示提示,公司的軟體長時間沒有話單產生。第一反應是公司的軟體掛掉了,所以立即進行了查看。重啟了所有軟體之後發現居然沒有回複正常,一直提示:
com.gs.db.DBException: java.sql.SQLException: Io異常: The Network Adapt
er could not establish the connection。
以為是資料庫停掉了,故去了plsql進行了登入,此時發現plsql輸入使用者名稱密碼之後無響應。
難道是監聽掛掉了?去資料庫伺服器本機登入試試,抱著這種想法去了資料庫伺服器上,使用sqlplus進行登入,發現sqlplus居然也登入不上。
哎呀我去~~邪了啊。會不會是串連太多了,把軟體跑死了,嘗試停止監聽已斷開所有串連,結果也是長時間無響應。去看了一下記憶體佔用率和CPU佔用率終於發現了問題所在。
記憶體還好沒看出什麼特別的地方,可是CPU就不正常了,佔用率居然是100%。
由於無法登入資料庫,故此無法使用常規的方式重啟資料庫軟體,故此只好選擇了重啟資料庫伺服器。重啟了之後雖然能夠正常使用了,但是心中還是耿耿於懷想找到無響應和CPU佔用率100%的原因,通過在網上找資料,終於發現原來這是一個oracle的bug。Oracle版本是10.2.0.1。只要Linux x86主機運行天數是是24.8的倍數都有可能引發該bug(剛剛好系統啟動並執行時間是198天),因為time()函數值為null,造成無限死迴圈,從而耗盡cpu,我的伺服器剛好有這個問題。
該Oracle BUG的解決方案如下:
解決辦法三種:
1)重啟主機;
2)打patch set,如升級到10.2.0.4;
3)對該bug單獨打臨時patch 4612267。
第一種治標不治本,臨時用用可以,但是不從根本上解決問題;第二種從根本上解決問題,但是需要重新安裝資料庫,費時費力;第三種最省事,但是需要停業務安裝補丁,並且有沒有人好心免費給你補丁還是回事。本人運氣好找到了oracle對應的補丁,還好下載的代價不是很高,不然要哭死。
得到補丁之後按著手冊上和網上的教程總結了如下的安裝步驟:
停止所有資料庫服務,一般來說就這三種
1、停止監聽:lsnrctl stop
2、停止dbconsole:emctl stop dbconsole(你要是安裝了就停,沒安裝不用管它)
3、停止資料庫:shutdown immediate
使用root使用者登入linux系統,建立一個檔案夾存放補丁檔案,名稱例如patch。建立完成之後將補丁上傳上去。
然後解壓縮:
解壓縮之後會看到一個4612267的目錄,此時不要直接進行安裝。
切換到oracle使用者之後進入此目錄,會看到有兩個檔案夾一個檔案。
其中檔案夾裡面就是具體的升級檔案了,那個txt就是一個描述檔案,可以不用管它。在這個目錄下執行patch apply命令開始安裝補丁:
執行成功之後會提示如下資訊:
此時他會詢問是否準備打補丁,這裡我們選擇y,輸入之後斷行符號就可以看到安裝過程了。
到這裡補丁安裝完畢,此時我們需要驗證一下補丁是否安裝成功。使用opatch lsinventory命令查看補丁是否安裝成功:
看到補丁號就說明我們安裝成功了。
如果有一天因為某些原因不需要這個不定了,我們也可以卸載掉。
進入補丁所在的目錄,執行以下命令:
$ORACLE_HOME/OPatch/opatch rollback -id 461226
然後一路y就行了。
本文中所涉及到的環境如下:
Linux
Linux hljtnitsdb 2.6.18-128.el5PAE #1 SMP Wed Dec 17 12:02:33 EST 2008 i686 athlon i386 GNU/Linux
Oracle
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
oracle補丁:
http://download.csdn.net/detail/wxlbrxhb/8567587