引言:單位2004年購置的HP小型機(jī)數(shù)據(jù)庫系統(tǒng),操作系統(tǒng)為HP-UX,數(shù)據(jù)庫為Oracle 9i,分別由CDCZ和CDFS兩臺HP小型機(jī)和HP1000磁盤柜組成雙機(jī)共享磁盤柜系統(tǒng)。該系統(tǒng)承載著單位的三個核心業(yè)務(wù)系統(tǒng)。最近出現(xiàn)三個業(yè)務(wù)系統(tǒng)不能正常訪問故障。本文介紹故障處理過程。
單位有2004年購置的HP小型機(jī)數(shù)據(jù)庫系統(tǒng),操作系統(tǒng)為HPUX,數(shù)據(jù)庫為Oracle 9i,分別由CDCZ和CDFS兩臺HP小型機(jī)和HP1000磁盤柜組成雙機(jī)共享磁盤柜系統(tǒng)。該系統(tǒng)承載著單位的三個核心業(yè)務(wù)系統(tǒng)。在12年的運(yùn)行過程中,基本沒有發(fā)生過問題。由于HP小型機(jī)系統(tǒng)對溫度的要求較高,溫度在30℃以上就會產(chǎn)生宕機(jī),所以單位中心機(jī)房的運(yùn)行環(huán)境保障非常得力,環(huán)境溫度始終保持在20℃-25℃之間。
三個業(yè)務(wù)系統(tǒng)均不能正常訪問,無法單獨(dú)連接業(yè)務(wù)系統(tǒng)的核心數(shù)據(jù)庫,確認(rèn)為核心數(shù)據(jù)庫問題。通過查看數(shù)據(jù)庫服務(wù)狀態(tài),主機(jī)已經(jīng)無法正常顯示出數(shù)據(jù)庫狀態(tài)。
1.經(jīng)查看數(shù)據(jù)庫日志,發(fā)現(xiàn)CDCZ主機(jī)上數(shù)據(jù)庫alert_cdcz.log日志內(nèi)顯示,有錯誤產(chǎn)生,根據(jù)日志查看錯誤日志內(nèi)容,主要如下:
(1)oracle/9.2/rdbms/log/cdcz_ora_9286.trc:ORA-07445: 出 現(xiàn) 異 常:核心轉(zhuǎn)儲 [kollalo()+208][SIGSEGV] [Invalid permissions for mapped object] [0x000000000] Tue Jul 26 09:25:32 2016 Errors in file
(2)/oracle/9.2/rdbms/log/cdcz_ora_25059.trc:ORA-04030: 在嘗試分配8528字 節(jié) (pga heap,ksm stack)時進(jìn)程內(nèi)存不足ORA-04030: 在嘗試分配32840 字節(jié) (pga heap,ksm stack) 時進(jìn)程內(nèi)存不足Tue Jul 26 10:57:31 2016 Errors in file /oracle/9.2/rdbms/log/cdcz_ora_26977.trc: ORA-04030: out of process memory when trying to allocate
(3)locat ASYNC_CONFIG配置錯誤
2.通過top命令查看到系統(tǒng)內(nèi)存剩余為50MB左右,說明系統(tǒng)內(nèi)存消耗過高,對數(shù)據(jù)庫影響非常大。
3.通過swapinfo -atm命令查看到系統(tǒng)對虛擬內(nèi)存使用率非常高,導(dǎo)致數(shù)據(jù)庫對用戶的請求響應(yīng)變慢。
4.綜合以上信息并在Oracle官方網(wǎng)站查詢資料后初步判斷:
(1)ORA-07445錯誤為Oracle數(shù)據(jù)庫軟件的Bug,需要通過對數(shù)據(jù)庫打補(bǔ)丁包來修正這個錯誤,也可以找出誘發(fā)這個錯誤的應(yīng)用語句,通過優(yōu)化語句避免觸發(fā)這個錯誤的發(fā)生。
(2)ORA-04030錯 誤,為CDCZ這臺主機(jī)內(nèi)核參數(shù)設(shè)置問題,可以通過調(diào)整內(nèi)核參數(shù)來修正這個錯誤,主機(jī)一共有大約50項可調(diào)整參數(shù),因為這個錯誤不是時刻發(fā)生,經(jīng)過調(diào)整后的效果還需要觀察。ASYNC_CONFIG,也是由于這個錯誤引起的。
CDCZ主機(jī)因為數(shù)據(jù)庫已經(jīng)導(dǎo)致宕機(jī),主機(jī)速度非常慢,故將這臺主機(jī)操作系統(tǒng)重新啟動,啟動后沒有加載數(shù)據(jù)庫,剩余內(nèi)存量為6.9GB。
CDFS主機(jī)也有部分內(nèi)存泄漏,故也將這臺主機(jī)重新啟動,啟動后剩余內(nèi)存6.9GB,啟動數(shù)據(jù)庫后剩余內(nèi)存3GB。
使用命令:cmruncl -fv重新啟動群集,數(shù)據(jù)庫正常啟動,應(yīng)用恢復(fù)正常。
1.將兩臺數(shù)據(jù)庫主機(jī)重新啟動后,加載Oracle數(shù)據(jù)庫服務(wù),數(shù)據(jù)庫運(yùn)行正常,同時三個業(yè)務(wù)系統(tǒng)也恢復(fù)正常。
2.目前,Oracle數(shù)據(jù)庫服務(wù)加載在CDCZ主機(jī)上,數(shù)據(jù)庫啟動完畢后剩余內(nèi)存為3GB左右,啟動完畢等各項業(yè)務(wù)均連接至數(shù)據(jù)庫,內(nèi)存驟減至1GB左右,經(jīng)查為三個業(yè)務(wù)系統(tǒng)中的一個業(yè)務(wù)消耗了大量內(nèi)存和連接。
圖1 系統(tǒng)在CDCZ上運(yùn)行狀態(tài)
圖2 將數(shù)據(jù)庫切換至主機(jī)CDFS上運(yùn)行狀況
3.本次調(diào)整了CDCZ主機(jī)上部分內(nèi)核參數(shù),調(diào)整后的效果還需要進(jìn)一步的觀察,因為引起數(shù)據(jù)庫宕機(jī)故障不是非常頻繁的發(fā)生,所以觀察需要一定的時間。同時根據(jù)故障現(xiàn)象,小型機(jī)內(nèi)存運(yùn)行已嚴(yán)重不足,計劃在一個月內(nèi)將小型機(jī)主機(jī)內(nèi)存擴(kuò)充至16GB。
4.目前系統(tǒng)運(yùn)行在CDCZ上,運(yùn)行的狀態(tài)如圖1所示。
通過上面運(yùn)行狀態(tài)記錄可以看到,目前這個PKG1顯示enabled是允許切換的。如果發(fā)生切換,會將數(shù)據(jù)庫切換至主機(jī)CDFS上運(yùn)行,狀態(tài)如圖2所示。
通過上面運(yùn)行狀態(tài)記錄可以看到,這個時候PKG1顯示disabled是不允許切換的,需要手動將這個模式更改過來。操作如下:
(1)以root用戶登錄到數(shù)據(jù)庫運(yùn)行的主機(jī)上。
(2) 用 cmviewcl命令查看群集運(yùn)行狀態(tài),如果AUTO_RUN狀態(tài)為disabled則鍵入命令:cmmodpkg e pkg1
(3)再次通過命令cmviewcl查 看AUTO_RUN狀態(tài),確認(rèn)狀態(tài)為enabled。
至此,整個小型機(jī)雙機(jī)及數(shù)據(jù)庫系統(tǒng)故障分析處理完畢。
對于老的HP小型機(jī)數(shù)據(jù)庫系統(tǒng),由于購置的年代為2004年,受當(dāng)時技術(shù)參數(shù)配置較低限制,尤其是內(nèi)存,所以我們在該系統(tǒng)運(yùn)行了一定的時間后,必須進(jìn)行定期的技術(shù)維護(hù)和巡檢處理,以便及時處理CPU、內(nèi)存運(yùn)行在飽和狀態(tài)故障,以及清理小型機(jī)系統(tǒng)和數(shù)據(jù)庫日志等具體工作。必要時,需要增加設(shè)備的技術(shù)參數(shù),如擴(kuò)充內(nèi)存等,熟練運(yùn)用HP小型機(jī)的命令去查看運(yùn)行狀態(tài)、配置小型機(jī)的雙機(jī)數(shù)據(jù)庫系統(tǒng)以及處理故障。