為什么數(shù)據(jù)庫操作時總是未響應(yīng)?
1、進行正確的維護操作
很多的數(shù)據(jù)庫無響應(yīng)故障都是由于不正確的維護操作引起的。應(yīng)避免在業(yè)務(wù)高峰期做大的維護操作,比如像MOVE、加主外鍵約束等會長時間鎖表的操作。如果的確需要,盡量使用正確的操作方法。比如用online方式重建索引;建主鍵、唯一鍵約束時先建索引,然后在建約束時指定新建的索引等等。也就是保證系統(tǒng)的并發(fā)性、可伸縮性,避免系統(tǒng)串行操作的出現(xiàn)。
2、優(yōu)化應(yīng)用設(shè)計、優(yōu)化數(shù)據(jù)庫性能
為避免性能問題導(dǎo)致在業(yè)務(wù)高峰期數(shù)據(jù)庫不能及時有效處理來自業(yè)務(wù)的請求,甚至于完全HANG住。對于數(shù)據(jù)庫中存在的串行訪問的部分進行優(yōu)化,比如latch、enqueue,還包括不合理的sequence設(shè)計等。特別是在RAC數(shù)據(jù)庫中,嚴重串行訪問等待往往更容易引起嚴重的性能問題。優(yōu)化應(yīng)用設(shè)計,使數(shù)據(jù)庫具有更好的可伸縮性和并行處理能力,能夠有效地避免性能問題引起的數(shù)據(jù)庫HANG住。
3、利用監(jiān)控系統(tǒng)隨時監(jiān)控系統(tǒng)負載
遇到系統(tǒng)負載過高,內(nèi)存不足,OS中虛擬內(nèi)存換頁很頻繁等情況時,及時采取措施;監(jiān)控ORACLE數(shù)據(jù)庫的核心進程,如pmon、smon等,看是否有異常,如過高的CPU消耗。出現(xiàn)異常應(yīng)立即處理;監(jiān)控歸檔空間的日志切換;監(jiān)控數(shù)據(jù)庫中的等待事件,比如是否有大量的enqueue、log file switch(archiving needed)、resmgr:become active等待事件等。
4、為數(shù)據(jù)庫打上補丁
很多的無響應(yīng)故障是由于ORACLE的BUG引起的,數(shù)據(jù)庫DBA應(yīng)關(guān)注當(dāng)前版本中有哪些BUG會導(dǎo)致數(shù)據(jù)庫HANG住,盡量為數(shù)據(jù)庫打上解決這些BUG的補丁。