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

Oracle 9i on AIX 性能調優全攻略:內存交換、交換區、SGA、日志歸檔、數據塊大小

     編輯:Oracle 資料庫基礎

前言:AIX 獨特的內存管理機制

AIX 採用虛擬內存管理器 (VMM),頁面替換算法深度影響 Oracle 性能。本文針對 Oracle 9i on AIX,系統講解 vmtune 參數調優、交換區規劃、內存優先級排序、數據塊大小選擇、日志歸檔緩存、SGA 調優六大核心領域。

一、 控制內存交換:vmtune min/maxperm 參數

1. 問題背景

  • JFS/JFS2 文件系統緩存 與 Oracle SGA 競爭物理內存
  • 數據文件在文件系統上時,「雙重緩存」:SGA 緩存 + 文件系統緩存 = 內存浪費 + 換頁風暴

2. 核心參數

3. 生效命令 (即時生效,重啟失效需寫入 /etc/tunables/nextboot)

# 將文件緩存壓縮至 5%-20%,騰出內存給 SGA/PGA
vmtune -p 5 -P 20

# 持久化 (AIX 5.3+)
echo "vmo -p -o minperm%=5 -o maxperm%=20" >> /etc/tunables/nextboot

4. 原理

降低 maxperm% 強制 VMM 優先淘汰文件緩存頁,保護計算頁 (Oracle SGA/PGA 歸屬計算頁) 不被換出。

二、 配置足夠交換區

  • 原則:交換區 ≥ 物理內存 (建議 1.5-2x),防止「僵屍進程無法 fork、SGA 無法擴展、OS 掛起」。
  • 動態擴展:AIX 支持 mkps/chps 動態增減交換區,無需重啟。
  • 監控命令:
    lsps -a        # 查看交換區使用率
    vmstat 5 10    # 監控 pi/po (page in/out) 持續非零 → 內存壓力大
  • Oracle 應用服務器/開發工具 佔用大量進程內存,需額外預留 20-30% 交換區。

三、 內存需求優先級排序 (內存不足時的分配策略)

當物理內存不足以滿足所有需求,按以下優先級分配:

  1. AIX 核心 + Oracle 核心進程 (PMON/SMON/DBWn/LGWR/CKPT) — 系統生存線
  2. 應用程序進程 (影子進程、中間件、批處理) — 業務執行主體
  3. Redo Log Buffer — 寫入性能關鍵,不可換出
  4. PGA + Shared Pool — 排序/雜湊/解析核心區
  5. Buffer Cache (DB_BLOCK_BUFFERS) — 最後分配,可通過 DB_KEEP_CACHE_SIZE 保護熱塊

決策例:Shared Pool 與 Buffer Cache 爭搶剩餘內存時,**優先給 Shared Pool** (解析優化、庫緩存命中率提升收益 > 單純增加 Buffer Cache)。

四、 數據塊大小選擇

參數含義默認值建議值 (Oracle 專用機)
minperm%文件頁佔比低於此值 → 掃描器同時掃描文件頁與計算頁20%5%
maxperm%文件頁佔比高於此值 → 僅掃描文件頁80%20% (甚至 10%)

對齊要求

  • 文件系統 (JFS/JFS2) 塊大小 4K → Oracle 塊大小必須為 4K 整數倍 (4K/8K/16K/32K)
  • 裸設備 (Raw Device) 邏輯塊 512B → Oracle 塊大小必須為 512B 整數倍

五、 調整日志歸檔緩存

  • 參數:LOG_ARCHIVE_BUFFER_SIZE (默認 4K,單位 Bytes)
  • 建議:128K (131072) — 減少歸檔寫入系統調用次數,提升 0-20% 歸檔吞吐。
  • 注意:不可過大 佔用 PGA/系統內存,監控 V$ARCHIVE_DEST_STATUS 確認無錯誤。

六、 SGA 調優核心參數

場景建議 DB_BLOCK_SIZE理由
OLTP / 混合負載2K / 4K (默認)行級併發高,小塊減少鎖爭用、緩存利用率高
DSS / 數據倉庫 / BI8K / 16K / 32K全表掃描主導,大塊減少 I/O 次數、提升順序讀吞吐

原則:SGA 總大小 < 物理內存 60-70% (留 30-40% 給 PGA + OS + 文件緩存)。嚴禁 SGA 換出到交換區 — 會導致性能崩潰。

七、 總結清單

  1. vmtune -p 5 -P 20 壓縮文件緩存,保護計算頁
  2. 交換區 ≥ 1.5x RAM,監控 vmstat pi/po
  3. 內存優先級:核心進程 > 應用進程 > Redo Buffer > PGA/Shared Pool > Buffer Cache
  4. OLTP 用 4K 塊,DSS 用 16K/32K 塊,注意文件系統對齊
  5. LOG_ARCHIVE_BUFFER_SIZE=131072 加速歸檔
  6. SGA < 70% RAM,Shared Pool 優先,嚴防換出

AIX + Oracle 調優本質是**操作系統內存管理器與數據庫內存管理器的協同**,而非單邊調參數。建立 vmstat/svmon/AWR 三維監控視圖,才能精準定位瓶頸。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
參數影響調優方向
DB_BLOCK_BUFFERS (9i) / DB_CACHE_SIZE (10g+)Buffer Cache 大小盡大不盡小,配合 KEEP/RECYCLE 池分級
SHARED_POOL_SIZE庫緩存、數據字典緩存、會話內存優先於 Buffer Cache 擴展,防 ORA-04031
LARGE_POOL_SIZE並行查詢、RMAN、Shared Server UGAMTS/RMAN 環境必配
JAVA_POOL_SIZEOJVM 堆使用 Java SP 時配置