首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 10g 效能調優參數筆記:USE_INDIRECT_DATA_BUFFERS、PRE_PAGE_SGA、LOCK_SGA、SGA_TARGET 實務詳解

     編輯:Oracle 資料庫基礎

Oracle 10g 提供多項進階 SGA 管理參數,正確設定可突破 32-bit 記憶體限制、預先載入 SGA 至實體記憶體、鎖定 SGA 避免分頁、啟用自動記憶體管理。本文詳細說明四大關鍵參數用途、適用場景、設定方法與副作用。

1. USE_INDIRECT_DATA_BUFFERS (32-bit 突破 2GB 限制)

  • 用途: 讓 32-bit 平台使用擴展緩衝區基址,支援 > 4GB 實體記憶體,SGA 可超過 2GB。
  • 適用: 32-bit OS + 大記憶體伺服器 (PAE 核心)。
  • 64-bit 平台: 參數被忽略,原生支援大記憶體。
  • 設定: USE_INDIRECT_DATA_BUFFERS=TRUE (靜態參數,需重啟)。
  • 注意: 需 OS 核心支援 PAE (Physical Address Extension),Windows 需 /PAE 啟動參數,Linux 需 PAE 核心。

2. PRE_PAGE_SGA (啟動時預先載入 SGA 至實體記憶體)

  • 預設: FALSE (僅配置虛擬記憶體,Touch 時才分頁入實體)。
  • 設為 TRUE: 啟動過程中 Touch 所有 SGA 頁面,強制載入實體記憶體。
  • 優點: 實例啟動即達最大效能,避免首次存取分頁延遲。
  • 缺點: 啟動時間顯著變長 (視 SGA 大小與 IO 速度)。
  • 建議: 核心業務、對延遲極度敏感系統啟用;一般系統保持 FALSE。

3. LOCK_SGA (鎖定 SGA 於實體記憶體,禁止分頁)

  • 預設: FALSE。
  • 設為 TRUE: 鎖定所有 SGA 頁面於實體記憶體,OS 不會 Swap Out。
  • 前提: OS 支援 mlock() / lock_pages_in_memory 權限 (Windows 需本地安全性原則授予 "Lock pages in memory" 給 Oracle 服務帳號)。
  • 風險: 若實體記憶體不足,OS 可能 OOM Killer 終止 Oracle 進程。
  • 建議: 僅在記憶體極度充裕 (SGA < 50% 實體 RAM) 且極度追求確定性延遲時啟用。

4. SGA_TARGET (自動共享記憶體管理核心開關)

  • 設為 > 0: 啟用 ASMM,Oracle 自動分配/調整 Shared Pool、DB Cache、Large Pool、Java Pool、Streams Pool (10gR2)。
  • 關係: SGA_TARGET ≤ SGA_MAX_SIZE。若 SGA_MAX_SIZE 未設或較小,自動提升至 SGA_TARGET。
  • 手動組件: LOG_BUFFER、DB_KEEP_CACHE_SIZE、DB_RECYCLE_CACHE_SIZE、DB_nK_CACHE_SIZE 仍需手動設定。
  • 前提: STATISTICS_LEVEL=TYPICAL/ALL。
  • 動態調整: ALTER SYSTEM SET SGA_TARGET=3G SCOPE=BOTH; 即時生效,無需重啟。

參數設定速查表

參數類型預設值動態修改典型建議值
USE_INDIRECT_DATA_BUFFERSStaticFALSE否32-bit 大記憶體伺服器 TRUE
PRE_PAGE_SGAStaticFALSE否核心低延遲系統 TRUE
LOCK_SGAStaticFALSE否記憶體充裕確定性系統 TRUE
SGA_TARGETDynamic0是總 SGA 目標值 (如 2G, 4G)

實務建議組合

  • 64-bit 現代伺服器: 僅設定 SGA_TARGET、SGA_MAX_SIZE,其餘保持預設。
  • 32-bit 歷史系統擴容: USE_INDIRECT_DATA_BUFFERS=TRUE + SGA_TARGET + PRE_PAGE_SGA=TRUE (視啟動時間容忍度)。
  • 即時交易/高頻交易: LOCK_SGA=TRUE + PRE_PAGE_SGA=TRUE + SGA_TARGET,確保零分頁延遲。

參數調優無銀彈,需依據硬體架構、OS 能力、業務 SLA 三維度決策,並在測試環境完整壓測驗證後上線。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved