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

Oracle SGA 區大小調整實操:從加物理內存到參數生效全流程

     編輯:Oracle 資料庫基礎

操作前提

  • 確認作業系統與硬體支援目標內存大小
  • 完整冷備份 (數據文件、控制文件、參數文件、密碼文件)
  • 規劃停機窗口,通知業務方

實操步驟記錄

  1. 停機掛載硬體:關機 → 斷電 → 加裝內存條 → 恢復連接 → 開機 → OS 識別內存正常
  2. 查看當前 SGA
    SQL> SHOW SGA
    Total System Global Area  2602007792 bytes
    Fixed Size                   740592 bytes
    Variable Size              335544320 bytes
    Database Buffers          2264924160 bytes
    Redo Buffers                 798720 bytes
  3. 修改 SGA_MAX_SIZE (靜態參數,需 SPFILE 重啟生效)
    SQL> ALTER SYSTEM SET SGA_MAX_SIZE=5000M SCOPE=SPFILE;
    System altered.
  4. 重啟實例
    SQL> SHUTDOWN IMMEDIATE;
    SQL> STARTUP;
  5. 驗證生效
    SQL> SHOW SGA
    Total System Global Area  5252811728 bytes  -- 約 5GB
    Fixed Size                   744400 bytes
    Variable Size             2986344448 bytes  -- 明顯增大
    Database Buffers          2264924160 bytes
    Redo Buffers                 798720 bytes
  6. 後續微調:觀察 V$SGA_RESIZE_OPS、V$BUFFER_POOL_STATISTICS,按需調整 DB_CACHE_SIZE、SHARED_POOL_SIZE、LARGE_POOL_SIZE 等動態子組件 (無需重啟)。
  7. 最終驗證與備份:業務功能測試無誤 → 熱備份歸檔 → 記錄變更單

關鍵參數關係圖

SGA_MAX_SIZE (上限,靜態)
   ├── DB_CACHE_SIZE / DB_nK_CACHE_SIZE
   ├── SHARED_POOL_SIZE
   ├── LARGE_POOL_SIZE
   ├── JAVA_POOL_SIZE
   ├── STREAMS_POOL_SIZE
   └── 固定內存 (Fixed Size) + Redo Log Buffer

避坑提醒

  • 32 位 Oracle 進程地址空間限制 ~1.7-2.7GB (視 OS),SGA_MAX_SIZE 勿超限
  • SGA_TARGET (ASMM) 啟用時,子組件設為 0 由自動管理;手動管理時需確保總和 ≤ SGA_MAX_SIZE
  • 大頁面 支援需 OS 級配置 (vm.nr_hugepages / Windows 鎖定頁面權限),否則大 SGA 可能啟動失敗
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved