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

Oracle 9i 在 AIX 上的記憶體效能調優:分頁控制、文件快取、交換區、SGA 優先級與區塊大小

     編輯:Oracle 資料庫基礎

AIX 記憶體管理特性

AIX 採用虛擬記憶體管理 (VMM),將記憶體頁分為 Computational Pages (程式/資料) 與 File Pages (文件快取)。Oracle SGA 屬 Computational,JFS/JFS2 文件系統快取屬 File Pages。兩者競爭實體記憶體易導致大量分頁。

1. 控制文件快取:vmtune 參數


# 預設值
MINPERM = ((實體頁數) - 1024) * 0.20
MAXPERM = ((實體頁數) - 1024) * 0.80

# Oracle 環境建議:壓縮文件快取上限,騰出記憶體給 SGA
vmtune -p 5 -P 20   # MINPERM=5%, MAXPERM=20%

效果:文件快取頁佔用超過 20% 時強制回收,保護 Computational Pages (SGA/PGA) 不被換出。

2. 配置足夠交換區

  • 交換區 ≥ 實體記憶體 (建議 1.5~2 倍)。
  • 動態擴展:mkps -s 20 -a vg00 (增加 20 個 LP)。
  • 監控:lsps -a 查看使用率,vmstat 5 觀察 pi/po (page in/out) 是否持續非零。

3. 記憶體分配優先級 (資源爭用時)

  1. AIX 核心 + Oracle 核心進程 (sched, lrud, LGWR, DBWR, PMON, SMON)
  2. 應用程式進程 (連線 Session、應用伺服器)
  3. Redo Log Buffer (LGWR 寫入關鍵)
  4. Shared Pool + PGA (解析、排序、PL/SQL 執行)
  5. Database Buffer Cache (資料塊快取)

原則:寧犧牲 Buffer Cache 命中率,不可讓 Shared Pool 或 Redo Buffer 被換出。Shared Pool 換出導致 Hard Parse 暴增;Redo Buffer 換出阻塞 LGWR,拖垮所有提交。

4. 資料庫區塊大小 (DB_BLOCK_SIZE)

環境建議值理由
OLTP / 混合2K / 4K減少爭用、適應小行、隨機存取
DSS / Data Warehouse / BI8K / 16K / 32K大掃描效率高、壓縮比好
檔案系統 (JFS/JFS2)4K 整數倍對齊 OS 區塊,避免 Read-Modify-Write
裸裝置512B 整數倍對齊磁碟區塊

5. 歸檔緩衝區優化


-- 增加歸檔緩衝區至 128KB (預設 4KB)
ALTER SYSTEM SET LOG_ARCHIVE_BUFFER_SIZE = 131072 SCOPE=SPFILE;
-- 可提升 0~20% 歸檔吞吐量

6. SGA 關鍵參數調整

  • DB_BLOCK_BUFFERS (9i 手動管理) / DB_CACHE_SIZE (10g+ 自動) :最大化在記憶體優先級允許下。
  • SHARED_POOL_SIZE:優先於 Buffer Cache 增加,防止 Hard Parse、ORA-04031。
  • 監控:V$SGASTAT、V$BUFFER_POOL_STATISTICS、V$LIBRARYCACHE (RELOADS/PINS)。

7. 實戰檢查清單

  1. vmstat 5 10 → pi/po 持續 > 0 表示記憶體壓力。
  2. svmon -G → 確認 Computational % 佔比合理。
  3. vmtune -a → 確認 MINPERM/MAXPERM 生效。
  4. Alert.log 搜尋 cannot allocate new log、checkpoint not complete → 擴大 Redo Log。
  5. 定期 DBMS_STATS.GATHER_SYSTEM_STATS (10g+) 讓 CBO 了解 I/O 能力。

總結

AIX 上 Oracle 調優核心在於 保護 Computational Pages (SGA/PGA) 不被 VMM 換出:壓縮文件快取 (vmtune)、充足交換區、明確優先級、適當區塊大小、監控分頁指標。SGA 內部優先保 Shared Pool/Redo Buffer,次才是 Buffer Cache。

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