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

Oracle 效能調校全方位指南:參數、記憶體、I/O、爭用與實戰策略

     編輯:Oracle 資料庫基礎

調校目標設定

效能調校非單一動作,而是針對明確目標的系統性工程。常見目標:

  • 應用程式 SQL 效能:降低高耗資源 SQL 的邏輯讀/執行時間。
  • 特定業務報表:縮短關鍵報表查詢回應時間。
  • 記憶體利用率:減少硬解析、庫快取命中率提升、PGA 適度配置避免磁碟排序。
  • I/O 吞吐與延遲:平衡資料檔/重做日誌/控制檔/臨時表空間分佈,降低平均等待事件。
  • 鎖/鎖閘爭用:消除熱塊、序列、Library Cache 鎖競爭。
  • 網路傳輸:減少往返次數、啟用 SDU/PDU 優化、使用連線池。

關鍵初始化參數分類

限制類參數 (防止資源耗盡)

參數用途調校建議
PROCESSES最大作業程序數 (含背景程序)預估最大連線數 + 20~30 (背景程序)
SESSIONS最大 Session 數通常 = PROCESSES * 1.1
OPEN_CURSORS單一 Session 最大開啟游標500~3000 視應用而定,避免 ORA-01000
DML_LOCKS並行 DML 鎖數若無 DDL 需求可設 0 微幅提升效能
LICENSE_MAX_SESSIONS授權並行 Session 上限依授權合約設定,0 表不限制
MAX_DUMP_FILE_SIZE追蹤檔大小上限UNLIMITED 或具體大小 (M/G)

效能影響類參數 (核心調校點)

參數說明調校方向
SGA_TARGET / SGA_MAX_SIZESGA 總大小 (自動共享記憶體管理 ASMM)實體記憶體 40%~60%,留足 OS/PGA 空間
DB_CACHE_SIZE預設緩衝區快取 (手動管理時)配合 DB_16K_CACHE_SIZE 等多區塊大小
SHARED_POOL_SIZE共用池大小 (Library/Data Dictionary Cache)監控 V$SGASTAT free memory,避免 ORA-04031
LARGE_POOL_SIZE大型池 (RMAN、共用伺服器、平行查詢)若使用 MTS/RMAN 平行備份需適度配置
JAVA_POOL_SIZEJava 池若無 Java Stored Procedure 可設最小值
PGA_AGGREGATE_TARGETPGA 總量目標 (自動 PGA 管理)實體記憶體 20%~30%,監控 V$PGA_TARGET_ADVICE
DB_FILE_MULTIBLOCK_READ_COUNT全表掃描多區塊讀取數預設 128 (1MB),視儲存裝置最佳化
LOG_BUFFER重做日誌緩衝區通常 1MB~100MB,觀察 log buffer space 等待
CHECKPOINT_PROCESS啟用 CKPT 背景程序TRUE (現代版本預設)
FAST_START_MTTR_TARGET目標平均復原時間 (秒)依業務 RTO 設定,間接控制 checkpoint 頻率
OPTIMIZER_MODE優化器模式ALL_ROWS (OLAP) / FIRST_ROWS_n (OLTP)
CURSOR_SHARING游標共用策略EXACT (預設) / FORCE (強制字面值轉綁定,需測試)

記憶體調校實戰步驟

  1. 啟用 AMM (Automatic Memory Management):MEMORY_TARGET + MEMORY_MAX_TARGET,Oracle 自動在 SGA/PGA 間動態調配 (11g+)。
  2. 若需精細控制:關閉 AMM,啟用 ASMM (SGA_TARGET) + 自動 PGA (PGA_AGGREGATE_TARGET)。
  3. 監控關鍵指標:
    • Buffer Cache Hit Ratio > 99% (OLTP) / V$SYSSTAT physical reads vs db block gets
    • Library Cache Hit Ratio > 99% (硬解析率 < 1%)
    • PGA Cache Hit % > 90% (V$PGA_TARGET_ADVICE)
    • 避免 ORA-04031 (shared pool 碎片/不足)
  4. 調整結果驗證:AWR/ASH 報告對比調校前後的 DB Time、Logical Reads、Physical Reads、Hard Parses。

I/O 調校策略

  • 檔案分散:資料表空間、索引表空間、UNDO、TEMP、Redo Log、Control File 分置於不同實體磁碟/ASM Disk Group/存儲 LUN。
  • Redo Log 多工:每組至少 2 成員,置於不同控制器/磁碟;組數視切換頻率調整 (建議切換間隔 15~30 分鐘)。
  • ASM 最佳實務:Normal/High Redundancy、AU_SIZE 4MB、Allocation Unit 連續、啟用 DB_BLOCK_CHECKSUM。
  • Direct Path Read/Write:大型平行查詢、排序、雜湊聯結、RMAN 備份自動使用;確保 FILESYSTEMIO_OPTIONS=SETALL (非 ASM 時)。
  • 監控等待事件:db file scattered read (全表掃描)、db file sequential read (索引讀取)、log file sync (Commit 等待)、log file parallel write。

爭用與鎖調校

爭用類型典型等待事件對策
Library Cache Lock/Pinlibrary cache lock, library cache pin使用綁定變數、減少 DDL、增大 SHARED_POOL、啟用 Cursor Sharing
Row Cache Lockrow cache lock增大 SHARED_POOL、固定熱門物件 (DBMS_SHARED_POOL.KEEP)
序列鎖enq: SQ - contentionCACHE 1000、ORDER/NOORDER 視需求、考慮可擴展序列 (12c+)
熱塊buffer busy waits, gc buffer busy (RAC)反向鍵索引、分區表、增加 PCTFREE、Hash Partition
TX 鎖 (行鎖)enq: TX - row lock contention縮短交易、避免長交易、索引 FK 欄位、應用層樂觀鎖

持續調校流程

  1. 建立基線:AWR 快照保留 30+ 天,固定時間匯出基線報告。
  2. 識別 Top SQL:V$SQL / AWR SQL ordered by Elapsed Time / Gets / Executions。
  3. 執行計畫分析:DBMS_XPLAN.DISPLAY_CURSOR、SQL Monitoring、Real-Time SQL Monitoring。
  4. 索引/統計資訊/重寫 SQL:建立/刪除索引、DBMS_STATS.GATHER_TABLE_STATS、SQL Profile/SPM Baseline。
  5. 參數微調:依等待事件調整上述參數,單一變因、觀察效果。
  6. 自動化巡檢:Shell/Python 腳本定期抓取關鍵指標,異常告警 (Enterprise Manager / Cloud Control / 自建 Grafana)。

總結

Oracle 效能調校是「觀測 → 假設 → 驗證 → 固化」的循環。沒有銀彈,只有針對特定負載、硬體、版本的持續優化。建立完整監控體系、保留歷史基線、養成變更管理流程,才是長期穩定的關鍵。

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