Oracle 9i 引入 動態 SGA 与 自動 PGA 管理,所有 SGA 組件(共享池、緩沖池、大池、Java 池、Redo Log Buffer、PGA 彙總目標)均可通過 ALTER SYSTEM 線上調整,無需重啟實例。配合 V$ 動態視圖,實現「監控→調整→再監控」閉環。
| 組件 | 監控指標 | 過小徵兆 | 過大徵兆 | 調整動作 |
|---|---|---|---|---|
| 共享池 | Library Cache Miss Ratio | > 1% | 無 Miss | 從 db_cache_size 轉移內存 |
| 數據緩沖 | Buffer Cache Hit Ratio | < 90% | > 95% | 在 7 個緩沖池間重新分配 |
| PGA 彙總 | Workarea Executions | Multi-pass > 1% | Optimal 100% | 調整 pga_aggregate_target |
WORKAREA_SIZE_POLICY = AUTO(默認)啟用自動模式PGA_AGGREGATE_TARGET 限制所有會話 PGA 總量(10M ~ 4PB)MIN(5% * 目標, 100MB)30% * 目標 / DOP(10g 後改為 50%)V$PROCESS:新增 PGA_USED_MEM, PGA_ALLOC_MEM, PGA_MAX_MEMV$SYSSTAT:新增 workarea optimal/one-pass/multi-pass 統計V$PGASTAT:實例級 PGA 使用摘要(自動目標、全局上限、高水位等)V$SQL_PLAN、V$WORKAREA、V$WORKAREA_ACTIVESELECT name profile, cnt,
DECODE(total,0,0,ROUND(cnt*100/total)) percentage
FROM (
SELECT name, value cnt, SUM(value) OVER () total
FROM v$sysstat
WHERE name LIKE 'workarea exec%'
);
輸出解讀:multi-pass > 0 → 增大 PGA;optimal = 100% → 可嘗試減小。
COLUMN name FORMAT A30
COLUMN value FORMAT 999,999,999
SELECT name, value FROM v$pgastat;
重點關注:aggregate PGA auto target、global memory bound(<1M 需增大)、estimated PGA memory for one-pass。
# dss_config.ksh - 每晚 18:00 切換至 DSS 模式
sqlplus -s /nolog <
在 init.ora 設置 LOCK_SGA=TRUE(平台相關),將 SGA 鎖定物理內存,消除換頁延遲。