| 方法 | 局限性 |
|---|---|
| 1. EVENT 1652 TRACE | 僅捕獲未來錯誤,可能影響性能 |
| 2. V$SQL 排序 DIRECT_WRITES | 無執行時間戳,問題 SQL 可能已 aged out |
| 3. AWR/Statspack 物理讀排序 | 讀寫不一定是臨時表空間,低頻高耗 SQL 易漏報 |
| 4. AWR 視圖直查 (10g+ 推薦) | 可按快照時間窗、直接寫入量精準定位 |
SELECT DISTINCT TO_CHAR(SUBSTR(b.sql_text,1,4000))
FROM sys.WRH$_SQLTEXT b
WHERE b.sql_id IN (
SELECT sql_id FROM (
SELECT a.sql_id
FROM sys.WRH$_SQLSTAT a
WHERE a.parsing_schema_name NOT IN ('SYS')
AND a.executions_total > 0
AND a.direct_writes_total > 0
AND a.snap_id IN (
SELECT snap_id FROM sys.WRM$_SNAPSHOT
WHERE TO_DATE('2008:08:20 17:20:08','yyyy:mm:dd hh24:mi:ss')
BETWEEN begin_interval_time AND end_interval_time
)
ORDER BY a.direct_writes_total / a.executions_total DESC
) WHERE rownum <= 10
);
結果首條若非 INSERT /*+ APPEND */ 類批量操作,極大概率即為罪魁禍首。9i 可用 Statspack 視圖類似查詢。