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

Oracle SGA 組件架構詳解與配置調優指南

     編輯:Oracle 資料庫基礎

SGA 系統全域區核心架構

SGA(System Global Area)是 Oracle 執行個體最關鍵的共享記憶體區域,由多個功能獨立的組件構成。理解各組件職責與交互關係,是記憶體調優的基石。

SGA 七大核心組件

  1. Fixed SGA(固定 SGA):啟動時固定大小,儲存指向其他 SGA 組件的指標與控制資訊,不可調整
  2. Database Buffer Cache(資料庫緩衝區快取):資料塊在記憶體的拷貝,核心 I/O 加速組件
  3. Redo Log Buffer(重做日誌緩衝區):重做項目前置寫入區,保障交易持久性
  4. Shared Pool(共享池):SQL/PLSQL 執行計畫、資料字典、鎖結構等核心快取
  5. Large Pool(大池):大記憶體分配專用區(RMAN、並行查詢、共享伺服器 UGA)
  6. Java Pool(Java 池):資料庫端 Java 程式碼執行記憶體
  7. Streams Pool(串流池):Oracle Streams 複製、傳播功能使用

Buffer Cache 三層池架構

9i 引入多池機制,解決「熱門資料被冷門資料擠出」問題:

  • Default Pool(預設池):未指定池的物件預設放置處
  • Keep Pool(保留池):針對高頻重用的小型查閱表、關鍵索引,防止被淘汰
  • Recycle Pool(回收池):針對大型掃描、低重用率物件,快速釋放空間

注意:三池記憶體互不共享,需獨立規劃大小。9i 起支援多區塊大小(2K/4K/8K/16K/32K),對應 DB_nK_CACHE_SIZE 參數。

共享池:效能關鍵與常見誤區

核心功能

  • Library Cache:SQL/PLSQL 解析樹、執行計畫、程式單元
  • Data Dictionary Cache:資料字典資訊(使用者、表、權限等)

硬解析代價

短查詢中硬解析可佔總回應時間 2/3。不使用繫結變數會導致:

  1. 大量硬解析消耗 CPU 與 Latch
  2. 共享池被大量不重用的游標佔用,管理負擔劇增

對策:短頻查詢強制使用繫結變數;長跑統計查詢可考慮字面值避免計畫固化。

自動 SGA 記憶體管理(10g+)

啟用條件

STATISTICS_LEVEL = TYPICAL | ALL
SGA_TARGET = 目標總大小(動態可調)
SGA_MAX_SIZE = 硬性上限(修改需重啟)

自動調整組件

  • DB_CACHE_SIZE、SHARED_POOL_SIZE、LARGE_POOL_SIZE、JAVA_POOL_SIZE

手動指定最小值

可為上述組件設定最小值,Oracle 不會自動縮減至該值以下。

仍需手動管理的組件

  • LOG_BUFFER、STREAMS_POOL、DB_nK_CACHE_SIZE、DB_KEEP_CACHE_SIZE、DB_RECYCLE_CACHE_SIZE

手動 SGA 配置參考基準

32 位元 Oracle 限制

單進程可定址空間約 1.75GB,故 SGA + PGA ≤ 1.75GB。64 位元無此限制。

各組件建議值(避免嚴重配置錯誤的基準線)

記憶體規格架構SHARED_POOL_SIZEDB_CACHE_SIZE備註
1GB32-bit100MB0.5GB扣除 OS、PGA、其他組件後剩餘給 Buffer Cache
2GB32-bit150MB1.25GB接近 32-bit 上限,需謹慎評估 PGA 需求
4GB64-bit200MB2.5GB標準 OLTP 配置起點
8GB64-bit400MB5GB大型 OLTP / 混合負載
12GB64-bit500MB8GB共享池不宜過大,優先擴充 Buffer Cache

其他組件固定建議

  • JAVA_POOL_SIZE:無 Java 應用時 30MB 足矣
  • LOG_BUFFER:一般 1MB、大型交易系統 2MB,再大無意義(1/3 滿即觸發寫入)
  • LARGE_POOL_SIZE:專用伺服器模式 30MB 即可;共享伺服器模式視 UGA 需求擴充

調優核心原則

  1. 共享池命中率低優先檢查應用程式(繫結變數使用率),而非盲目擴大共享池
  2. Buffer Cache 佔大頭,扣除固定組件後剩餘記憶體盡量給 DB_CACHE_SIZE
  3. 善用 Keep/Recycle 池隔離熱冷資料,提升緩衝區利用率
  4. 監控視圖:V$SGASTAT、V$SGA_DYNAMIC_COMPONENTS、V$SHARED_POOL_ADVICE、V$DB_CACHE_ADVICE

結語:以上配置為「避坑基準線」,生產環境必須結合 Statspack/AWR 報告、實際負載特徵進行精細調優。沒有通用的完美參數,只有適配業務的最佳配置。

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