Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> MERGE statement - where time goes ?
Hi lsiters,
I have the following problem: a MERGE statement is runing and is taling ~ 52 seconds to run. I have traced the statement with event 10046 and I have found that I am "loosing" ~ 42 seconds (> 80% of response time) im MERGE statement step (for execution statistics & execution plan -> see below). The interesing lines are:
Rows Row Source Operation
------- ---------------------------------------------------
2 MERGE T_F_MESSUNG_DLZ_2 (cr=27552 pr=7876 pw=0 time=52349971 us) 1378 VIEW (cr=4752 pr=602 pw=0 time=11221649 us)
Does someone know what actually the MERGE is doing in the background ? Any Ideas, links ?
OS= HPUX, Version 10.2.0.2
Best Regards. Milen
merge into GPFRSYSTEM.t_f_messung_dlz_etl m using (select * from GPFRSYSTEM.tt_messung_dlz where ARBEITSTAGE >= 0 or MESSSTRECKE_ID = 21) t on (t.order_id = m.order_id and t.messstrecke_id = m.messstrecke_id) WHEN MATCHED THEN UPDATE set m.status = t.status, m.arbeitstage = case when t.messstrecke_id = 21 and t.arbeitstage < 0 then 0 else t.arbeitstage end, m.kalendertage = case when t.messstrecke_id = 21 and t.arbeitstage < 0 then 0 else t.kalendertage end, m.produktionswochen = t.produktionswochen, m.kalenderwochen = t.kalenderwochen, m.kalendermonate = t.kalendermonate, m.messeingangsereignis = nvl(t.eingangsereignis,0) , m.messausgangsereignis = nvl(t.ausgangsereignis,0), m.eingangsereignis = nvl(t.von,0), m.ausgangsereignis = nvl(t.bis,0), m.ereignis_zeh = t.ereignis_zeh, m.kovp_relevant = t.kovp_relevant, m.pak_geaendert = t.pak_geaendert, m.versandart = t.versandart, m.versandart_geaendert = t.versandart_geaendert, m.kundenbelegung_id = t.kundenbelegung_id, m.vab_geaendert = t.vab_geaendert, m.pak = t.pak, m.letzte_aenderung = sysdate, m.migrierte_messung = t.migrierte_messung, m.trend = t.trend WHEN NOT MATCHED THEN insert Values (t.messstrecke_id, t.order_id, t.status, case when t.messstrecke_id = 21 and t.arbeitstage < 0 then 0 else t.arbeitstage end, case when t.messstrecke_id = 21 and t.arbeitstage < 0 then 0 else t.kalendertage end, t.produktionswochen,t.kalenderwochen, t.kalendermonate, nvl(t.von,0), nvl(t.bis,0), t.ereignis_zeh, nvl(t.eingangsereignis,0), nvl(t.ausgangsereignis,0), t.pak,t.pak_geaendert, t.versandart, t.versandart_geaendert, t.kundenbelegung_id, t.vab_geaendert, t.kovp_relevant, t.migrierte_messung, sysdate, t.trend) call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.21 0.22 0 302 8 0 Execute 1 2.43 52.35 7876 27552 22199 1378 Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 2.64 52.57 7876 27854 22207 1378
Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: SYS
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.21 0.22 0 302 8 0 Execute 1 2.43 52.35 7876 27552 22199 1378 Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 2.64 52.57 7876 27854 22207 1378
Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: SYS
Rows Row Source Operation
------- ---------------------------------------------------
2 MERGE T_F_MESSUNG_DLZ_2 (cr=27552 pr=7876 pw=0 time=52349971 us) 1378 VIEW (cr=4752 pr=602 pw=0 time=11221649 us) 1378 NESTED LOOPS OUTER (cr=4752 pr=602 pw=0 time=11214749 us)
1378 TABLE ACCESS FULL TT_MESSUNG_DLZ (cr=17 pr=16 pw=0 time=65196 us) 49 PARTITION RANGE ITERATOR PARTITION: KEY KEY (cr=4735 pr=586 pw=0 time=5214707 us) 49 PARTITION HASH ITERATOR PARTITION: KEY KEY (cr=4735 pr=586 pw=0 time=5190425 us) 49 TABLE ACCESS BY LOCAL INDEX ROWID T_F_MESSUNG_DLZ_2 PARTITION: (cr=4735 pr=586 pw=0 time=5172029 us) 49 INDEX UNIQUE SCAN PK_T_F_MESSUNG_DLZ_2 PARTITION: (cr=4684 pr=538 pw=0 time=4729204 us)(object id 89305) Elapsed times include waiting on following events: Event waited on Times Max. Wait Total Waited ---------------------------------------- Waited ---------- ------------ db file sequential read 7861 0.28 50.54 db file scattered read 1 0.04 0.04 SQL*Net message to client 1 0.00 0.00 SQL*Net message from client 1 0.00 0.00 ********************************************************************************--
------------------------------------------------------------
![]() |
![]() |