I eventually got the tkprof output:
Old
New:Code:SELECT /*+ USE_HASH(t d) */ t.BUSINESS_DATE, t.SCHEDULE_ID, RANK() OVER
(PARTITION BY NVL(t.DEAL_ID, '~NVL'),NVL(t.LEG_TYPE_CD, '~NVL') ORDER BY
t.SRC_SYS_FEED_ROW_ID DESC, t.SCHEDULE_ID DESC) ERROR_BIT_ID
FROM
SCHEDULE t, (SELECT /*+ USE_HASH(t d) */ BUSINESS_DATE, SRC_SYS_FEED_ID,
NVL(t.DEAL_ID, '~NVL') AS DEAL_ID,NVL(t.LEG_TYPE_CD, '~NVL') AS LEG_TYPE_CD
FROM SCHEDULE t WHERE BUSINESS_DATE = :p_business_date and
SRC_SYS_FEED_ID = :p_src_sys_feed_id GROUP BY BUSINESS_DATE,
SRC_SYS_FEED_ID, DEAL_ID, LEG_TYPE_CD HAVING COUNT(*) > 1) d WHERE
t.BUSINESS_DATE = :p_business_date and t.SRC_SYS_FEED_ID =
:p_src_sys_feed_id and BITAND(t.ROW_ERROR_CD, 3) = 0 and NVL(t.DEAL_ID,
'~NVL') = d.DEAL_ID and NVL(t.LEG_TYPE_CD, '~NVL') = d.LEG_TYPE_CD
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.03 0.02 0 0 0 0
Fetch 9 47.00 53.87 58335 43550 29 8
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 11 47.03 53.90 58335 43550 29 8
Misses in library cache during parse: 1
Optimizer goal: CHOOSE
Parsing user id: 670 (recursive depth: 1)
Rows Row Source Operation
------- ---------------------------------------------------
8 WINDOW SORT
8 FILTER
548427 SORT GROUP BY
548435 HASH JOIN
548427 PARTITION RANGE SINGLE PARTITION: KEY KEY
548427 TABLE ACCESS FULL SCHEDULE PARTITION: KEY KEY
548427 PARTITION RANGE SINGLE PARTITION: KEY KEY
548427 TABLE ACCESS FULL SCHEDULE PARTITION: KEY KEY
Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
db file scattered read 5440 0.01 6.31
direct path write 726 0.07 11.82
direct path read 1374 0.04 0.50
Code:SELECT t.rowid, RANK() OVER (PARTITION BY DEAL_ID
,LEG_TYPE_CD
ORDER BY t.SRC_SYS_FEED_ROW_ID DESC, t.SCHEDULE_ID DESC) AS ERROR_BIT_ID
FROM
(SELECT ROWID, SRC_SYS_FEED_ROW_ID, SCHEDULE_ID,
NVL(t.DEAL_ID, '~NVL') AS DEAL_ID,
NVL(t.LEG_TYPE_CD, '~NVL') AS LEG_TYPE_CD,
COUNT(1) OVER (PARTITION BY NVL(t.DEAL_ID, '~NVL')
,NVL(t.LEG_TYPE_CD, '~NVL')
) DUPS FROM SCHEDULE t WHERE t.BUSINESS_DATE = :p_business_date
and t.SRC_SYS_FEED_ID = :p_src_sys_feed_id
and BITAND(t.ROW_ERROR_CD, 3) = 0 ) t
WHERE DUPS > 1
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.01 0.00 0 0 0 0
Execute 1 0.01 0.00 0 0 0 0
Fetch 1 49.17 58.45 32260 21775 27 8
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 3 49.19 58.46 32260 21775 27 8
Misses in library cache during parse: 1
Optimizer goal: CHOOSE
Parsing user id: 670 (recursive depth: 1)
Rows Row Source Operation
------- ---------------------------------------------------
8 WINDOW SORT
8 VIEW
548427 WINDOW SORT
548427 PARTITION RANGE SINGLE PARTITION: KEY KEY
548427 TABLE ACCESS FULL SCHEDULE PARTITION: KEY KEY
Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
db file scattered read 2720 0.03 3.20
direct path write 135 0.07 5.24
direct path read 5903 0.09 8.98
