PL/SQL 執行 DELETE FROM t_table1 WHERE id = 23242342; COMMIT; 耗時 **>5 秒**。執行計劃顯示走主鍵索引,Cost 僅 4,但提交階段極慢。
ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER, LEVEL 12';
ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT OFF';
SELECT p.value || '/' || i.instance_name || '_ora_' || p.spid || '.trc'
FROM v$session s, v$process p, v$parameter v, v$instance i
WHERE s.paddr = p.addr AND s.sid = USERENV('sid')
AND v.name = 'user_dump_dest';
tkprof 格式化)。/* MV_REFRESH (DEL) */ DELETE FROM "INMS31"."MV_BAND_PORT_REL_AREA"
/* MV_REFRESH (INS) */ INSERT INTO "INMS31"."MV_BAND_PORT_REL_AREA" SELECT ... FROM "TB_BAND_USER_PORT_REL" ...
/* MV_REFRESH (DEL) */ DELETE FROM "INMS31"."MV_BAND_FTTH_REL_AREA"
/* MV_REFRESH (INS) */ INSERT INTO "INMS31"."MV_BAND_FTTH_REL_AREA" SELECT ... FROM ...
**原來:基表刪除觸發兩個物化視圖 ON COMMIT 快速刷新**,每個刷新涉及多表關聯聚合,單次刷新數秒,提交階段同步執行,導致主鍵刪除提交極慢。
DROP MATERIALIZED VIEW "INMS31"."MV_BAND_PORT_REL_AREA";
DROP MATERIALIZED VIEW "INMS31"."MV_BAND_FTTH_REL_AREA";
ON DEMAND + 定時 Job(低峰期刷新)。AUTOTRACE:SET AUTOTRACE ON 快速看計劃與統計。SQL_TRACE:ALTER SESSION SET SQL_TRACE=TRUE。10046 EVENT:ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER, LEVEL 12'(含綁定變量、等待事件)。DBMS_SYSTEM.SET_EV:跟踪指定 SID/SERIAL# 會話(DBA 權限)。TKPROF:格式化 trc 為可讀報告。