這個問題很多DBA可能都碰到過吧:比如剛接手一個舊有系統(tǒng),原來的廠商不允許對代碼修改,或者是系統(tǒng)應(yīng)用比較關(guān)鍵。不允許作修改,或者是源代碼出于商業(yè)目的,進行了一定程度的加密,還有的時候可能是行政因素--領(lǐng)導(dǎo)為了避免責(zé)任,不允許你這樣做,但這個時候,系統(tǒng)的性能上的問題還比較嚴重,還有其他辦法怎么對系統(tǒng)進行優(yōu)化么?
在這里我嘗試總結(jié)一下可能有的途徑。
針對特定的SQL進行"外科手術(shù)" (Metalink 122812.1),改進執(zhí)行計劃
更新統(tǒng)計信息 (調(diào)整采樣率/柱狀圖統(tǒng)計)
調(diào)整索引 (添加或調(diào)整合適的索引,刪除不必要的索引)
創(chuàng)建物化試圖(用空間開銷來換取時間收益)
優(yōu)化OS和數(shù)據(jù)庫以外的其他東西
首先優(yōu)化操作系統(tǒng)-比如核心參數(shù)的合理調(diào)整,操作系統(tǒng)資源的合理分配; 磁盤IO的調(diào)整,這是很重要的一部分,因為磁盤IO速度很容易造成系統(tǒng)瓶頸;網(wǎng)絡(luò)資源的優(yōu)化-TCP/IP的參數(shù)調(diào)整;
調(diào)整Oracle初始化參數(shù)
優(yōu)化器模式的設(shè)定,db_cache 參數(shù)等設(shè)定,sga 大小等參數(shù)設(shè)定,都對數(shù)據(jù)庫性能有著重要的影響。
合理的系統(tǒng)資源調(diào)度
在一些批處理操作為主的系統(tǒng)中,系統(tǒng)資源的調(diào)度是比較重要的,調(diào)度不合理,很容易造成資源爭用。有的系統(tǒng)可能在系統(tǒng)創(chuàng)建之初調(diào)度是比較合理的,經(jīng)過一段時間運行之后,可能因為數(shù)據(jù)量的變化,SQL語句的執(zhí)行計劃變化等會造成操作時間上的重疊,這肯定會給系統(tǒng)帶來壓力上的問題。
調(diào)整數(shù)據(jù)庫對象
調(diào)整pctfree ,freelist ,存儲參數(shù)
調(diào)整表空間文件和數(shù)據(jù)庫對象(表、索引)的磁盤分布。
cache 一些常用的數(shù)據(jù)庫對象。
系統(tǒng)Bug問題帶來的影響/升級改進性能
Oracle軟件Bug多多,系統(tǒng)運行初期有的Bug帶來的危害還不夠明顯,隨著時間的推移,個別的Bug會給系統(tǒng)性能造成問題。這個時候?qū)ο到y(tǒng)的Bug 修復(fù)已經(jīng)對數(shù)據(jù)庫系統(tǒng)進行升級就是必要的。通過升級,修正Oracle軟件缺陷,同時在升級后也可能會增強數(shù)據(jù)庫引擎的效率。當(dāng)然,也要注意升級可能帶來的不良的影響。