OPTIMIZER_INDEX_CACHING/OPTIMIZER_INDEX_COST_ADJ 修補,但預設值僅適合報表/數倉。SELECT * FROM aux_stats$; SNAME PNAME PVAL1 PVAL2 SYSSTATS_INFO STATUS COMPLETED SYSSTATS_INFO DSTART 08-30-2005 15:04 SYSSTATS_INFO DSTOP 08-30-2005 15:04 SYSSTATS_MAIN CPUSPEEDNW 484.97 (Noworkload) SYSSTATS_MAIN IOSEEKTIM 10 (ms, default) SYSSTATS_MAIN IOTFRSPEED 4096 (bytes/ms, default) SYSSTATS_MAIN SREADTIM 5.2 (Workload) SYSSTATS_MAIN MREADTIM 18.7 SYSSTATS_MAIN CPUSPEED 1250 SYSSTATS_MAIN MBRC 64 SYSSTATS_MAIN MAXTHR 524288000 SYSSTATS_MAIN SLAVETHR 52428800
| 類別 | 指標 | 取得方式 | 適用場景 |
|---|---|---|---|
| Noworkload (非負載) | CPUSPEEDNW | 空閒系統基準測試 | 10g+ 預設自動收集,無代表性負載時 |
| IOSEEKTIM | 預設 10ms (可手動設定) | ||
| IOTFRSPEED | 預設 4096 bytes/ms (可手動設定) | ||
| Workload (負載) | SREADTIM | 真實負載下單區塊平均讀取時間 | 生產環境代表性負載窗口,精度高 |
| MREADTIM | 真實負載下多區塊平均讀取時間 | ||
| CPUSPEED | 真實負載下 CPU 處理速度 | ||
| MBRC | 實際多區塊讀取平均區塊數 | ||
| MAXTHR | 系統最大 I/O 吞吐量 (bytes/sec) | ||
| SLAVETHR | 並行從程序平均 I/O 吞吐量 |
BEGIN DBMS_STATS.GATHER_SYSTEM_STATS('NOWORKLOAD'); END;
-- 需在系統閒置時執行,耗時極短,有時需執行多次才生效
-- 步驟 1: 開始快照
BEGIN DBMS_STATS.GATHER_SYSTEM_STATS('START'); END;
-- 步驟 2: 等待代表性負載 (建議 ≥ 30 分鐘,涵蓋尖峰/離峰)
-- 步驟 3: 結束快照並計算
BEGIN DBMS_STATS.GATHER_SYSTEM_STATS('STOP'); END;
-- 或單指令指定間隔 (非阻塞,內部建立 Job)
BEGIN DBMS_STATS.GATHER_SYSTEM_STATS('INTERVAL', 30); END; -- 30 分鐘
-- 連續數天收集 Workload 統計,取平均/最大值
BEGIN
DBMS_STATS.DELETE_SYSTEM_STATS();
DBMS_STATS.SET_SYSTEM_STATS('CPUSPEED', 772);
DBMS_STATS.SET_SYSTEM_STATS('SREADTIM', 5.5);
DBMS_STATS.SET_SYSTEM_STATS('MREADTIM', 19.4);
DBMS_STATS.SET_SYSTEM_STATS('MBRC', 53);
DBMS_STATS.SET_SYSTEM_STATS('MAXTHR', 1136136192);
DBMS_STATS.SET_SYSTEM_STATS('SLAVETHR', 16870400);
END;
STATUS = BADSTATS,優化器將忽略並退回預設值。