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