資料庫運行一段時間後,系統負載特徵會隨業務增長而改變,此時需針對作業系統層與 Oracle 實例層進行針對性調優。本文分享實戰經驗,聚焦於減少記憶體交換、控制分頁、鎖定 SGA 及實例參數微調。
Swapping 會造成嚴重效能損耗,應極力避免。在 Solaris/Unix 上可用 vmstat、sar 監控:
vmstat 5:每 5 秒顯示系統進程、虛擬記憶體、磁碟、分頁、CPU 活動摘要。sar -p 10 10:每 10 秒採樣 10 次,專注分頁活動。緩解措施:
db_block_buffers 釋放記憶體。少量分頁屬正常,過度分頁則嚴重拖慢效能。檢測方法:對比閒忙時段的 vmstat/sar -p 數據。解決途徑:
SGA(System Global Area)若頻繁被交換出入,將喪失快速存取優勢。需重新配置 Unix 核心,調整共享記憶體相關參數(如 shmmax, shmall),確保 SGA 常駐記憶體。
運行階段的資料庫層調優包含 SGA 元件(共享池、資料緩衝區、重做日誌緩衝區、大池)大小微調、I/O 與鎖爭用分析、優化器統計資訊收集與 SQL 執行計畫優化等,將於後續專文詳細探討。
作業系統層調優是資料庫穩定運行的基石,「減少交換、控制分頁、鎖定 SGA」三步走,能為上層資料庫引擎騰挪出確定性的運算資源,是每位 DBA 必修的基本功。