首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 9i 動態重配置深度解析:排程重配置與基於趨勢的自適應調優

     編輯:Oracle 資料庫相關知識

核心突破

9i 允許**線上動態修改幾乎所有 SGA 參數**(DB_CACHE_SIZE、SHARED_POOL_SIZE、PGA_AGGREGATE_TARGET 等),無需重啟實例,實現「準實時」資源配置。

模式一:排程重配置(已知週期性負載變化)

例:白天 OLTP、夜間 DSS(決策支援)。

Unix Cron + Shell 腳本範例

#!/bin/ksh
ORACLE_SID=$1; export ORACLE_SID
ORACLE_HOME=`grep ^$ORACLE_SID: /etc/oratab | cut -f2 -d':'`
export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH; export PATH

$ORACLE_HOME/bin/sqlplus -s /nolog <

早晚各跑一支腳本切換模式。亦可用 DBMS_JOB 排程。

模式二:基於趨勢的動態重配置(STATSPACK 驅動)

  1. 收集歷史指標:STATSPACK 每小時/每天快照。
  2. 繪製關鍵曲線:Buffer Cache Hit Ratio (BCHR) 按小時/按星期。
  3. 識別週期性瓶頸:如圖 A 所示,每日 02:00-03:00、20:00-21:00 BCHR 明顯下降 → 排程在這兩時段增大 DB_CACHE_SIZE。圖 B 顯示週一、週五最低 → 這兩天預增緩衝區。
  4. 自動化:Shell/DBMS_JOB 讀取 STATSPACK 歷史,依規則動態發出 ALTER SYSTEM SET ... SCOPE=MEMORY。

關鍵指標與視覺化

  • BCHR:1 - (physical reads / (db block gets + consistent gets))。
  • 共用池命中率、PGA 記憶體使用率、Log File Sync 等待時間。
  • 工具:Excel/Shell 繪圖、Oracle Enterprise Manager (OEM) Performance Page、自訂 AWR/STATSPACK 報告腳本。

風險與最佳實務

  • SCOPE=MEMORY 修改重啟後失效,需同步更新 SPFILE(SCOPE=BOTH 或手工 ALTER SYSTEM SET ... SCOPE=SPFILE)。
  • 動態縮減 SGA 組件可能觸發 ORA-04031(共用池碎片)或緩衝區壓力,建議**只增不減**,或設定下限保護。
  • 結合 DBMS_RESOURCE_MANAGER 實現資源計畫自動切換(Consumer Group Mapping)。
  • 所有變更記入變更管理單,事後回顧效果。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved