Buffer sort
I have a query that shows me that one of my tables is doing a Full Scan and a Buffer Sort in it, but I dont have any order by clause, or distinct or nothing... Why the Buffer Sort appears???
Thanks!
Probably because the database needs to take an interim result set and put it in a certain sequenct in order to make the next phase of the query more efficient.
Something like
take the username and dept number from the emp table, sort in dept number sequence, then go to the dept table to get the department name.
Similar Messages
-
Buffer(sort) operator
Hi,
i'm trying to understand what "buffer sort" operation is in the following explain plan:
0 SELECT STATEMENT
-1 MERGE JOIN CARTESIAN
--2 TABLE ACCESS FULL PLAYS
--3 BUFFER SORT
---4 TABLE ACCESS FULL MOVIE
In Oracle 9i DataBase Performance Guide and Reference, "buffer sort" is not mentioned although all other explain plan's operations are.
What does it mean? Does it take place in main memory or is it an external sort?
Thank you.A BUFFER SORT typically means that Oracle reads data blocks into private memory,because the block will be accessed multiple times in the context of the SQL statement execution. in other words, Oracle sacrifies some extra memory to
reduce the overhead of accessing blocks multiple times in shared memory.
Hope this will clear your doubts.
Thanks. -
Hi,
I m getting buffer sort in the explain plan.
please let me know what it is means
Thanks,
Kumar.It means that oracle is caching some data from the row source into private memory in order to avoid having to read it multiple times.
-
Long time on buffer sort with a insert and select through a dblink
I am doing a fairly simple "insert into select from" statement through a dblink, but something is going very wrong on the other side of the link. I am getting a huge buffer sort time in the explain plan (line 9) and I'm not sure why. When I try to run sql tuning on it from the other side of the dblink, I get an ora-600 error "ORA-24327: need explicit attach before authenticating a user".
Here is the original sql:
INSERT INTO PACE_IR_MOISTURE@PRODDMT00 (SCHEDULE_SEQ, LAB_SAMPLE_ID, HSN, SAMPLE_TYPE, MATRIX, SYSTEM_ID)
SELECT DISTINCT S.SCHEDULE_SEQ, PI.LAB_SAMPLE_ID, PI.HSN, SAM.SAMPLE_TYPE, SAM.MATRIX, :B1 FROM SCHEDULES S
JOIN PERMANENT_IDS PI ON PI.HSN = S.SCHEDULE_ID
JOIN SAMPLES SAM ON PI.HSN = SAM.HSN
JOIN PROJECT_SAMPLES PS ON PS.HSN = SAM.HSN
JOIN PROJECTS P ON PS.PROJECT_SEQ = PS.PROJECT_SEQ
WHERE S.PROC_CODE = 'DRY WEIGHT' AND S.ACTIVE_FLAG = 'C' AND S.COND_CODE = 'CH' AND P.WIP_STATUS IN ('WP','HO')
AND SAM.WIP_STATUS = 'WP';
Here is the sql as it appears on proddmt00:
INSERT INTO "PACE_IR_MOISTURE" ("SCHEDULE_SEQ","LAB_SAMPLE_ID","HSN","SAMPLE_TYPE","MATRIX","SYSTEM_ID")
SELECT DISTINCT "A6"."SCHEDULE_SEQ","A5"."LAB_SAMPLE_ID","A5"."HSN","A4"."SAMPLE_TYPE","A4"."MATRIX",:B1
FROM "SCHEDULES"@! "A6","PERMANENT_IDS"@! "A5","SAMPLES"@! "A4","PROJECT_SAMPLES"@! "A3","PROJECTS"@! "A2"
WHERE "A6"."PROC_CODE"='DRY WEIGHT' AND "A6"."ACTIVE_FLAG"='C' AND "A6"."COND_CODE"='CH' AND ("A2"."WIP_STATUS"='WP' OR "A2"."WIP_STATUS"='HO') AND "A4"."WIP_STATUS"='WP' AND "A3"."PROJECT_SEQ"="A3"."PROJECT_SEQ" AND "A3"."HSN"="A4"."HSN" AND "A5"."HSN"="A4"."HSN" AND "A5"."HSN"="A6"."SCHEDULE_ID";
Here is the explain plan on proddmt00:
PLAN_TABLE_OUTPUT
SQL_ID cvgpfkhdhn835, child number 0
INSERT INTO "PACE_IR_MOISTURE" ("SCHEDULE_SEQ","LAB_SAMPLE_ID","HSN","SAMPLE_TYPE","MATRIX","SYSTEM_ID")
SELECT DISTINCT "A6"."SCHEDULE_SEQ","A5"."LAB_SAMPLE_ID","A5"."HSN","A4"."SAMPLE_TYPE","A4"."MATRIX",:B1
FROM "SCHEDULES"@! "A6","PERMANENT_IDS"@! "A5","SAMPLES"@! "A4","PROJECT_SAMPLES"@! "A3","PROJECTS"@! "A2"
WHERE "A6"."PROC_CODE"='DRY WEIGHT' AND "A6"."ACTIVE_FLAG"='C' AND "A6"."COND_CODE"='CH' AND
("A2"."WIP_STATUS"='WP' OR "A2"."WIP_STATUS"='HO') AND "A4"."WIP_STATUS"='WP' AND
"A3"."PROJECT_SEQ"="A3"."PROJECT_SEQ" AND "A3"."HSN"="A4"."HSN" AND "A5"."HSN"="A4"."HSN" AND
"A5"."HSN"="A6"."SCHEDULE_ID"
Plan hash value: 3310593411
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time | Inst |IN-OUT|
| 0 | INSERT STATEMENT | | | | | 5426M(100)| | | |
| 1 | HASH UNIQUE | | 1210K| 118M| 262M| 5426M (3)|999:59:59 | | |
|* 2 | HASH JOIN | | 763G| 54T| 8152K| 4300M (1)|999:59:59 | | |
| 3 | REMOTE | | 231K| 5429K| | 3389 (2)| 00:00:41 | ! | R->S |
| 4 | MERGE JOIN CARTESIAN | | 1254G| 61T| | 1361M (74)|999:59:59 | | |
| 5 | MERGE JOIN CARTESIAN| | 3297K| 128M| | 22869 (5)| 00:04:35 | | |
| 6 | REMOTE | SCHEDULES | 79 | 3002 | | 75 (0)| 00:00:01 | ! | R->S |
| 7 | BUFFER SORT | | 41830 | 122K| | 22794 (5)| 00:04:34 | | |
| 8 | REMOTE | PROJECTS | 41830 | 122K| | 281 (2)| 00:00:04 | ! | R->S |
| 9 | BUFFER SORT | | 380K| 4828K| | 1361M (74)|999:59:59 | | |
| 10 | REMOTE | PROJECT_SAMPLES | 380K| 4828K| | 111 (0)| 00:00:02 | ! | R->S |
Predicate Information (identified by operation id):
2 - access("A3"."HSN"="A4"."HSN" AND "A5"."HSN"="A6"."SCHEDULE_ID")Please use code tags... your formatted message is below:
From the looks of your explain plan... these entries :
Id Operation Name Rows Bytes TempSpc Cost (%CPU) Time Inst IN-OUT
4 MERGE JOIN CARTESIAN 1254G 61T 1361M (74) 999:59:59
5 MERGE JOIN CARTESIAN 3297K 128M 22869 (5) 00:04:35 Are causing extensive cpu processing, probably due to the cartesian join (includes sorting)... does "61T" mean 61 terabytes? Holy hell
From the looks of the explain plan these tables don't look partitioned.... can you confirm?
Why are you selecting distinct? If this is for ETL or data warehouse related procedure it ain't a good idea to use distinct... well ever... it's horrible for performance.
INSERT INTO PACE_IR_MOISTURE@PRODDMT00 (SCHEDULE_SEQ, LAB_SAMPLE_ID, HSN, SAMPLE_TYPE, MATRIX, SYSTEM_ID)
SELECT DISTINCT S.SCHEDULE_SEQ, PI.LAB_SAMPLE_ID, PI.HSN, SAM.SAMPLE_TYPE, SAM.MATRIX, :B1 FROM SCHEDULES S
JOIN PERMANENT_IDS PI ON PI.HSN = S.SCHEDULE_ID
JOIN SAMPLES SAM ON PI.HSN = SAM.HSN
JOIN PROJECT_SAMPLES PS ON PS.HSN = SAM.HSN
JOIN PROJECTS P ON PS.PROJECT_SEQ = PS.PROJECT_SEQ
WHERE S.PROC_CODE = 'DRY WEIGHT' AND S.ACTIVE_FLAG = 'C' AND S.COND_CODE = 'CH' AND P.WIP_STATUS IN ('WP','HO')
AND SAM.WIP_STATUS = 'WP';
Here is the sql as it appears on proddmt00:
INSERT INTO "PACE_IR_MOISTURE" ("SCHEDULE_SEQ","LAB_SAMPLE_ID","HSN","SAMPLE_TYPE","MATRIX","SYSTEM_ID")
SELECT DISTINCT "A6"."SCHEDULE_SEQ","A5"."LAB_SAMPLE_ID","A5"."HSN","A4"."SAMPLE_TYPE","A4"."MATRIX",:B1
FROM "SCHEDULES"@! "A6","PERMANENT_IDS"@! "A5","SAMPLES"@! "A4","PROJECT_SAMPLES"@! "A3","PROJECTS"@! "A2"
WHERE "A6"."PROC_CODE"='DRY WEIGHT' AND "A6"."ACTIVE_FLAG"='C' AND "A6"."COND_CODE"='CH' AND ("A2"."WIP_STATUS"='WP' OR "A2"."WIP_STATUS"='HO') AND "A4"."WIP_STATUS"='WP' AND "A3"."PROJECT_SEQ"="A3"."PROJECT_SEQ" AND "A3"."HSN"="A4"."HSN" AND "A5"."HSN"="A4"."HSN" AND "A5"."HSN"="A6"."SCHEDULE_ID";
Here is the explain plan on proddmt00:
PLAN_TABLE_OUTPUT
SQL_ID cvgpfkhdhn835, child number 0
INSERT INTO "PACE_IR_MOISTURE" ("SCHEDULE_SEQ","LAB_SAMPLE_ID","HSN","SAMPLE_TYPE","MATRIX","SYSTEM_ID")
SELECT DISTINCT "A6"."SCHEDULE_SEQ","A5"."LAB_SAMPLE_ID","A5"."HSN","A4"."SAMPLE_TYPE","A4"."MATRIX",:B1
FROM "SCHEDULES"@! "A6","PERMANENT_IDS"@! "A5","SAMPLES"@! "A4","PROJECT_SAMPLES"@! "A3","PROJECTS"@! "A2"
WHERE "A6"."PROC_CODE"='DRY WEIGHT' AND "A6"."ACTIVE_FLAG"='C' AND "A6"."COND_CODE"='CH' AND
("A2"."WIP_STATUS"='WP' OR "A2"."WIP_STATUS"='HO') AND "A4"."WIP_STATUS"='WP' AND
"A3"."PROJECT_SEQ"="A3"."PROJECT_SEQ" AND "A3"."HSN"="A4"."HSN" AND "A5"."HSN"="A4"."HSN" AND
"A5"."HSN"="A6"."SCHEDULE_ID"
Plan hash value: 3310593411
Id Operation Name Rows Bytes TempSpc Cost (%CPU) Time Inst IN-OUT
0 INSERT STATEMENT 5426M(100)
1 HASH UNIQUE 1210K 118M 262M 5426M (3) 999:59:59
* 2 HASH JOIN 763G 54T 8152K 4300M (1) 999:59:59
3 REMOTE 231K 5429K 3389 (2) 00:00:41 ! R->S
4 MERGE JOIN CARTESIAN 1254G 61T 1361M (74) 999:59:59
5 MERGE JOIN CARTESIAN 3297K 128M 22869 (5) 00:04:35
6 REMOTE SCHEDULES 79 3002 75 (0) 00:00:01 ! R->S
7 BUFFER SORT 41830 122K 22794 (5) 00:04:34
8 REMOTE PROJECTS 41830 122K 281 (2) 00:00:04 ! R->S
9 BUFFER SORT 380K 4828K 1361M (74) 999:59:59
10 REMOTE PROJECT_SAMPLES 380K 4828K 111 (0) 00:00:02 ! R->S
Predicate Information (identified by operation id):
2 - access("A3"."HSN"="A4"."HSN" AND "A5"."HSN"="A6"."SCHEDULE_ID")Edited by: TheDudeNJ on Oct 13, 2009 1:11 PM -
Very slow Sorting 48 million of records
Hi All,
I am working on a project to calculate calls, inbound and outbound at a telecom company.
We get 12 million call records everyday i.e. Calling_number_From , Call_start_time,Calling_number_to and call_end_time.
We then split these records into 4 records using UNION ALL which means we have 48 Million records to process and then we do order by call_time.
This order by takes hours to run, Please advice on ideas to improve performance.
Table has Parallel_degree 10
We are on Oracle 10G
We spilt the call into four records i.e.
Each call will have incoming number and outgoing number.
Incoming call
Main_number Column_Call time Count_calls
999 Call_start_time +1
999 Call_end_time -1
Outgoing Call
Main_number Column_Call time Count_calls
888 Call_start_time +1
888 Call_end_time -1
Then we sort the Column_call_time by asc order and check for maximum simultaneous Incoming,outgoing and maximum calls active for each Main_number in one hour.That is the reason we need the sort
Do you guys know Any other alogoritm to do the same?
Any way to sort 48 million rows faster.
Below is the query.
SELECT did_qry.PART_TS,
did_qry.P_NUMBER ,
TO_CHAR(did_qry.call_time,'HH24')
||':00-'
||TO_CHAR(DID_QRY.CALL_TIME,'HH24')
||':59' HOUR_RANGE,
FLAG,
HOUR_CHANGE,
DECODE(HOUR_CHANGE,'HC',DID_QRY.ACTIVE_CALLS+1,DECODE(DID_QRY.ACTIVE_CALLS,0,1,DID_QRY.ACTIVE_CALLS)) ACTIVE_CALLS,
DECODE(HOUR_CHANGE,'HC',DID_QRY.IO_CALLS_CNT+1,DECODE(DID_QRY.IO_CALLS_CNT,0,1,DID_QRY.IO_CALLS_CNT)) io_calls
FROM
(SELECT PART_TS,
P_NUMBER,
did,
call_time,
flag ,
hour_change,
SUM(act) over ( partition BY P_NUMBER order by rownum ) active_calls ,
SUM(io_calls) over ( partition BY P_NUMBER,flag order by rownum ) io_calls_cnt
FROM
select TRUNC(H.PART_TS) PART_TS,
TPILOT.P_NUM P_NUMBER,
h.orig_num did,
h.Call_start_ts call_time,
'IN' flag,
1 act,
1 io_calls,
'NA' hour_change
from CALL_REC H,
DISCONN_CD DCODE,
P_DID TPILOT
where ( (H.PART_TS >=to_date('17-02-2011 23:59:59','DD-MM-YYYY HH24:MI:SS')
and H.PART_TS <to_date('14-02-2011 23:59:59','DD-MM-YYYY HH24:MI:SS'))
AND DCODE.EFF_START_DT <= H.PART_TS
AND DCODE.EFF_END_DT > H.PART_TS
AND dcode.CDR_C_CDE =h.A_I_ID
AND dcode.CDR_B_CDE =h.R_C_ID
AND dcode.AB_DIS_IND ='N'
AND RECORD_TYP_ID ='00000000'
AND tpilot.EFF_START_DT <= h.PART_TS
AND tpilot.EFF_END_DT > h.PART_TS
and TPILOT.D_NUM =H.TERM_NUM
UNION ALL
select TRUNC(H.PART_TS) PART_TS,
tpilot.P_NUM P_NUMBER,
h.term_num did,
h.PART_TS call_time,
'IN' flag,
-1 act,
-1 io_calls,
DECODE(greatest(TO_CHAR(h.Call_start_ts,'HH12'),TO_CHAR(h.PART_TS,'HH12')), least(TO_CHAR(h.Call_start_ts,'HH12'),TO_CHAR(h.PART_TS,'HH12')),'NC',DECODE(greatest(TO_CHAR(h.Call_start_ts,'HH12'),TO_CHAR(h.PART_TS,'HH12')), TO_CHAR(h.PART_TS,'HH12'),'HC','NC')) hour_change
from CALL_REC H,
DISCONN_CD DCODE,
P_DID tpilot
where H.PART_TS >=to_date('17-02-2011 23:59:59','DD-MM-YYYY HH24:MI:SS')
and H.PART_TS <to_date('19-02-2011 00:00:00','DD-MM-YYYY HH24:MI:SS')
AND DCODE.EFF_START_DT <= h.PART_TS
AND DCODE.EFF_END_DT > h.PART_TS
AND dcode.CDR_C_CDE =h.A_I_ID
AND dcode.CDR_B_CDE =h.R_C_ID
AND dcode.AB_DIS_IND ='N'
AND RECORD_TYP_ID ='00000000'
and TPILOT.EFF_START_DT <= H.PART_TS
and TPILOT.EFF_END_DT > H.PART_TS
and TPILOT.D_NUM =H.TERM_NUM
UNION ALL
SELECT TRUNC(H.PART_TS) PART_TS,
pilot.P_NUM P_NUMBER,
h.orig_num did,
h.Call_start_ts call_time,
'OUT' flag,
1 act,
1 io_calls,
'NA' hour_change
FROM CALL_REC H,
DISCONN_CD DCODE,
P_DID PILOT
where H.PART_TS >=to_date('17-02-2011 23:59:59','DD-MM-YYYY HH24:MI:SS')
and H.PART_TS <to_date('19-02-2011 00:00:00','DD-MM-YYYY HH24:MI:SS')
AND DCODE.EFF_START_DT <= H.PART_TS
AND DCODE.EFF_END_DT > H.PART_TS
AND dcode.CDR_C_CDE =h.A_I_ID
AND dcode.CDR_B_CDE =h.R_C_ID
AND dcode.AB_DIS_IND ='N'
AND RECORD_TYP_ID ='00000000'
AND pilot.EFF_START_DT <= h.PART_TS
and PILOT.EFF_END_DT > H.PART_TS
and PILOT.D_NUM =H.ORIG_NUM
UNION ALL
SELECT TRUNC(h.PART_TS) PART_TS,
pilot.P_NUM P_NUMBER,
h.term_num did,
h.PART_TS call_time,
'OUT' flag,
-1 act,
-1 io_calls,
DECODE(greatest(TO_CHAR(h.Call_start_ts,'HH12'),TO_CHAR(h.PART_TS,'HH12')), least(TO_CHAR(h.Call_start_ts,'HH12'),TO_CHAR(h.PART_TS,'HH12')),'NC',DECODE(greatest(TO_CHAR(h.Call_start_ts,'HH12'),TO_CHAR(h.PART_TS,'HH12')), TO_CHAR(h.PART_TS,'HH12'),'HC','NC')) hour_change
FROM CALL_REC H,
DISCONN_CD DCODE,
P_DID pilot
WHERE H.PART_TS >=to_date('17-02-2011 23:59:59','DD-MM-YYYY HH24:MI:SS')
and H.PART_TS <to_date('19-02-2011 00:00:00','DD-MM-YYYY HH24:MI:SS')
AND DCODE.EFF_START_DT <= h.PART_TS
AND DCODE.EFF_END_DT > h.PART_TS
AND dcode.CDR_C_CDE =h.A_I_ID
AND dcode.CDR_B_CDE =h.R_C_ID
AND dcode.AB_DIS_IND ='N'
AND RECORD_TYP_ID ='00000000'
AND pilot.EFF_START_DT <= h.PART_TS
AND pilot.EFF_END_DT > h.PART_TS
AND pilot.D_NUM =h.orig_num
ORDER BY 2,4,6 ASC
) DID_QRY
)Explain Plan
Plan hash value: 616103529
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time | Pstart| Pstop | TQ |IN-OUT| PQ Distrib |
| 0 | SELECT STATEMENT | | 204M| 12G| | 759K (1)| 02:31:49 | | | | | |
| 1 | WINDOW SORT | | 204M| 12G| 33G| 759K (1)| 02:31:49 | | | | | |
| 2 | WINDOW SORT | | 204M| 12G| 33G| 759K (1)| 02:31:49 | | | | | |
| 3 | COUNT | | | | | | | | | | | |
| 4 | PX COORDINATOR | | | | | | | | | | | |
| 5 | PX SEND QC (ORDER) | :TQ10005 | 204M| 12G| | 5919K(100)| 19:44:00 | | | Q1,05 | P->S | QC (ORDER) |
| 6 | VIEW | | 204M| 12G| | 5919K(100)| 19:44:00 | | | Q1,05 | PCWP | |
| 7 | SORT ORDER BY | | 204M| 22G| 55G| 22449 (76)| 00:04:30 | | | Q1,05 | PCWP | |
| 8 | PX RECEIVE | | | | | | | | | Q1,05 | PCWP | |
| 9 | PX SEND RANGE | :TQ10004 | | | | | | | | Q1,04 | P->P | RANGE |
| 10 | BUFFER SORT | | 204M| 12G| | | | | | Q1,04 | PCWP | |
| 11 | UNION-ALL | | | | | | | | | Q1,04 | PCWP | |
|* 12 | HASH JOIN | | 51M| 6052M| | 5612 (4)| 00:01:08 | | | Q1,04 | PCWP | |
| 13 | BUFFER SORT | | | | | | | | | Q1,04 | PCWC | |
| 14 | PX RECEIVE | | 13 | 754 | | 5 (0)| 00:00:01 | | | Q1,04 | PCWP | |
| 15 | PX SEND BROADCAST | :TQ10000 | 13 | 754 | | 5 (0)| 00:00:01 | | | | S->P | BROADCAST |
| 16 | MERGE JOIN CARTESIAN| | 13 | 754 | | 5 (0)| 00:00:01 | | | | | |
| 17 | INDEX FULL SCAN | IDX_PK_PBX_PILOT_DID | 2 | 68 | | 1 (0)| 00:00:01 | | | | | |
| 18 | BUFFER SORT | | 7 | 168 | | 4 (0)| 00:00:01 | | | | | |
|* 19 | TABLE ACCESS FULL | VOIP_ABNORM_DISCONN_CD | 7 | 168 | | 2 (0)| 00:00:01 | | | | | |
| 20 | PX BLOCK ITERATOR | | 7874K| 495M| | 5546 (3)| 00:01:07 | 1 | 3 | Q1,04 | PCWC | |
|* 21 | TABLE ACCESS FULL | HIQ_EVENT_T | 7874K| 495M| | 5546 (3)| 00:01:07 | 1 | 3 | Q1,04 | PCWP | |
|* 22 | HASH JOIN | | 51M| 5516M| | 5612 (4)| 00:01:08 | | | Q1,04 | PCWP | |
| 23 | BUFFER SORT | | | | | | | | | Q1,04 | PCWC | |
| 24 | PX RECEIVE | | 13 | 754 | | 5 (0)| 00:00:01 | | | Q1,04 | PCWP | |
| 25 | PX SEND BROADCAST | :TQ10001 | 13 | 754 | | 5 (0)| 00:00:01 | | | | S->P | BROADCAST |
| 26 | MERGE JOIN CARTESIAN| | 13 | 754 | | 5 (0)| 00:00:01 | | | | | |
| 27 | INDEX FULL SCAN | IDX_PK_PBX_PILOT_DID | 2 | 68 | | 1 (0)| 00:00:01 | | | | | |
| 28 | BUFFER SORT | | 7 | 168 | | 4 (0)| 00:00:01 | | | | | |
|* 29 | TABLE ACCESS FULL | VOIP_ABNORM_DISCONN_CD | 7 | 168 | | 2 (0)| 00:00:01 | | | | | |
| 30 | PX BLOCK ITERATOR | | 7874K| 413M| | 5546 (3)| 00:01:07 | 1 | 3 | Q1,04 | PCWC | |
|* 31 | TABLE ACCESS FULL | HIQ_EVENT_T | 7874K| 413M| | 5546 (3)| 00:01:07 | 1 | 3 | Q1,04 | PCWP | |
|* 32 | HASH JOIN | | 51M| 5516M| | 5612 (4)| 00:01:08 | | | Q1,04 | PCWP | |
| 33 | BUFFER SORT | | | | | | | | | Q1,04 | PCWC | |
| 34 | PX RECEIVE | | 13 | 754 | | 5 (0)| 00:00:01 | | | Q1,04 | PCWP | |
| 35 | PX SEND BROADCAST | :TQ10002 | 13 | 754 | | 5 (0)| 00:00:01 | | | | S->P | BROADCAST |
| 36 | MERGE JOIN CARTESIAN| | 13 | 754 | | 5 (0)| 00:00:01 | | | | | |
| 37 | INDEX FULL SCAN | IDX_PK_PBX_PILOT_DID | 2 | 68 | | 1 (0)| 00:00:01 | | | | | |
| 38 | BUFFER SORT | | 7 | 168 | | 4 (0)| 00:00:01 | | | | | |
|* 39 | TABLE ACCESS FULL | VOIP_ABNORM_DISCONN_CD | 7 | 168 | | 2 (0)| 00:00:01 | | | | | |
| 40 | PX BLOCK ITERATOR | | 7874K| 413M| | 5546 (3)| 00:01:07 | 1 | 3 | Q1,04 | PCWC | |
|* 41 | TABLE ACCESS FULL | HIQ_EVENT_T | 7874K| 413M| | 5546 (3)| 00:01:07 | 1 | 3 | Q1,04 | PCWP | |
|* 42 | HASH JOIN | | 51M| 6052M| | 5612 (4)| 00:01:08 | | | Q1,04 | PCWP | |
| 43 | BUFFER SORT | | | | | | | | | Q1,04 | PCWC | |
| 44 | PX RECEIVE | | 13 | 754 | | 5 (0)| 00:00:01 | | | Q1,04 | PCWP | |
| 45 | PX SEND BROADCAST | :TQ10003 | 13 | 754 | | 5 (0)| 00:00:01 | | | | S->P | BROADCAST |
| 46 | MERGE JOIN CARTESIAN| | 13 | 754 | | 5 (0)| 00:00:01 | | | | | |
| 47 | INDEX FULL SCAN | IDX_PK_PBX_PILOT_DID | 2 | 68 | | 1 (0)| 00:00:01 | | | | | |
| 48 | BUFFER SORT | | 7 | 168 | | 4 (0)| 00:00:01 | | | | | |
|* 49 | TABLE ACCESS FULL | VOIP_ABNORM_DISCONN_CD | 7 | 168 | | 2 (0)| 00:00:01 | | | | | |
| 50 | PX BLOCK ITERATOR | | 7874K| 495M| | 5546 (3)| 00:01:07 | 1 | 3 | Q1,04 | PCWC | |
|* 51 | TABLE ACCESS FULL | HIQ_EVENT_T | 7874K| 495M| | 5546 (3)| 00:01:07 | 1 | 3 | Q1,04 | PCWP | |
Predicate Information (identified by operation id):
12 - access("H"."ATTEMPT_INDICATOR_ID"=TO_NUMBER("DCODE"."CDR_COLUMN_18_CODE") AND "DCODE"."CDR_COLUMN_19_CODE"="H"."RELEASE_CAUSE_ID" AND
"TPILOT"."DID_NUM"="H"."TERM_NUM")
filter("DCODE"."EFF_START_DT"<="H"."RETENTION_TS" AND "DCODE"."EFF_END_DT">"H"."RETENTION_TS" AND "TPILOT"."EFF_START_DT"<="H"."RETENTION_TS" AND
"TPILOT"."EFF_END_DT">"H"."RETENTION_TS")
19 - filter("DCODE"."ABNORM_DISCONN_IND"='N')
21 - filter("HIQ_RECORD_TYPE_ID"='00000000' AND ("H"."RETENTION_TS">=TO_DATE('2009-01-01 23:59:59', 'yyyy-mm-dd hh24:mi:ss') AND
"H"."RETENTION_TS"<TO_DATE('2011-02-14 23:59:59', 'yyyy-mm-dd hh24:mi:ss') OR "H"."CALL_RLSE_TS">=TIMESTAMP'2009-01-01 23:59:59' AND
"H"."RETENTION_TS">=TO_DATE('2008-12-31 23:59:59', 'yyyy-mm-dd hh24:mi:ss')))
22 - access("H"."ATTEMPT_INDICATOR_ID"=TO_NUMBER("DCODE"."CDR_COLUMN_18_CODE") AND "DCODE"."CDR_COLUMN_19_CODE"="H"."RELEASE_CAUSE_ID" AND
"TPILOT"."DID_NUM"="H"."TERM_NUM")
filter("DCODE"."EFF_START_DT"<="H"."RETENTION_TS" AND "DCODE"."EFF_END_DT">"H"."RETENTION_TS" AND "TPILOT"."EFF_START_DT"<="H"."RETENTION_TS" AND
"TPILOT"."EFF_END_DT">"H"."RETENTION_TS")
29 - filter("DCODE"."ABNORM_DISCONN_IND"='N')
31 - filter("HIQ_RECORD_TYPE_ID"='00000000' AND ("H"."RETENTION_TS">=TO_DATE('2009-01-01 23:59:59', 'yyyy-mm-dd hh24:mi:ss') AND
"H"."RETENTION_TS"<TO_DATE('2011-02-14 23:59:59', 'yyyy-mm-dd hh24:mi:ss') OR "H"."CALL_RLSE_TS">=TIMESTAMP'2009-01-01 23:59:59' AND
"H"."RETENTION_TS">=TO_DATE('2008-12-31 23:59:59', 'yyyy-mm-dd hh24:mi:ss')))
32 - access("H"."ATTEMPT_INDICATOR_ID"=TO_NUMBER("DCODE"."CDR_COLUMN_18_CODE") AND "DCODE"."CDR_COLUMN_19_CODE"="H"."RELEASE_CAUSE_ID" AND
"PILOT"."DID_NUM"="H"."ORIG_NUM")
filter("DCODE"."EFF_START_DT"<="H"."RETENTION_TS" AND "DCODE"."EFF_END_DT">"H"."RETENTION_TS" AND "PILOT"."EFF_START_DT"<="H"."RETENTION_TS" AND
"PILOT"."EFF_END_DT">"H"."RETENTION_TS")
39 - filter("DCODE"."ABNORM_DISCONN_IND"='N')
41 - filter("HIQ_RECORD_TYPE_ID"='00000000' AND ("H"."RETENTION_TS">=TO_DATE('2009-01-01 23:59:59', 'yyyy-mm-dd hh24:mi:ss') AND
"H"."RETENTION_TS"<TO_DATE('2011-02-14 23:59:59', 'yyyy-mm-dd hh24:mi:ss') OR "H"."CALL_RLSE_TS">=TIMESTAMP'2009-01-01 23:59:59' AND
"H"."RETENTION_TS">=TO_DATE('2008-12-31 23:59:59', 'yyyy-mm-dd hh24:mi:ss')))
42 - access("H"."ATTEMPT_INDICATOR_ID"=TO_NUMBER("DCODE"."CDR_COLUMN_18_CODE") AND "DCODE"."CDR_COLUMN_19_CODE"="H"."RELEASE_CAUSE_ID" AND
"PILOT"."DID_NUM"="H"."ORIG_NUM")
filter("DCODE"."EFF_START_DT"<="H"."RETENTION_TS" AND "DCODE"."EFF_END_DT">"H"."RETENTION_TS" AND "PILOT"."EFF_START_DT"<="H"."RETENTION_TS" AND
"PILOT"."EFF_END_DT">"H"."RETENTION_TS")
49 - filter("DCODE"."ABNORM_DISCONN_IND"='N')
51 - filter("HIQ_RECORD_TYPE_ID"='00000000' AND ("H"."RETENTION_TS">=TO_DATE('2009-01-01 23:59:59', 'yyyy-mm-dd hh24:mi:ss') AND
"H"."RETENTION_TS"<TO_DATE('2011-02-14 23:59:59', 'yyyy-mm-dd hh24:mi:ss') OR "H"."CALL_RLSE_TS">=TIMESTAMP'2009-01-01 23:59:59' AND
"H"."RETENTION_TS">=TO_DATE('2008-12-31 23:59:59', 'yyyy-mm-dd hh24:mi:ss'))) -
For which tables we allowed buffer
hi gurus
plz inform me
for which tables we allowed buffer
thank you
kals.Hi
<b>Table buffering</b>
Advantages of buffering
Concept of buffering
Buffering types
Buffer synchronization
<b>Database access using Buffer concept</b>
Buffering allows you to access data quicker by letting you
access it from the application server instead of the database.
<b>Advantages of buffering</b>
Table buffering increases the performance when the records of the table are read.
As records of a buffered table are read directly from the local buffer of the application server on which the accessing transaction is running, time required to access data is greatly reduced. The access improves by a factor of 10 to 100 depending on the structure of the table and on the exact system configuration.
If the storage requirements in the buffer increase due to further data, the data that has not been accessed for the longest time is displaced. This displacement takes place asynchronously at certain times which are defined dynamically based on the buffer accesses. Data is only displaced if the free space in the buffer is less than a predefined value or the quality of the access is not satisfactory at this time.
Entering $TAB in the command field resets the table buffers on the corresponding application server. Only use this command if there are inconsistencies in the buffer. In large systems, it can take several hours to fill the buffers. The performance is considerably reduced during this time.
<b>Concept of buffering</b>
<b>The R/3 System manages and synchronizes the buffers on the individual application servers. If an application program accesses data of a table, the database interfaces determines whether this data lies in the buffer of the application server. If this is the case, the data is read directly from the buffer. If the data is not in the buffer of the application server, it is read from the database and loaded into the buffer. The buffer can therefore satisfy the next access to this data.
The buffering type determines which records of the table are loaded into the buffer of the application server when a record of the table is accessed. There are three different buffering types.
With full buffering, all the table records are loaded into the buffer when one record of the table is accessed.
With generic buffering, all the records whose left-justified part of the key is the same are loaded into the buffer when a table record is accessed.
With single-record buffering, only the record that was accessed is loaded into the buffer.</b><b>Buffering types</b>
With full buffering, the table is either completely or not at all in the buffer. When a record of the table is accessed, all the records of the table are loaded into the buffer.
When you decide whether a table should be fully buffered, you must take the table size, the number of read accesses and the number of write accesses into consideration. The smaller the table is, the more frequently it is read and the less frequently it is written, the better it is to fully buffer the table.
Full buffering is also advisable for tables having frequent accesses to records that do not exist. Since all the records of the table reside in the buffer, it is already clear in the buffer whether or not a record exists.
The data records are stored in the buffer sorted by table key. When you access the data with SELECT, only fields up to the last specified key field can be used for the access. The left-justified part of the key should therefore be as large as possible for such accesses. For example, if the first key field is not defined, the entire table is scanned in the buffer. Under these circumstances, a direct access to the database could be more efficient if there is a suitable secondary index there.
With generic buffering, all the records whose generic key fields agree with this record are loaded into the buffer when one record of the table is accessed. The generic key is a left-justified part of the primary key of the table that must be defined when the buffering type is selected. The generic key should be selected so that the generic areas are not too small, which would result in too many generic areas. If there are only a few records for each generic area, full buffering is usually preferable for the table. If you choose too large a generic key, too much data will be invalidated if there are changes to table entries, which would have a negative effect on the performance.
A table should be generically buffered if only certain generic areas of the table are usually needed for processing.
Client-dependent, fully buffered tables are automatically generically buffered. The client field is the generic key. It is assumed that not all of the clients are being processed at the same time on one application server. Language-dependent tables are a further example of generic buffering. The generic key includes all the key fields up to and including the language field.
The generic areas are managed in the buffer as independent objects. The generic areas are managed analogously to fully buffered tables. You should therefore also read the information about full buffering.
Single-record buffering is recommended particularly for large tables in which only a few records are accessed repeatedly with SELECT SINGLE. All the accesses to the table that do not use SELECT SINGLE bypass the buffer and directly access the database.
If you access a record that was not yet buffered using SELECT SINGLE, there is a database access to load the record. If the table does not contain a record with the specified key, this record is recorded in the buffer as non-existent. This prevents a further database access if you make another access with the same key
You only need one database access to load a table with full buffering, but you need several database accesses with single-record buffering. Full buffering is therefore generally preferable for small tables that are frequently accessed.
<b>Synchronizing local buffers</b>
The table buffers reside locally on each application server in the system. However, this makes it necessary for the buffer administration to transfer all changes made to buffered objects to all the application servers of the system.
If a buffered table is modified, it is updated synchronously in the buffer of the application server from which the change was made. The buffers of the whole network, that is, the buffers of all the other application servers, are synchronized with an asynchronous procedure.
Entries are written in a central database table (DDLOG) after each table modification that could be buffered. Each application server reads these entries at fixed time intervals.
If entries are found that show a change to the data buffered by this server, this data is invalidated. If this data is accessed again, it is read directly from the database. In such an access, the table can then be loaded to the buffer again.
<b>Reward if usefull</b> -
When it is beter to buffer the table
hi
when it is beter to buffer the tableHi
<b>Table buffering</b>
Advantages of buffering
Concept of buffering
Buffering types
Buffer synchronization
<b>Database access using Buffer concept</b>
Buffering allows you to access data quicker by letting you
access it from the application server instead of the database.
<b>Advantages of buffering</b>
Table buffering increases the performance when the records of the table are read.
As records of a buffered table are read directly from the local buffer of the application server on which the accessing transaction is running, time required to access data is greatly reduced. The access improves by a factor of 10 to 100 depending on the structure of the table and on the exact system configuration.
If the storage requirements in the buffer increase due to further data, the data that has not been accessed for the longest time is displaced. This displacement takes place asynchronously at certain times which are defined dynamically based on the buffer accesses. Data is only displaced if the free space in the buffer is less than a predefined value or the quality of the access is not satisfactory at this time.
Entering $TAB in the command field resets the table buffers on the corresponding application server. Only use this command if there are inconsistencies in the buffer. In large systems, it can take several hours to fill the buffers. The performance is considerably reduced during this time.
<b>Concept of buffering</b>
The R/3 System manages and synchronizes the buffers on the individual application servers. If an application program accesses data of a table, the database interfaces determines whether this data lies in the buffer of the application server. If this is the case, the data is read directly from the buffer. If the data is not in the buffer of the application server, it is read from the database and loaded into the buffer. The buffer can therefore satisfy the next access to this data.
The buffering type determines which records of the table are loaded into the buffer of the application server when a record of the table is accessed. There are three different buffering types.
With full buffering, all the table records are loaded into the buffer when one record of the table is accessed.
With generic buffering, all the records whose left-justified part of the key is the same are loaded into the buffer when a table record is accessed.
With single-record buffering, only the record that was accessed is loaded into the buffer.
<b>Buffering types</b>
With full buffering, the table is either completely or not at all in the buffer. When a record of the table is accessed, all the records of the table are loaded into the buffer.
When you decide whether a table should be fully buffered, you must take the table size, the number of read accesses and the number of write accesses into consideration. The smaller the table is, the more frequently it is read and the less frequently it is written, the better it is to fully buffer the table.
Full buffering is also advisable for tables having frequent accesses to records that do not exist. Since all the records of the table reside in the buffer, it is already clear in the buffer whether or not a record exists.
The data records are stored in the buffer sorted by table key. When you access the data with SELECT, only fields up to the last specified key field can be used for the access. The left-justified part of the key should therefore be as large as possible for such accesses. For example, if the first key field is not defined, the entire table is scanned in the buffer. Under these circumstances, a direct access to the database could be more efficient if there is a suitable secondary index there.
With generic buffering, all the records whose generic key fields agree with this record are loaded into the buffer when one record of the table is accessed. The generic key is a left-justified part of the primary key of the table that must be defined when the buffering type is selected. The generic key should be selected so that the generic areas are not too small, which would result in too many generic areas. If there are only a few records for each generic area, full buffering is usually preferable for the table. If you choose too large a generic key, too much data will be invalidated if there are changes to table entries, which would have a negative effect on the performance.
A table should be generically buffered if only certain generic areas of the table are usually needed for processing.
Client-dependent, fully buffered tables are automatically generically buffered. The client field is the generic key. It is assumed that not all of the clients are being processed at the same time on one application server. Language-dependent tables are a further example of generic buffering. The generic key includes all the key fields up to and including the language field.
The generic areas are managed in the buffer as independent objects. The generic areas are managed analogously to fully buffered tables. You should therefore also read the information about full buffering.
Single-record buffering is recommended particularly for large tables in which only a few records are accessed repeatedly with SELECT SINGLE. All the accesses to the table that do not use SELECT SINGLE bypass the buffer and directly access the database.
If you access a record that was not yet buffered using SELECT SINGLE, there is a database access to load the record. If the table does not contain a record with the specified key, this record is recorded in the buffer as non-existent. This prevents a further database access if you make another access with the same key
You only need one database access to load a table with full buffering, but you need several database accesses with single-record buffering. Full buffering is therefore generally preferable for small tables that are frequently accessed.
<b>Synchronizing local buffers</b>
The table buffers reside locally on each application server in the system. However, this makes it necessary for the buffer administration to transfer all changes made to buffered objects to all the application servers of the system.
If a buffered table is modified, it is updated synchronously in the buffer of the application server from which the change was made. The buffers of the whole network, that is, the buffers of all the other application servers, are synchronized with an asynchronous procedure.
Entries are written in a central database table (DDLOG) after each table modification that could be buffered. Each application server reads these entries at fixed time intervals.
If entries are found that show a change to the data buffered by this server, this data is invalidated. If this data is accessed again, it is read directly from the database. In such an access, the table can then be loaded to the buffer again.
<b>Using buffered tables improves the performance considerably.</b>
Bypassing the buffer increases the network considerably
SELECT SINGLE * FROM T100 INTO T100_WA
BYPASSING BUFFER
WHERE SPRSL = 'D'
AND ARBGB = '00'
AND MSGNR = '999'.
The above mentioned code can be more optimized by using the following code
SELECT SINGLE * FROM T100 INTO T100_WA
WHERE SPRSL = 'D'
AND ARBGB = '00'
AND MSGNR = '999'.
<b>Optimizing the load of the database</b>
<b>Using table buffering</b>
Using buffered tables improves the performance considerably. Note that in some cases a statement can not be used with a buffered table, so when using these statements the buffer will be bypassed. These statements are:
Select DISTINCT
ORDER BY / GROUP BY / HAVING clause
Any WHERE clause that contains a sub query or IS NULL expression
JOIN s
A SELECT... FOR UPDATE
If you wan t to explicitly bypass the buffer, use the BYPASS BUFFER addition to the SELECT clause.
<b>Reward if useful</b> -
Report performance issue in oracle database 10g to 11g
Hi All,
We have one test instance for database 10g where the report is working fine below is the plan for report.
SELECT STATEMENT
VIEW APPS
SORT UNIQUE
UNION-ALL
HASH JOIN
TABLE ACCESS BY INDEX ROWID INV.MTL_SYSTEM_ITEMS_B
NESTED LOOPS
MERGE JOIN CARTESIAN
TABLE ACCESS FULL INV.MTL_PARAMETERS
BUFFER SORT
TABLE ACCESS BY INDEX ROWID APPLSYS.FND_LOOKUP_VALUES
INDEX RANGE SCAN APPLSYS.FND_LOOKUP_VALUES_U2
INDEX RANGE SCAN INV.MTL_SYSTEM_ITEMS_B_XX1
TABLE ACCESS FULL ONT.OE_ORDER_LINES_ALL
NESTED LOOPS ANTI
HASH JOIN
TABLE ACCESS BY INDEX ROWID MRP.MRP_GROSS_REQUIREMENTS
INDEX SKIP SCAN MRP.MRP_GROSS_REQUIREMENTS_N2
TABLE ACCESS BY INDEX ROWID INV.MTL_SYSTEM_ITEMS_B
NESTED LOOPS
MERGE JOIN CARTESIAN
TABLE ACCESS FULL INV.MTL_PARAMETERS
BUFFER SORT
TABLE ACCESS BY INDEX ROWID APPLSYS.FND_LOOKUP_VALUES
INDEX RANGE SCAN APPLSYS.FND_LOOKUP_VALUES_U2
INDEX RANGE SCAN INV.MTL_SYSTEM_ITEMS_B_XX1
TABLE ACCESS BY INDEX ROWID ONT.OE_ORDER_LINES_ALL
INDEX RANGE SCAN ONT.OE_ORDER_LINES_N3
We have one more instance whose database is 11g and the same report is migrated but it is taking too long time to execute the report output. Please advise why it is happening even why the plan is difference.
SELECT STATEMENT
VIEW APPS
SORT UNIQUE
UNION-ALL
NESTED LOOPS
NESTED LOOPS
NESTED LOOPS
NESTED LOOPS
NESTED LOOPS
INDEX RANGE SCAN INV.MTL_ITEM_CATEGORIES_U1
INDEX UNIQUE SCAN INV.MTL_CATEGORY_SETS_B_U1
TABLE ACCESS BY INDEX ROWID INV.MTL_CATEGORIES_B
INDEX UNIQUE SCAN INV.MTL_CATEGORIES_B_U1
INDEX UNIQUE SCAN INV.MTL_CATEGORIES_TL_U1
INDEX UNIQUE SCAN INV.MTL_CATEGORY_SETS_TL_U1
TABLE ACCESS BY INDEX ROWID INV.MTL_CATEGORY_SETS_TL
SORT AGGREGATE
TABLE ACCESS BY INDEX ROWID BOM.BOM_STRUCTURES_B
INDEX RANGE SCAN BOM.BOM_STRUCTURES_B_N2
SORT AGGREGATE
INDEX RANGE SCAN BOM.BOM_OPERATIONAL_ROUTINGS_U2
SORT AGGREGATE
TABLE ACCESS BY INDEX ROWID BOM.CST_ITEM_COSTS
INDEX UNIQUE SCAN BOM.CST_ITEM_COSTS_U1
SORT AGGREGATE
TABLE ACCESS BY INDEX ROWID BOM.CST_ITEM_COSTS
INDEX UNIQUE SCAN BOM.CST_ITEM_COSTS_U1
SORT AGGREGATE
FILTER
NESTED LOOPS
NESTED LOOPS
MERGE JOIN CARTESIAN
NESTED LOOPS
NESTED LOOPS
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_HEADERS_TL
INDEX RANGE SCAN QP.QP_LIST_HEADERS_TL_U1
INDEX UNIQUE SCAN QP.QP_LIST_HEADERS_B_PK
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_HEADERS_B
BUFFER SORT
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX SKIP SCAN QP.QP_PRICING_ATTRIBUTES_N11
INDEX UNIQUE SCAN QP.QP_LIST_LINES_PK
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_LINES
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
SORT AGGREGATE
FILTER
NESTED LOOPS
NESTED LOOPS
MERGE JOIN CARTESIAN
NESTED LOOPS
NESTED LOOPS
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_HEADERS_TL
INDEX RANGE SCAN QP.QP_LIST_HEADERS_TL_U1
INDEX UNIQUE SCAN QP.QP_LIST_HEADERS_B_PK
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_HEADERS_B
BUFFER SORT
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX SKIP SCAN QP.QP_PRICING_ATTRIBUTES_N11
INDEX UNIQUE SCAN QP.QP_LIST_LINES_PK
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_LINES
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
SORT AGGREGATE
NESTED LOOPS
TABLE ACCESS BY INDEX ROWID MRP.MRP_ASSIGNMENT_SETS
INDEX UNIQUE SCAN MRP.MRP_ASSIGNMENT_SETS_U2
INDEX RANGE SCAN MRP.MRP_SR_ASSIGNMENTS_N3
SORT AGGREGATE
TABLE ACCESS BY INDEX ROWID PO.PO_APPROVED_SUPPLIER_LIST
INDEX RANGE SCAN PO.PO_APPROVED_SUPPLIER_LIST_N1
SORT AGGREGATE
TABLE ACCESS BY INDEX ROWID INV.MTL_ONHAND_QUANTITIES_DETAIL
INDEX RANGE SCAN INV.MTL_ONHAND_QUANTITIES_N6
SORT AGGREGATE
TABLE ACCESS BY INDEX ROWID INV.MTL_ONHAND_QUANTITIES_DETAIL
INDEX RANGE SCAN INV.MTL_ONHAND_QUANTITIES_N6
SORT AGGREGATE
TABLE ACCESS BY INDEX ROWID ONT.OE_ORDER_LINES_ALL
INDEX RANGE SCAN ONT.OE_ORDER_LINES_N3
SORT AGGREGATE
TABLE ACCESS BY INDEX ROWID ONT.OE_ORDER_LINES_ALL
INDEX RANGE SCAN ONT.OE_ORDER_LINES_N3
NESTED LOOPS
NESTED LOOPS
NESTED LOOPS
INDEX RANGE SCAN INV.MTL_ITEM_CATEGORIES_U1
TABLE ACCESS BY INDEX ROWID INV.MTL_CATEGORIES_B
INDEX UNIQUE SCAN INV.MTL_CATEGORIES_B_U1
INDEX UNIQUE SCAN INV.MTL_CATEGORY_SETS_TL_U1
TABLE ACCESS BY INDEX ROWID INV.MTL_CATEGORY_SETS_TL
HASH JOIN
NESTED LOOPS
NESTED LOOPS
MERGE JOIN CARTESIAN
TABLE ACCESS FULL INV.MTL_PARAMETERS
BUFFER SORT
TABLE ACCESS BY INDEX ROWID APPLSYS.FND_LOOKUP_VALUES
INDEX RANGE SCAN APPLSYS.FND_LOOKUP_VALUES_U2
INDEX RANGE SCAN INV.MTL_SYSTEM_ITEMS_B_XX1
TABLE ACCESS BY INDEX ROWID INV.MTL_SYSTEM_ITEMS_B
TABLE ACCESS FULL ONT.OE_ORDER_LINES_ALL
NESTED LOOPS
NESTED LOOPS
NESTED LOOPS
NESTED LOOPS
NESTED LOOPS
INDEX RANGE SCAN INV.MTL_ITEM_CATEGORIES_U1
INDEX UNIQUE SCAN INV.MTL_CATEGORY_SETS_B_U1
TABLE ACCESS BY INDEX ROWID INV.MTL_CATEGORIES_B
INDEX UNIQUE SCAN INV.MTL_CATEGORIES_B_U1
INDEX UNIQUE SCAN INV.MTL_CATEGORIES_TL_U1
INDEX UNIQUE SCAN INV.MTL_CATEGORY_SETS_TL_U1
TABLE ACCESS BY INDEX ROWID INV.MTL_CATEGORY_SETS_TL
TABLE ACCESS BY INDEX ROWID BOM.BOM_STRUCTURES_B
INDEX RANGE SCAN BOM.BOM_STRUCTURES_B_N2
INDEX RANGE SCAN BOM.BOM_OPERATIONAL_ROUTINGS_U2
TABLE ACCESS BY INDEX ROWID BOM.CST_ITEM_COSTS
INDEX UNIQUE SCAN BOM.CST_ITEM_COSTS_U1
TABLE ACCESS BY INDEX ROWID BOM.CST_ITEM_COSTS
INDEX UNIQUE SCAN BOM.CST_ITEM_COSTS_U1
FILTER
NESTED LOOPS
NESTED LOOPS
MERGE JOIN CARTESIAN
NESTED LOOPS
NESTED LOOPS
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_HEADERS_TL
INDEX RANGE SCAN QP.QP_LIST_HEADERS_TL_U1
INDEX UNIQUE SCAN QP.QP_LIST_HEADERS_B_PK
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_HEADERS_B
BUFFER SORT
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX SKIP SCAN QP.QP_PRICING_ATTRIBUTES_N11
INDEX UNIQUE SCAN QP.QP_LIST_LINES_PK
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_LINES
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
FILTER
NESTED LOOPS
NESTED LOOPS
MERGE JOIN CARTESIAN
NESTED LOOPS
NESTED LOOPS
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_HEADERS_TL
INDEX RANGE SCAN QP.QP_LIST_HEADERS_TL_U1
INDEX UNIQUE SCAN QP.QP_LIST_HEADERS_B_PK
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_HEADERS_B
BUFFER SORT
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX SKIP SCAN QP.QP_PRICING_ATTRIBUTES_N11
INDEX UNIQUE SCAN QP.QP_LIST_LINES_PK
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_LINES
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
SORT UNIQUE NOSORT
NESTED LOOPS
TABLE ACCESS BY INDEX ROWID MRP.MRP_ASSIGNMENT_SETS
INDEX UNIQUE SCAN MRP.MRP_ASSIGNMENT_SETS_U2
INDEX RANGE SCAN MRP.MRP_SR_ASSIGNMENTS_N3
SORT UNIQUE NOSORT
TABLE ACCESS BY INDEX ROWID PO.PO_APPROVED_SUPPLIER_LIST
INDEX RANGE SCAN PO.PO_APPROVED_SUPPLIER_LIST_N1
SORT AGGREGATE
TABLE ACCESS BY INDEX ROWID INV.MTL_ONHAND_QUANTITIES_DETAIL
INDEX RANGE SCAN INV.MTL_ONHAND_QUANTITIES_N6
SORT AGGREGATE
TABLE ACCESS BY INDEX ROWID INV.MTL_ONHAND_QUANTITIES_DETAIL
INDEX RANGE SCAN INV.MTL_ONHAND_QUANTITIES_N6
SORT AGGREGATE
INDEX RANGE SCAN MRP.MRP_GROSS_REQUIREMENTS_N1
SORT AGGREGATE
INDEX RANGE SCAN MRP.MRP_GROSS_REQUIREMENTS_N1
NESTED LOOPS
NESTED LOOPS
NESTED LOOPS
INDEX RANGE SCAN INV.MTL_ITEM_CATEGORIES_U1
TABLE ACCESS BY INDEX ROWID INV.MTL_CATEGORIES_B
INDEX UNIQUE SCAN INV.MTL_CATEGORIES_B_U1
INDEX UNIQUE SCAN INV.MTL_CATEGORY_SETS_TL_U1
TABLE ACCESS BY INDEX ROWID INV.MTL_CATEGORY_SETS_TL
NESTED LOOPS ANTI
HASH JOIN
TABLE ACCESS BY INDEX ROWID MRP.MRP_GROSS_REQUIREMENTS
INDEX SKIP SCAN MRP.MRP_GROSS_REQUIREMENTS_N2
NESTED LOOPS
NESTED LOOPS
MERGE JOIN CARTESIAN
TABLE ACCESS FULL INV.MTL_PARAMETERS
BUFFER SORT
TABLE ACCESS BY INDEX ROWID APPLSYS.FND_LOOKUP_VALUES
INDEX RANGE SCAN APPLSYS.FND_LOOKUP_VALUES_U2
INDEX RANGE SCAN INV.MTL_SYSTEM_ITEMS_B_XX1
TABLE ACCESS BY INDEX ROWID INV.MTL_SYSTEM_ITEMS_B
TABLE ACCESS BY INDEX ROWID ONT.OE_ORDER_LINES_ALL
INDEX RANGE SCAN ONT.OE_ORDER_LINES_N3
}Hi All,
We have one test instance for database 10g where the report is working fine below is the plan for report.
SELECT STATEMENT
VIEW APPS
SORT UNIQUE
UNION-ALL
HASH JOIN
TABLE ACCESS BY INDEX ROWID INV.MTL_SYSTEM_ITEMS_B
NESTED LOOPS
MERGE JOIN CARTESIAN
TABLE ACCESS FULL INV.MTL_PARAMETERS
BUFFER SORT
TABLE ACCESS BY INDEX ROWID APPLSYS.FND_LOOKUP_VALUES
INDEX RANGE SCAN APPLSYS.FND_LOOKUP_VALUES_U2
INDEX RANGE SCAN INV.MTL_SYSTEM_ITEMS_B_XX1
TABLE ACCESS FULL ONT.OE_ORDER_LINES_ALL
NESTED LOOPS ANTI
HASH JOIN
TABLE ACCESS BY INDEX ROWID MRP.MRP_GROSS_REQUIREMENTS
INDEX SKIP SCAN MRP.MRP_GROSS_REQUIREMENTS_N2
TABLE ACCESS BY INDEX ROWID INV.MTL_SYSTEM_ITEMS_B
NESTED LOOPS
MERGE JOIN CARTESIAN
TABLE ACCESS FULL INV.MTL_PARAMETERS
BUFFER SORT
TABLE ACCESS BY INDEX ROWID APPLSYS.FND_LOOKUP_VALUES
INDEX RANGE SCAN APPLSYS.FND_LOOKUP_VALUES_U2
INDEX RANGE SCAN INV.MTL_SYSTEM_ITEMS_B_XX1
TABLE ACCESS BY INDEX ROWID ONT.OE_ORDER_LINES_ALL
INDEX RANGE SCAN ONT.OE_ORDER_LINES_N3
We have one more instance whose database is 11g and the same report is migrated but it is taking too long time to execute the report output. Please advise why it is happening even why the plan is difference.
SELECT STATEMENT
VIEW APPS
SORT UNIQUE
UNION-ALL
NESTED LOOPS
NESTED LOOPS
NESTED LOOPS
NESTED LOOPS
NESTED LOOPS
INDEX RANGE SCAN INV.MTL_ITEM_CATEGORIES_U1
INDEX UNIQUE SCAN INV.MTL_CATEGORY_SETS_B_U1
TABLE ACCESS BY INDEX ROWID INV.MTL_CATEGORIES_B
INDEX UNIQUE SCAN INV.MTL_CATEGORIES_B_U1
INDEX UNIQUE SCAN INV.MTL_CATEGORIES_TL_U1
INDEX UNIQUE SCAN INV.MTL_CATEGORY_SETS_TL_U1
TABLE ACCESS BY INDEX ROWID INV.MTL_CATEGORY_SETS_TL
SORT AGGREGATE
TABLE ACCESS BY INDEX ROWID BOM.BOM_STRUCTURES_B
INDEX RANGE SCAN BOM.BOM_STRUCTURES_B_N2
SORT AGGREGATE
INDEX RANGE SCAN BOM.BOM_OPERATIONAL_ROUTINGS_U2
SORT AGGREGATE
TABLE ACCESS BY INDEX ROWID BOM.CST_ITEM_COSTS
INDEX UNIQUE SCAN BOM.CST_ITEM_COSTS_U1
SORT AGGREGATE
TABLE ACCESS BY INDEX ROWID BOM.CST_ITEM_COSTS
INDEX UNIQUE SCAN BOM.CST_ITEM_COSTS_U1
SORT AGGREGATE
FILTER
NESTED LOOPS
NESTED LOOPS
MERGE JOIN CARTESIAN
NESTED LOOPS
NESTED LOOPS
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_HEADERS_TL
INDEX RANGE SCAN QP.QP_LIST_HEADERS_TL_U1
INDEX UNIQUE SCAN QP.QP_LIST_HEADERS_B_PK
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_HEADERS_B
BUFFER SORT
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX SKIP SCAN QP.QP_PRICING_ATTRIBUTES_N11
INDEX UNIQUE SCAN QP.QP_LIST_LINES_PK
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_LINES
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
SORT AGGREGATE
FILTER
NESTED LOOPS
NESTED LOOPS
MERGE JOIN CARTESIAN
NESTED LOOPS
NESTED LOOPS
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_HEADERS_TL
INDEX RANGE SCAN QP.QP_LIST_HEADERS_TL_U1
INDEX UNIQUE SCAN QP.QP_LIST_HEADERS_B_PK
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_HEADERS_B
BUFFER SORT
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX SKIP SCAN QP.QP_PRICING_ATTRIBUTES_N11
INDEX UNIQUE SCAN QP.QP_LIST_LINES_PK
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_LINES
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
SORT AGGREGATE
NESTED LOOPS
TABLE ACCESS BY INDEX ROWID MRP.MRP_ASSIGNMENT_SETS
INDEX UNIQUE SCAN MRP.MRP_ASSIGNMENT_SETS_U2
INDEX RANGE SCAN MRP.MRP_SR_ASSIGNMENTS_N3
SORT AGGREGATE
TABLE ACCESS BY INDEX ROWID PO.PO_APPROVED_SUPPLIER_LIST
INDEX RANGE SCAN PO.PO_APPROVED_SUPPLIER_LIST_N1
SORT AGGREGATE
TABLE ACCESS BY INDEX ROWID INV.MTL_ONHAND_QUANTITIES_DETAIL
INDEX RANGE SCAN INV.MTL_ONHAND_QUANTITIES_N6
SORT AGGREGATE
TABLE ACCESS BY INDEX ROWID INV.MTL_ONHAND_QUANTITIES_DETAIL
INDEX RANGE SCAN INV.MTL_ONHAND_QUANTITIES_N6
SORT AGGREGATE
TABLE ACCESS BY INDEX ROWID ONT.OE_ORDER_LINES_ALL
INDEX RANGE SCAN ONT.OE_ORDER_LINES_N3
SORT AGGREGATE
TABLE ACCESS BY INDEX ROWID ONT.OE_ORDER_LINES_ALL
INDEX RANGE SCAN ONT.OE_ORDER_LINES_N3
NESTED LOOPS
NESTED LOOPS
NESTED LOOPS
INDEX RANGE SCAN INV.MTL_ITEM_CATEGORIES_U1
TABLE ACCESS BY INDEX ROWID INV.MTL_CATEGORIES_B
INDEX UNIQUE SCAN INV.MTL_CATEGORIES_B_U1
INDEX UNIQUE SCAN INV.MTL_CATEGORY_SETS_TL_U1
TABLE ACCESS BY INDEX ROWID INV.MTL_CATEGORY_SETS_TL
HASH JOIN
NESTED LOOPS
NESTED LOOPS
MERGE JOIN CARTESIAN
TABLE ACCESS FULL INV.MTL_PARAMETERS
BUFFER SORT
TABLE ACCESS BY INDEX ROWID APPLSYS.FND_LOOKUP_VALUES
INDEX RANGE SCAN APPLSYS.FND_LOOKUP_VALUES_U2
INDEX RANGE SCAN INV.MTL_SYSTEM_ITEMS_B_XX1
TABLE ACCESS BY INDEX ROWID INV.MTL_SYSTEM_ITEMS_B
TABLE ACCESS FULL ONT.OE_ORDER_LINES_ALL
NESTED LOOPS
NESTED LOOPS
NESTED LOOPS
NESTED LOOPS
NESTED LOOPS
INDEX RANGE SCAN INV.MTL_ITEM_CATEGORIES_U1
INDEX UNIQUE SCAN INV.MTL_CATEGORY_SETS_B_U1
TABLE ACCESS BY INDEX ROWID INV.MTL_CATEGORIES_B
INDEX UNIQUE SCAN INV.MTL_CATEGORIES_B_U1
INDEX UNIQUE SCAN INV.MTL_CATEGORIES_TL_U1
INDEX UNIQUE SCAN INV.MTL_CATEGORY_SETS_TL_U1
TABLE ACCESS BY INDEX ROWID INV.MTL_CATEGORY_SETS_TL
TABLE ACCESS BY INDEX ROWID BOM.BOM_STRUCTURES_B
INDEX RANGE SCAN BOM.BOM_STRUCTURES_B_N2
INDEX RANGE SCAN BOM.BOM_OPERATIONAL_ROUTINGS_U2
TABLE ACCESS BY INDEX ROWID BOM.CST_ITEM_COSTS
INDEX UNIQUE SCAN BOM.CST_ITEM_COSTS_U1
TABLE ACCESS BY INDEX ROWID BOM.CST_ITEM_COSTS
INDEX UNIQUE SCAN BOM.CST_ITEM_COSTS_U1
FILTER
NESTED LOOPS
NESTED LOOPS
MERGE JOIN CARTESIAN
NESTED LOOPS
NESTED LOOPS
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_HEADERS_TL
INDEX RANGE SCAN QP.QP_LIST_HEADERS_TL_U1
INDEX UNIQUE SCAN QP.QP_LIST_HEADERS_B_PK
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_HEADERS_B
BUFFER SORT
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX SKIP SCAN QP.QP_PRICING_ATTRIBUTES_N11
INDEX UNIQUE SCAN QP.QP_LIST_LINES_PK
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_LINES
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
FILTER
NESTED LOOPS
NESTED LOOPS
MERGE JOIN CARTESIAN
NESTED LOOPS
NESTED LOOPS
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_HEADERS_TL
INDEX RANGE SCAN QP.QP_LIST_HEADERS_TL_U1
INDEX UNIQUE SCAN QP.QP_LIST_HEADERS_B_PK
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_HEADERS_B
BUFFER SORT
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX SKIP SCAN QP.QP_PRICING_ATTRIBUTES_N11
INDEX UNIQUE SCAN QP.QP_LIST_LINES_PK
TABLE ACCESS BY INDEX ROWID QP.QP_LIST_LINES
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
TABLE ACCESS BY INDEX ROWID QP.QP_PRICING_ATTRIBUTES
INDEX RANGE SCAN QP.QP_PRICING_ATTRIBUTES_N3
SORT UNIQUE NOSORT
NESTED LOOPS
TABLE ACCESS BY INDEX ROWID MRP.MRP_ASSIGNMENT_SETS
INDEX UNIQUE SCAN MRP.MRP_ASSIGNMENT_SETS_U2
INDEX RANGE SCAN MRP.MRP_SR_ASSIGNMENTS_N3
SORT UNIQUE NOSORT
TABLE ACCESS BY INDEX ROWID PO.PO_APPROVED_SUPPLIER_LIST
INDEX RANGE SCAN PO.PO_APPROVED_SUPPLIER_LIST_N1
SORT AGGREGATE
TABLE ACCESS BY INDEX ROWID INV.MTL_ONHAND_QUANTITIES_DETAIL
INDEX RANGE SCAN INV.MTL_ONHAND_QUANTITIES_N6
SORT AGGREGATE
TABLE ACCESS BY INDEX ROWID INV.MTL_ONHAND_QUANTITIES_DETAIL
INDEX RANGE SCAN INV.MTL_ONHAND_QUANTITIES_N6
SORT AGGREGATE
INDEX RANGE SCAN MRP.MRP_GROSS_REQUIREMENTS_N1
SORT AGGREGATE
INDEX RANGE SCAN MRP.MRP_GROSS_REQUIREMENTS_N1
NESTED LOOPS
NESTED LOOPS
NESTED LOOPS
INDEX RANGE SCAN INV.MTL_ITEM_CATEGORIES_U1
TABLE ACCESS BY INDEX ROWID INV.MTL_CATEGORIES_B
INDEX UNIQUE SCAN INV.MTL_CATEGORIES_B_U1
INDEX UNIQUE SCAN INV.MTL_CATEGORY_SETS_TL_U1
TABLE ACCESS BY INDEX ROWID INV.MTL_CATEGORY_SETS_TL
NESTED LOOPS ANTI
HASH JOIN
TABLE ACCESS BY INDEX ROWID MRP.MRP_GROSS_REQUIREMENTS
INDEX SKIP SCAN MRP.MRP_GROSS_REQUIREMENTS_N2
NESTED LOOPS
NESTED LOOPS
MERGE JOIN CARTESIAN
TABLE ACCESS FULL INV.MTL_PARAMETERS
BUFFER SORT
TABLE ACCESS BY INDEX ROWID APPLSYS.FND_LOOKUP_VALUES
INDEX RANGE SCAN APPLSYS.FND_LOOKUP_VALUES_U2
INDEX RANGE SCAN INV.MTL_SYSTEM_ITEMS_B_XX1
TABLE ACCESS BY INDEX ROWID INV.MTL_SYSTEM_ITEMS_B
TABLE ACCESS BY INDEX ROWID ONT.OE_ORDER_LINES_ALL
INDEX RANGE SCAN ONT.OE_ORDER_LINES_N3
} -
I've been asked to look at the following insert statement. If i run the below sql it is taking approx 12000 secs to complete.
INSERT INTO FACT_DAILY_TMP_LOAD (AGENT_ID
,FTEGROUP_ID
,DATE_ID
,MEASURE_ID
,FACT_START_DATE
,FACT_END_DATE
,MEASURE
,FACT_ID
,CURRENT_FLAG)
WITH FTE AS ( SELECT FTE_GROUP, MAX (FTEGROUP_ID) FTE_GROUP_ID
FROM DIM_FTE_GROUP
GROUP BY FTE_GROUP),
NCC6
AS ( SELECT AGT.AGENT_ID
,FTE.FTE_GROUP_ID
,D.DATE_ID
,M.MEASURE_ID
,TRUNC (SYSDATE) AS FACT_START_DATE
,TO_DATE ('01/01/2400', 'MM/DD/YYYY') AS FACT_END_DATE
, (SUM (APP.TALKTIME + APP.POSTCALLPROCESSINGTIME))
/ 3600
MEASURE
,'1' AS CURRENT_FLAG
FROM DIM_AGENT AGT
,FTE
,DIM_DATE D
,LOOKUP_MEASURES M
,S_NCC6_IAGENTBYAPPLICATIONSTAT APP
,DIM_CONTACT_TYPE CCT
,S_MD_BUSINESS_GROUPS B
WHERE CCT.CONTACT_TYPE_NATURAL_KEY =
TO_CHAR (APP.APPLICATIONID)
AND CCT.CONTACT_TYPE_SITE = APP.DW_SOURCE_ID
AND TRUNC (APP.TIMESTAMP) >=
CCT.CONTACT_TYPE_START_DATE
AND TRUNC (APP.TIMESTAMP) < CCT.CONTACT_TYPE_END_DATE
AND CCT.CONTACT_TYPE = 'Application'
AND CCT.CONTACT_TYPE_GROUP = B.CONTACT_TYPE_GROUP
AND FTE.FTE_GROUP = B.FTE_GROUP
AND AGT.AGENT_LOGIN =
APP.DW_SOURCE_ID || APP.AGENTLOGIN
AND M.MEASURE_NAME = 'Application Phone Time'
AND TRUNC (APP.TIMESTAMP) = D.DATE_VALUE
AND TRUNC (APP.TIMESTAMP) >= AGT.AGENT_START_DATE
AND TRUNC (APP.TIMESTAMP) < AGT.AGENT_END_DATE
GROUP BY AGT.AGENT_ID
,FTE.FTE_GROUP_ID
,D.DATE_ID
,M.MEASURE_ID
,TRUNC (SYSDATE)
,TO_DATE ('01/01/2400', 'MM/DD/YYYY')
,'1')
SELECT NCC6.AGENT_ID
,NCC6.FTE_GROUP_ID
,NCC6.DATE_ID
,NCC6.MEASURE_ID
,NCC6.FACT_START_DATE
,NCC6.FACT_END_DATE
,NCC6.MEASURE
,FACT_SEQ.NEXTVAL
,NCC6.CURRENT_FLAG
FROM NCC6, FACT_DAILY F
WHERE NCC6.AGENT_ID = F.AGENT_ID(+)
AND NCC6.FTE_GROUP_ID = F.FTEGROUP_ID(+)
AND NCC6.DATE_ID = F.DATE_ID(+)
AND NCC6.MEASURE_ID = F.MEASURE_ID(+)
AND F.FACT_ID IS NULL
call count cpu elapsed disk query current rows
Parse 2 0.01 0.02 0 0 0 0
Execute 2 2283.03 13377.96 58341909 224372086 0 0
Fetch 0 0.00 0.00 0 0 0 0
total 4 2283.04 13377.98 58341909 224372086 0 0
Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 53
Rows Row Source Operation
0 LOAD TABLE CONVENTIONAL (cr=0 pr=0 pw=0 time=0 us)
0 SEQUENCE FACT_SEQ (cr=0 pr=0 pw=0 time=0 us)
0 FILTER (cr=0 pr=0 pw=0 time=0 us)
7429 NESTED LOOPS OUTER (cr=34967275 pr=6076272 pw=6076272 time=12064750 us cost=13713 size=99 card=1)
7429 VIEW (cr=176175 pr=50901 pw=50901 time=319 us cost=6294 size=160 card=2)
7429 SORT GROUP BY (cr=176175 pr=50901 pw=50901 time=199 us cost=6294 size=434 card=2)
1085593 NESTED LOOPS (cr=176175 pr=50901 pw=50901 time=92888 us)
1085593 NESTED LOOPS (cr=31519 pr=50893 pw=50893 time=67769 us cost=6293 size=434 card=2)
1085593 HASH JOIN (cr=23076 pr=50893 pw=50893 time=34342 us cost=6289 size=410 card=2)
1083095 HASH JOIN (cr=23023 pr=23008 pw=23008 time=37976 us cost=6272 size=79650 card=450)
62 HASH JOIN (cr=38 pr=34 pw=34 time=18 us cost=16 size=7252 card=49)
9 HASH JOIN (cr=15 pr=13 pw=13 time=2 us cost=9 size=840 card=10)
10 MERGE JOIN CARTESIAN (cr=8 pr=7 pw=7 time=2 us cost=4 size=560 card=10)
1 TABLE ACCESS FULL LOOKUP_MEASURES (cr=7 pr=6 pw=6 time=0 us cost=3 size=23 card=1)
10 BUFFER SORT (cr=1 pr=1 pw=1 time=1 us cost=1 size=330 card=10)
10 INDEX FULL SCAN S_MD_BUSINESS_GROUPS_PK (cr=1 pr=1 pw=1 time=1 us cost=1 size=330 card=10)(object id 62096)
35 VIEW (cr=7 pr=6 pw=6 time=2 us cost=4 size=980 card=35)
35 SORT GROUP BY (cr=7 pr=6 pw=6 time=0 us cost=4 size=665 card=35)
67 TABLE ACCESS FULL DIM_FTE_GROUP (cr=7 pr=6 pw=6 time=1 us cost=3 size=1273 card=67)
98 TABLE ACCESS FULL DIM_CONTACT_TYPE (cr=23 pr=21 pw=21 time=1 us cost=7 size=6272 card=98)
2371773 TABLE ACCESS FULL S_NCC6_IAGENTBYAPPLICATIONSTAT (cr=22985 pr=22974 pw=22974 time=42357 us cost=6249 size=68657790 card=2367510)
3019 TABLE ACCESS FULL DIM_AGENT (cr=53 pr=0 pw=0 time=12 us cost=16 size=84532 card=3019)
1085593 INDEX RANGE SCAN IDX_DIM_DATE_DATE_VALUE (cr=8443 pr=0 pw=0 time=0 us cost=1 size=0 card=1)(object id 80092)
1085593 TABLE ACCESS BY INDEX ROWID DIM_DATE (cr=144656 pr=8 pw=8 time=0 us cost=2 size=12 card=1)
7429 TABLE ACCESS BY INDEX ROWID FACT_DAILY (cr=34791100 pr=6025371 pw=6025371 time=0 us cost=13713 size=19 card=1)
67301310 BITMAP CONVERSION TO ROWIDS (cr=40957 pr=8416 pw=8416 time=180717 us)
1188361 BITMAP INDEX SINGLE VALUE IDX_FACT_DAILY_AGENT_ID (cr=40957 pr=8416 pw=8416 time=93249 us)(object id 109729)if I run the select part of the statement it takes <30 secs.
WITH FTE AS ( SELECT FTE_GROUP, MAX (FTEGROUP_ID) FTE_GROUP_ID
FROM DIM_FTE_GROUP
GROUP BY FTE_GROUP),
NCC6
AS ( SELECT AGT.AGENT_ID
,FTE.FTE_GROUP_ID
,D.DATE_ID
,M.MEASURE_ID
,TRUNC (SYSDATE) AS FACT_START_DATE
,TO_DATE ('01/01/2400', 'MM/DD/YYYY') AS FACT_END_DATE
, (SUM (APP.TALKTIME + APP.POSTCALLPROCESSINGTIME))
/ 3600
MEASURE
,'1' AS CURRENT_FLAG
FROM DIM_AGENT AGT
,FTE
,DIM_DATE D
,LOOKUP_MEASURES M
,S_NCC6_IAGENTBYAPPLICATIONSTAT APP
,DIM_CONTACT_TYPE CCT
,S_MD_BUSINESS_GROUPS B
WHERE CCT.CONTACT_TYPE_NATURAL_KEY =
TO_CHAR (APP.APPLICATIONID)
AND CCT.CONTACT_TYPE_SITE = APP.DW_SOURCE_ID
AND TRUNC (APP.TIMESTAMP) >=
CCT.CONTACT_TYPE_START_DATE
AND TRUNC (APP.TIMESTAMP) < CCT.CONTACT_TYPE_END_DATE
AND CCT.CONTACT_TYPE = 'Application'
AND CCT.CONTACT_TYPE_GROUP = B.CONTACT_TYPE_GROUP
AND FTE.FTE_GROUP = B.FTE_GROUP
AND AGT.AGENT_LOGIN =
APP.DW_SOURCE_ID || APP.AGENTLOGIN
AND M.MEASURE_NAME = 'Application Phone Time'
AND TRUNC (APP.TIMESTAMP) = D.DATE_VALUE
AND TRUNC (APP.TIMESTAMP) >= AGT.AGENT_START_DATE
AND TRUNC (APP.TIMESTAMP) < AGT.AGENT_END_DATE
GROUP BY AGT.AGENT_ID
,FTE.FTE_GROUP_ID
,D.DATE_ID
,M.MEASURE_ID
,TRUNC (SYSDATE)
,TO_DATE ('01/01/2400', 'MM/DD/YYYY')
,'1')
SELECT NCC6.AGENT_ID
,NCC6.FTE_GROUP_ID
,NCC6.DATE_ID
,NCC6.MEASURE_ID
,NCC6.FACT_START_DATE
,NCC6.FACT_END_DATE
,NCC6.MEASURE
,FACT_SEQ.NEXTVAL
,NCC6.CURRENT_FLAG
FROM NCC6, FACT_DAILY F
WHERE NCC6.AGENT_ID = F.AGENT_ID(+)
AND NCC6.FTE_GROUP_ID = F.FTEGROUP_ID(+)
AND NCC6.DATE_ID = F.DATE_ID(+)
AND NCC6.MEASURE_ID = F.MEASURE_ID(+)
AND F.FACT_ID IS NULL
call count cpu elapsed disk query current rows
Parse 1 0.01 0.03 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 1 22.93 27.28 78033 293568 0 0
total 3 22.95 27.32 78033 293568 0 0
Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 53
Rows Row Source Operation
0 SEQUENCE FACT_SEQ (cr=293568 pr=78033 pw=78033 time=0 us)
0 FILTER (cr=293568 pr=78033 pw=78033 time=0 us)
41559 HASH JOIN OUTER (cr=293568 pr=78033 pw=78033 time=3123 us cost=13975 size=99 card=1)
41559 VIEW (cr=265362 pr=49831 pw=49831 time=362 us cost=6298 size=320 card=4)
41559 HASH GROUP BY (cr=265362 pr=49831 pw=49831 time=138 us cost=6298 size=208 card=4)
1085593 VIEW VM_NWVW_0 (cr=265362 pr=48961 pw=48961 time=9409 us cost=6297 size=208 card=4)
1085593 HASH GROUP BY (cr=265362 pr=48961 pw=48961 time=5442 us cost=6297 size=1132 card=4)
1734094 NESTED LOOPS (cr=265362 pr=22981 pw=22981 time=157012 us)
1734094 NESTED LOOPS (cr=38661 pr=22981 pw=22981 time=126203 us cost=6296 size=1132 card=4)
1734094 HASH JOIN (cr=23068 pr=22980 pw=22980 time=82095 us cost=6288 size=1020 card=4)
3019 TABLE ACCESS FULL DIM_AGENT (cr=53 pr=0 pw=0 time=10 us cost=16 size=132836 card=3019)
1730676 HASH JOIN (cr=23015 pr=22980 pw=22980 time=30583 us cost=6271 size=181671 card=861)
149 HASH JOIN (cr=38 pr=6 pw=6 time=17 us cost=15 size=15159 card=93)
17 HASH JOIN (cr=15 pr=6 pw=6 time=1 us cost=8 size=1653 card=19)
10 MERGE JOIN CARTESIAN (cr=8 pr=0 pw=0 time=1 us cost=4 size=680 card=10)
1 TABLE ACCESS FULL LOOKUP_MEASURES (cr=7 pr=0 pw=0 time=0 us cost=3 size=23 card=1)
10 BUFFER SORT (cr=1 pr=0 pw=0 time=1 us cost=1 size=450 card=10)
10 INDEX FULL SCAN S_MD_BUSINESS_GROUPS_PK (cr=1 pr=0 pw=0 time=0 us cost=1 size=450 card=10)(object id 62096)
67 TABLE ACCESS FULL DIM_FTE_GROUP (cr=7 pr=6 pw=6 time=1 us cost=3 size=1273 card=67)
98 TABLE ACCESS FULL DIM_CONTACT_TYPE (cr=23 pr=0 pw=0 time=3 us cost=7 size=7448 card=98)
2371773 TABLE ACCESS FULL S_NCC6_IAGENTBYAPPLICATIONSTAT (cr=22977 pr=22974 pw=22974 time=6331 us cost=6249 size=113640480 card=2367510)
1734094 INDEX RANGE SCAN IDX_DIM_DATE_DATE_VALUE (cr=15593 pr=1 pw=1 time=0 us cost=1 size=0 card=1)(object id 80092)
1734094 TABLE ACCESS BY INDEX ROWID DIM_DATE (cr=226701 pr=0 pw=0 time=0 us cost=2 size=28 card=1)
1170540 TABLE ACCESS FULL FACT_DAILY (cr=28206 pr=28202 pw=28202 time=10852 us cost=7674 size=19953743 card=1050197)Is there something blatantly wrong in the initial statement that is causing this issue?
Thanks,
KeithHi Guys,
Just to to give you an update I added the hint /*+ LEADING(E) NO_QUERY_TRANSFORMATION */ to the nested selects and my query now runs in 24 secs.
I don't really undertsand why this is, I just read the notes that Dom referred to and it was mentioned there so I tried it.
I really don't know why my explain plan changed so dramatically in the first place.
Cheers,
Keith
New explain plan:
INSERT STATEMENT ()
LOAD TABLE CONVENTIONAL () FACT_DAILY_TMP_LOAD
SEQUENCE () FACT_SEQ
FILTER ()
MERGE JOIN (OUTER)
VIEW ()
SORT (GROUP BY)
VIEW () VM_NWVW_0
SORT (GROUP BY)
NESTED LOOPS ()
MERGE JOIN ()
SORT (JOIN)
MERGE JOIN ()
SORT (JOIN)
NESTED LOOPS ()
NESTED LOOPS ()
NESTED LOOPS (
TABLE ACCESS DIM_CONTACT_TYPE
TABLE ACCESS S_NCC6_IAGENTBYAPPLICATIONSTAT
AND-EQUAL ()
INDEX (RANG S_NCC6_IAGENTBYAPPLICATI_FIDX2
INDEX (RANG S_NCC6_IAGENTBYAPPLICATI_IDX3
TABLE ACCESS ( DIM_DATE
INDEX (RANGE IDX_DIM_DATE_DATE_VALUE
INDEX (RANGE SC S_MD_BUSINESS_GROUPS_PK
FILTER ()
SORT (JOIN)
TABLE ACCESS (F DIM_AGENT
SORT (JOIN)
TABLE ACCESS (FULL DIM_FTE_GROUP
TABLE ACCESS (FULL) LOOKUP_MEASURES
SORT (JOIN)
TABLE ACCESS (FULL) FACT_DAILY
33 rows selected. -
Error while executing a sql query for select
HI All,
ORA-01652: unable to extend temp segment by 128 in tablespace PSTEMP i'm getting this error while i'm executing the sql query for selecting the data.I am having 44GB of temp space, while executing the below query my temp space is getting full, Expert please let us know how the issue can be resolved..
1. I dont want to increase the temp space
2. I need to tune the query, please provide your recomendations.
insert /*+APPEND*/ into CST_DSA.HIERARCHY_MISMATCHES
(REPORT_NUM,REPORT_TYPE,REPORT_DESC,GAP,CARRIED_ITEMS,CARRIED_ITEM_TYPE,NO_OF_ROUTE_OF_CARRIED_ITEM,CARRIED_ITEM_ROUTE_NO,CARRIER_ITEMS,CARRIER_ITEM_TYPE,CARRIED_ITEM_PROTECTION_TYPE,SOURCE_SYSTEM)
select
REPORTNUMBER,REPORTTYPE,REPORTDESCRIPTION ,NULL,
carried_items,carried_item_type,no_of_route_of_carried_item,carried_item_route_no,carrier_items,
carrier_item_type,carried_item_protection_type,'PACS'
from
(select distinct
c.REPORTNUMBER,c.REPORTTYPE,c.REPORTDESCRIPTION ,NULL,
a.carried_items,a.carried_item_type,a.no_of_route_of_carried_item,a.carried_item_route_no,a.carrier_items,
a.carrier_item_type,a.carried_item_protection_type,'PACS'
from CST_ASIR.HIERARCHY_asir a,CST_DSA.M_PB_CIRCUIT_ROUTING b ,CST_DSA.REPORT_METADATA c
where a.carrier_item_type in('Connection') and a.carried_item_type in('Service')
AND a.carrier_items=b.mux
and c.REPORTNUMBER=(case
when a.carrier_item_type in ('ServicePackage','Service','Connection') then 10
else 20
end)
and a.carrier_items not in (select carried_items from CST_ASIR.HIERARCHY_asir where carried_item_type in('Connection') ))A
where not exists
(select *
from CST_DSA.HIERARCHY_MISMATCHES B where
A.REPORTNUMBER=B.REPORT_NUM and
A.REPORTTYPE=B.REPORT_TYPE and
A.REPORTDESCRIPTION=B.REPORT_DESC and
A.CARRIED_ITEMS=B.CARRIED_ITEMS and
A.CARRIED_ITEM_TYPE=B.CARRIED_ITEM_TYPE and
A.NO_OF_ROUTE_OF_CARRIED_ITEM=B.NO_OF_ROUTE_OF_CARRIED_ITEM and
A.CARRIED_ITEM_ROUTE_NO=B.CARRIED_ITEM_ROUTE_NO and
A.CARRIER_ITEMS=B.CARRIER_ITEMS and
A.CARRIER_ITEM_TYPE=B.CARRIER_ITEM_TYPE and
A.CARRIED_ITEM_PROTECTION_TYPE=B.CARRIED_ITEM_PROTECTION_TYPE
AND B.SOURCE_SYSTEM='PACS'
Explain Plan
==========
Plan
INSERT STATEMENT ALL_ROWSCost: 129 Bytes: 1,103 Cardinality: 1
20 LOAD AS SELECT CST_DSA.HIERARCHY_MISMATCHES
19 PX COORDINATOR
18 PX SEND QC (RANDOM) PARALLEL_TO_SERIAL SYS.:TQ10002 :Q1002Cost: 129 Bytes: 1,103 Cardinality: 1
17 NESTED LOOPS PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 129 Bytes: 1,103 Cardinality: 1
15 HASH JOIN RIGHT ANTI NA PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 129 Bytes: 1,098 Cardinality: 1
4 PX RECEIVE PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 63 Bytes: 359,283 Cardinality: 15,621
3 PX SEND BROADCAST PARALLEL_TO_PARALLEL SYS.:TQ10001 :Q1001Cost: 63 Bytes: 359,283 Cardinality: 15,621
2 PX BLOCK ITERATOR PARALLEL_COMBINED_WITH_CHILD :Q1001Cost: 63 Bytes: 359,283 Cardinality: 15,621
1 MAT_VIEW ACCESS FULL MAT_VIEW PARALLEL_COMBINED_WITH_PARENT CST_ASIR.HIERARCHY :Q1001Cost: 63 Bytes: 359,283 Cardinality: 15,621
14 NESTED LOOPS ANTI PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 65 Bytes: 40,256,600 Cardinality: 37,448
11 HASH JOIN PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 65 Bytes: 6,366,160 Cardinality: 37,448
8 BUFFER SORT PARALLEL_COMBINED_WITH_CHILD :Q1002
7 PX RECEIVE PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 1 Bytes: 214 Cardinality: 2
6 PX SEND BROADCAST PARALLEL_FROM_SERIAL SYS.:TQ10000 Cost: 1 Bytes: 214 Cardinality: 2
5 INDEX FULL SCAN INDEX CST_DSA.IDX$$_06EF0005 Cost: 1 Bytes: 214 Cardinality: 2
10 PX BLOCK ITERATOR PARALLEL_COMBINED_WITH_CHILD :Q1002Cost: 63 Bytes: 2,359,224 Cardinality: 37,448
9 MAT_VIEW ACCESS FULL MAT_VIEW PARALLEL_COMBINED_WITH_PARENT CST_ASIR.HIERARCHY :Q1002Cost: 63 Bytes: 2,359,224 Cardinality: 37,448
13 TABLE ACCESS BY INDEX ROWID TABLE PARALLEL_COMBINED_WITH_PARENT CST_DSA.HIERARCHY_MISMATCHES :Q1002Cost: 0 Bytes: 905 Cardinality: 1
12 INDEX RANGE SCAN INDEX PARALLEL_COMBINED_WITH_PARENT SYS.HIERARCHY_MISMATCHES_IDX3 :Q1002Cost: 0 Cardinality: 1
16 INDEX RANGE SCAN INDEX PARALLEL_COMBINED_WITH_PARENT CST_DSA.IDX$$_06EF0001 :Q1002Cost: 1 Bytes: 5 Cardinality: 1 -
Help optimizing query with function
Hello experts,
I need your help optmizing this query which has a condition that matches on results of non-deterministic function. The non-deterministic functino is fedtaxpk.fedtaxpk_pkg.GETFIELDDATAGROUPSEQKEY. Values that it returns depends on contents of a table, so I can't really create a function index.
Any input will be appreciated. Thanks in advance!
Sorry I couln't format the query plan properly. Can somebody advise how? Thanks again!
Giovanni
explain plan for
WITH tg AS
(SELECT taxgroup_code FROM taxgroup
WHERE taxgroup_code = 'TAXGROUP2' --?
AND taxgroup_delete_ind = 'N' AND taxgroup_active_ind = 'A'),
le_hb AS
(SELECT tgi.taxgroup_code, tgi.legalentity_id, tgi.hyperionbase_id, ou.orgunit_code, ou.hyperionbase_code
FROM tg, taxgroupitem tgi, orgunit_vw ou
WHERE tg.taxgroup_code = tgi.taxgroup_code
AND tgi.legalentity_id = ou.legalentity_id AND tgi.hyperionbase_id = ou.hyperionbase_id
UNION
SELECT tgi.taxgroup_code, tgi.legalentity_id, ou.hyperionbase_id, ou.orgunit_code, ou.hyperionbase_code
FROM tg, taxgroupitem tgi, orgunit_vw ou
WHERE tg.taxgroup_code = tgi.taxgroup_code
AND tgi.legalentity_id = ou.legalentity_id AND tgi.hyperionbase_id IS NULL),
au AS
(SELECT appusage_code FROM appusage WHERE appusage_code = 'CONSOLIDATION'),
prs AS
(SELECT prs_key,
(CASE WHEN instr(prs_key, ':') = 0 THEN prs_key
ELSE SUBSTR(prs_key, 1, (instr(prs_key, ':')-1) ) END) first_val
FROM
(SELECT fedtaxpk.fedtaxpk_pkg.GETFIELDDATAGROUPSEQKEY(164415 --?
) prs_key
FROM dual
grs AS
(SELECT prs.*, fd.fielddata_group_sequence fd_grpseq
FROM prs, fielddata fd, le_hb
WHERE prs.first_val = fd.fielddata_value
AND le_hb.legalentity_id = fd.legalentity_id
AND le_hb.hyperionbase_id = fd.hyperionbase_id),
fdk AS
(SELECT
cd.celldef_id, fedtaxpk.fedtaxpk_pkg.GETFIELDDATAGROUPSEQKEY(fd.fielddata_group_sequence) fd_key,
fd.fielddata_value fd_val, fd.fielddata_group_sequence fd_grpseq,
ROW_NUMBER() OVER (PARTITION BY cd.celldef_id, fedtaxpk.fedtaxpk_pkg.GETFIELDDATAGROUPSEQKEY(fd.fielddata_group_sequence)
ORDER BY fd.fielddata_group_sequence) rn,
grs.prs_key
FROM le_hb, grs, fielddata fd, tablecell tc, celldef cd, tabledef td, appusage au
WHERE le_hb.legalentity_id = fd.legalentity_id AND le_hb.hyperionbase_id = fd.hyperionbase_id
AND fd.fielddata_id = tc.fielddata_id AND tc.celldef_id = cd.celldef_id
AND cd.tabledef_id = td.tabledef_id
AND grs.fd_grpseq = fd.fielddata_parent_row_sequence
and grs.prs_key = fedtaxpk.fedtaxpk_pkg.GETFIELDDATAGROUPSEQKEY(fd.fielddata_parent_row_sequence)
AND cd.celldef_key_ind = 'Y'
AND fd.fielddata_delete_ind = 'N'
AND td.tabledef_id = 2265
fda AS
(SELECT
cd.celldef_id, fedtaxpk.fedtaxpk_pkg.GETFIELDDATAGROUPSEQKEY(fd.fielddata_group_sequence) fd_key,
TO_CHAR(TO_NUMBER(SUM(fd.fielddata_value))) fd_val,
MIN(fd.fielddata_group_sequence) fd_grpseq,
grs.prs_key
FROM le_hb, grs, fielddata fd, tablecell tc, celldef cd, tabledef td
WHERE le_hb.legalentity_id = fd.legalentity_id AND le_hb.hyperionbase_id = fd.hyperionbase_id
AND fd.fielddata_id = tc.fielddata_id AND tc.celldef_id = cd.celldef_id
AND cd.tabledef_id = td.tabledef_id
AND grs.fd_grpseq = fd.fielddata_parent_row_sequence
and grs.prs_key = fedtaxpk.fedtaxpk_pkg.GETFIELDDATAGROUPSEQKEY(fd.fielddata_parent_row_sequence)
AND cd.celldef_adjustable_ind = 'Y'
AND fd.fielddata_delete_ind = 'N'
AND td.tabledef_id = 2265
GROUP BY cd.celldef_id, fedtaxpk.fedtaxpk_pkg.GETFIELDDATAGROUPSEQKEY(fd.fielddata_group_sequence),
grs.prs_key
SELECT NULL LEGALENTITY_ID, NULL hyperionbase_id, fdk.celldef_id, TO_CHAR(NULL) role_code, NULL userinfo_id, cd.celldef_adjustable_ind,
'N' celldef_editable_ind, cd.celldef_filter_code, cd.celldef_validate_rule, cd.celldef_list_code,
cd.celldef_longstring_ind, aua.appusageaccess_visible_ind celldef_viewable_ind,
cd.celldef_column_sequence, cd.celldef_column_label,
cd.celldef_column_sort_order, NULL tablecell_id, fdk.fd_grpseq tablecell_row_sequence, NULL tablecell_row_label,
'N' tablecell_delete_ind, NULL tablecell_create_by, TO_DATE(NULL) tablecell_create_dt, TO_CHAR(NULL) tablecell_update_by,
TO_DATE(NULL) tablecell_update_dt, NULL fielddata_id, TO_CHAR(NULL) datatype_code, NULL fielddata_adjref_id,
fdk.fd_grpseq fielddata_group_sequence, NULL fielddata_parent_row_sequence, NULL lookup_id,
fdk.fd_val fielddata_value, 'N' fielddata_delete_ind, TO_CHAR(NULL) fielddata_create_by,
TO_DATE(NULL) fielddata_create_dt, TO_CHAR(NULL) fielddata_update_by, TO_DATE(NULL) fielddata_update_dt,
fdk.fd_key
FROM fdk, celldef cd, appusageaccess aua, au
WHERE fdk.celldef_id = cd.celldef_id
AND cd.celldef_id = aua.celldef_id
AND aua.appusage_code = au.appusage_code
AND fdk.rn = 1
UNION ALL
SELECT NULL LEGALENTITY_ID, NULL hyperionbase_id, fda.celldef_id, TO_CHAR(NULL) role_code, NULL userinfo_id, cd.celldef_adjustable_ind,
'N' celldef_editable_ind, cd.celldef_filter_code, cd.celldef_validate_rule, cd.celldef_list_code,
cd.celldef_longstring_ind, aua.appusageaccess_visible_ind celldef_viewable_ind,
cd.celldef_column_sequence, cd.celldef_column_label,
cd.celldef_column_sort_order, NULL tablecell_id, fda.fd_grpseq tablecell_row_sequence, NULL tablecell_row_label,
'N' tablecell_delete_ind, NULL tablecell_create_by, TO_DATE(NULL) tablecell_create_dt, TO_CHAR(NULL) tablecell_update_by,
TO_DATE(NULL) tablecell_update_dt, NULL fielddata_id, TO_CHAR(NULL) datatype_code, NULL fielddata_adjref_id,
fda.fd_grpseq fielddata_group_sequence, NULL fielddata_parent_row_sequence, NULL lookup_id,
fda.fd_val fielddata_value, 'N' fielddata_delete_ind, TO_CHAR(NULL) fielddata_create_by,
TO_DATE(NULL) fielddata_create_dt, TO_CHAR(NULL) fielddata_update_by, TO_DATE(NULL) fielddata_update_dt,
fda.fd_key
FROM fda, celldef cd, appusageaccess aua, au
WHERE fda.celldef_id = cd.celldef_id
AND cd.celldef_id = aua.celldef_id
AND aua.appusage_code = au.appusage_code
ORDER BY fielddata_group_sequence, celldef_column_sequence
Query Plan:
Plan hash value: 522363234
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 2 | 6227 | 249 (2)| 00:00:03 |
| 1 | TEMP TABLE TRANSFORMATION | | | | | |
| 2 | LOAD AS SELECT | | | | | |
|* 3 | TABLE ACCESS BY INDEX ROWID | TAXGROUP | 1 | 14 | 1 (0)| 00:00:01 |
|* 4 | INDEX UNIQUE SCAN | PK_TAXGROUP | 1 | | 0 (0)| 00:00:01 |
| 5 | LOAD AS SELECT | | | | | |
| 6 | SORT UNIQUE | | 4 | 224 | 12 (59)| 00:00:01 |
| 7 | UNION-ALL | | | | | |
| 8 | TABLE ACCESS BY INDEX ROWID | ORGUNIT | 1 | 29 | 2 (0)| 00:00:01 |
| 9 | NESTED LOOPS | | 1 | 56 | 5 (0)| 00:00:01 |
| 10 | NESTED LOOPS | | 1 | 27 | 3 (0)| 00:00:01 |
| 11 | VIEW | | 1 | 10 | 2 (0)| 00:00:01 |
| 12 | TABLE ACCESS FULL | SYS_TEMP_0FD9D9B51_2EBE182 | 1 | 10 | 2 (0)| 00:00:01 |
|* 13 | TABLE ACCESS BY INDEX ROWID | TAXGROUPITEM | 1 | 17 | 1 (0)| 00:00:01 |
|* 14 | INDEX RANGE SCAN | XF1_TAXGROUPITEM_TAXGROUP | 1 | | 0 (0)| 00:00:01 |
|* 15 | INDEX RANGE SCAN | XF1_ORGUNIT_ID | 1 | | 1 (0)| 00:00:01 |
| 16 | TABLE ACCESS BY INDEX ROWID | ORGUNIT | 3 | 87 | 2 (0)| 00:00:01 |
| 17 | NESTED LOOPS | | 3 | 168 | 5 (0)| 00:00:01 |
| 18 | NESTED LOOPS | | 1 | 27 | 3 (0)| 00:00:01 |
| 19 | VIEW | | 1 | 10 | 2 (0)| 00:00:01 |
| 20 | TABLE ACCESS FULL | SYS_TEMP_0FD9D9B51_2EBE182 | 1 | 10 | 2 (0)| 00:00:01 |
|* 21 | TABLE ACCESS BY INDEX ROWID | TAXGROUPITEM | 1 | 17 | 1 (0)| 00:00:01 |
|* 22 | INDEX RANGE SCAN | XF1_TAXGROUPITEM_TAXGROUP | 1 | | 0 (0)| 00:00:01 |
|* 23 | INDEX RANGE SCAN | XF1_ORGUNIT_ID | 3 | | 1 (0)| 00:00:01 |
| 24 | LOAD AS SELECT | | | | | |
|* 25 | INDEX UNIQUE SCAN | PK_APPUSAGE | 1 | 10 | 0 (0)| 00:00:01 |
| 26 | LOAD AS SELECT | | | | | |
|* 27 | TABLE ACCESS BY INDEX ROWID | FIELDDATA | 7 | 147 | 28 (0)| 00:00:01 |
| 28 | NESTED LOOPS | | 27 | 1269 | 117 (1)| 00:00:02 |
| 29 | NESTED LOOPS | | 4 | 104 | 4 (0)| 00:00:01 |
| 30 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
| 31 | VIEW | | 4 | 104 | 2 (0)| 00:00:01 |
| 32 | TABLE ACCESS FULL | SYS_TEMP_0FD9D9B52_2EBE182 | 4 | 388 | 2 (0)| 00:00:01 |
|* 33 | INDEX RANGE SCAN | XF11_DATA_LE_HB | 117 | | 12 (0)| 00:00:01 |
| 34 | SORT ORDER BY | | 2 | 6227 | 248 (51)| 00:00:03 |
| 35 | UNION-ALL | | | | | |
| 36 | NESTED LOOPS | | 1 | 4110 | 125 (2)| 00:00:02 |
| 37 | MERGE JOIN CARTESIAN | | 1 | 4093 | 124 (2)| 00:00:02 |
| 38 | NESTED LOOPS | | 1 | 4076 | 122 (2)| 00:00:02 |
|* 39 | VIEW | | 1 | 4043 | 121 (2)| 00:00:02 |
|* 40 | WINDOW SORT PUSHED RANK | | 1 | 2099 | 121 (2)| 00:00:02 |
| 41 | MERGE JOIN CARTESIAN | | 1 | 2099 | 120 (1)| 00:00:02 |
| 42 | NESTED LOOPS | | 1 | 2099 | 119 (1)| 00:00:02 |
| 43 | NESTED LOOPS | | 1 | 2088 | 118 (1)| 00:00:02 |
|* 44 | HASH JOIN | | 1 | 2077 | 117 (1)| 00:00:02 |
|* 45 | TABLE ACCESS BY INDEX ROWID| FIELDDATA | 117 | 3744 | 28 (0)| 00:00:01 |
| 46 | NESTED LOOPS | | 466 | 28892 | 114 (0)| 00:00:02 |
| 47 | NESTED LOOPS | | 4 | 120 | 2 (0)| 00:00:01 |
|* 48 | INDEX UNIQUE SCAN | PK_TABLEDEF | 1 | 4 | 0 (0)| 00:00:01 |
| 49 | VIEW | | 4 | 104 | 2 (0)| 00:00:01 |
| 50 | TABLE ACCESS FULL | SYS_TEMP_0FD9D9B52_2EBE182 | 4 | 388 | 2 (0)| 00:00:01 |
|* 51 | INDEX RANGE SCAN | XF11_DATA_LE_HB | 117 | | 12 (0)| 00:00:01 |
| 52 | VIEW | | 27 | 54405 | 2 (0)| 00:00:01 |
| 53 | TABLE ACCESS FULL | SYS_TEMP_0FD9D9B54_2EBE182 | 27 | 1269 | 2 (0)| 00:00:01 |
| 54 | TABLE ACCESS BY INDEX ROWID | TABLECELL | 1 | 11 | 1 (0)| 00:00:01 |
|* 55 | INDEX UNIQUE SCAN | XF1_TBLCEL_DATA | 1 | | 0 (0)| 00:00:01 |
|* 56 | TABLE ACCESS BY INDEX ROWID | CELLDEF | 1 | 11 | 1 (0)| 00:00:01 |
|* 57 | INDEX UNIQUE SCAN | PK_CELLDEF | 1 | | 0 (0)| 00:00:01 |
| 58 | BUFFER SORT | | 5 | | 120 (2)| 00:00:02 |
| 59 | INDEX FULL SCAN | PK_APPUSAGE | 5 | | 1 (0)| 00:00:01 |
| 60 | TABLE ACCESS BY INDEX ROWID | CELLDEF | 1 | 33 | 1 (0)| 00:00:01 |
|* 61 | INDEX UNIQUE SCAN | PK_CELLDEF | 1 | | 0 (0)| 00:00:01 |
| 62 | BUFFER SORT | | 1 | 17 | 123 (2)| 00:00:02 |
| 63 | VIEW | | 1 | 17 | 2 (0)| 00:00:01 |
| 64 | TABLE ACCESS FULL | SYS_TEMP_0FD9D9B53_2EBE182 | 1 | 10 | 2 (0)| 00:00:01 |
| 65 | TABLE ACCESS BY INDEX ROWID | APPUSAGEACCESS | 1 | 17 | 1 (0)| 00:00:01 |
|* 66 | INDEX UNIQUE SCAN | AK_APPUSAGEACCESS | 1 | | 0 (0)| 00:00:01 |
| 67 | NESTED LOOPS | | 1 | 2117 | 124 (2)| 00:00:02 |
| 68 | MERGE JOIN CARTESIAN | | 1 | 2100 | 123 (2)| 00:00:02 |
| 69 | NESTED LOOPS | | 1 | 2083 | 121 (2)| 00:00:02 |
| 70 | VIEW | | 1 | 2050 | 120 (2)| 00:00:02 |
| 71 | HASH GROUP BY | | 1 | 2091 | 120 (2)| 00:00:02 |
| 72 | NESTED LOOPS | | 1 | 2091 | 119 (1)| 00:00:02 |
| 73 | NESTED LOOPS | | 1 | 2080 | 118 (1)| 00:00:02 |
|* 74 | HASH JOIN | | 1 | 2069 | 117 (1)| 00:00:02 |
|* 75 | TABLE ACCESS BY INDEX ROWID | FIELDDATA | 117 | 3744 | 28 (0)| 00:00:01 |
| 76 | NESTED LOOPS | | 466 | 28892 | 114 (0)| 00:00:02 |
| 77 | NESTED LOOPS | | 4 | 120 | 2 (0)| 00:00:01 |
|* 78 | INDEX UNIQUE SCAN | PK_TABLEDEF | 1 | 4 | 0 (0)| 00:00:01 |
| 79 | VIEW | | 4 | 104 | 2 (0)| 00:00:01 |
| 80 | TABLE ACCESS FULL | SYS_TEMP_0FD9D9B52_2EBE182 | 4 | 388 | 2 (0)| 00:00:01 |
|* 81 | INDEX RANGE SCAN | XF11_DATA_LE_HB | 117 | | 12 (0)| 00:00:01 |
| 82 | VIEW | | 27 | 54189 | 2 (0)| 00:00:01 |
| 83 | TABLE ACCESS FULL | SYS_TEMP_0FD9D9B54_2EBE182 | 27 | 1269 | 2 (0)| 00:00:01 |
| 84 | TABLE ACCESS BY INDEX ROWID | TABLECELL | 1 | 11 | 1 (0)| 00:00:01 |
|* 85 | INDEX UNIQUE SCAN | XF1_TBLCEL_DATA | 1 | | 0 (0)| 00:00:01 |
|* 86 | TABLE ACCESS BY INDEX ROWID | CELLDEF | 1 | 11 | 1 (0)| 00:00:01 |
|* 87 | INDEX UNIQUE SCAN | PK_CELLDEF | 1 | | 0 (0)| 00:00:01 |
| 88 | TABLE ACCESS BY INDEX ROWID | CELLDEF | 1 | 33 | 1 (0)| 00:00:01 |
|* 89 | INDEX UNIQUE SCAN | PK_CELLDEF | 1 | | 0 (0)| 00:00:01 |
| 90 | BUFFER SORT | | 1 | 17 | 122 (2)| 00:00:02 |
| 91 | VIEW | | 1 | 17 | 2 (0)| 00:00:01 |
| 92 | TABLE ACCESS FULL | SYS_TEMP_0FD9D9B53_2EBE182 | 1 | 10 | 2 (0)| 00:00:01 |
| 93 | TABLE ACCESS BY INDEX ROWID | APPUSAGEACCESS | 1 | 17 | 1 (0)| 00:00:01 |
|* 94 | INDEX UNIQUE SCAN | AK_APPUSAGEACCESS | 1 | | 0 (0)| 00:00:01 |
Predicate Information (identified by operation id):
3 - filter("TAXGROUP_DELETE_IND"='N' AND "TAXGROUP_ACTIVE_IND"='A')
4 - access("TAXGROUP_CODE"='TAXGROUP2')
13 - filter("TGI"."HYPERIONBASE_ID" IS NOT NULL)
14 - access("TG"."TAXGROUP_CODE"="TGI"."TAXGROUP_CODE")
15 - access("TGI"."LEGALENTITY_ID"="OU"."ORGUNIT_ID" AND "TGI"."HYPERIONBASE_ID"="OU"."HYPERIONBASE_ID")
21 - filter("TGI"."HYPERIONBASE_ID" IS NULL)
22 - access("TG"."TAXGROUP_CODE"="TGI"."TAXGROUP_CODE")
23 - access("TGI"."LEGALENTITY_ID"="OU"."ORGUNIT_ID")
25 - access("APPUSAGE_CODE"='CONSOLIDATION')
27 - filter("FD"."FIELDDATA_VALUE"=CASE INSTR("FEDTAXPK_PKG"."GETFIELDDATAGROUPSEQKEY"(164415),':') WHEN 0
THEN "FEDTAXPK_PKG"."GETFIELDDATAGROUPSEQKEY"(164415) ELSE
SUBSTR("FEDTAXPK_PKG"."GETFIELDDATAGROUPSEQKEY"(164415),1,INSTR("FEDTAXPK_PKG"."GETFIELDDATAGROUPSEQKEY"(16441
5),':')-1) END )
33 - access("LE_HB"."LEGALENTITY_ID"="FD"."LEGALENTITY_ID" AND
"LE_HB"."HYPERIONBASE_ID"="FD"."HYPERIONBASE_ID")
39 - filter("FDK"."RN"=1)
40 - filter(ROW_NUMBER() OVER ( PARTITION BY "CD"."CELLDEF_ID","FEDTAXPK_PKG"."GETFIELDDATAGROUPSEQKEY"("FD"
."FIELDDATA_GROUP_SEQUENCE") ORDER BY "FD"."FIELDDATA_GROUP_SEQUENCE")<=1)
44 - access("GRS"."FD_GRPSEQ"="FD"."FIELDDATA_PARENT_ROW_SEQUENCE" AND
"GRS"."PRS_KEY"="FEDTAXPK_PKG"."GETFIELDDATAGROUPSEQKEY"("FD"."FIELDDATA_PARENT_ROW_SEQUENCE"))
45 - filter("FD"."FIELDDATA_DELETE_IND"='N')
48 - access("TD"."TABLEDEF_ID"=2265)
51 - access("LE_HB"."LEGALENTITY_ID"="FD"."LEGALENTITY_ID" AND
"LE_HB"."HYPERIONBASE_ID"="FD"."HYPERIONBASE_ID")
55 - access("FD"."FIELDDATA_ID"="TC"."FIELDDATA_ID")
56 - filter("CD"."TABLEDEF_ID"=2265 AND "CD"."CELLDEF_KEY_IND"='Y')
57 - access("TC"."CELLDEF_ID"="CD"."CELLDEF_ID")
61 - access("FDK"."CELLDEF_ID"="CD"."CELLDEF_ID")
66 - access("AUA"."APPUSAGE_CODE"="AU"."APPUSAGE_CODE" AND "CD"."CELLDEF_ID"="AUA"."CELLDEF_ID")
74 - access("GRS"."FD_GRPSEQ"="FD"."FIELDDATA_PARENT_ROW_SEQUENCE" AND
"GRS"."PRS_KEY"="FEDTAXPK_PKG"."GETFIELDDATAGROUPSEQKEY"("FD"."FIELDDATA_PARENT_ROW_SEQUENCE"))
75 - filter("FD"."FIELDDATA_DELETE_IND"='N')
78 - access("TD"."TABLEDEF_ID"=2265)
81 - access("LE_HB"."LEGALENTITY_ID"="FD"."LEGALENTITY_ID" AND
"LE_HB"."HYPERIONBASE_ID"="FD"."HYPERIONBASE_ID")
85 - access("FD"."FIELDDATA_ID"="TC"."FIELDDATA_ID")
86 - filter("CD"."TABLEDEF_ID"=2265 AND "CD"."CELLDEF_ADJUSTABLE_IND"='Y')
87 - access("TC"."CELLDEF_ID"="CD"."CELLDEF_ID")
89 - access("FDA"."CELLDEF_ID"="CD"."CELLDEF_ID")
94 - access("AUA"."APPUSAGE_CODE"="AU"."APPUSAGE_CODE" AND "CD"."CELLDEF_ID"="AUA"."CELLDEF_ID")Thanks cd.
Here's the query plan:
Query Plan:
Plan hash value: 522363234
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 2 | 6227 | 249 (2)| 00:00:03 |
| 1 | TEMP TABLE TRANSFORMATION | | | | | |
| 2 | LOAD AS SELECT | | | | | |
|* 3 | TABLE ACCESS BY INDEX ROWID | TAXGROUP | 1 | 14 | 1 (0)| 00:00:01 |
|* 4 | INDEX UNIQUE SCAN | PK_TAXGROUP | 1 | | 0 (0)| 00:00:01 |
| 5 | LOAD AS SELECT | | | | | |
| 6 | SORT UNIQUE | | 4 | 224 | 12 (59)| 00:00:01 |
| 7 | UNION-ALL | | | | | |
| 8 | TABLE ACCESS BY INDEX ROWID | ORGUNIT | 1 | 29 | 2 (0)| 00:00:01 |
| 9 | NESTED LOOPS | | 1 | 56 | 5 (0)| 00:00:01 |
| 10 | NESTED LOOPS | | 1 | 27 | 3 (0)| 00:00:01 |
| 11 | VIEW | | 1 | 10 | 2 (0)| 00:00:01 |
| 12 | TABLE ACCESS FULL | SYS_TEMP_0FD9D9B51_2EBE182 | 1 | 10 | 2 (0)| 00:00:01 |
|* 13 | TABLE ACCESS BY INDEX ROWID | TAXGROUPITEM | 1 | 17 | 1 (0)| 00:00:01 |
|* 14 | INDEX RANGE SCAN | XF1_TAXGROUPITEM_TAXGROUP | 1 | | 0 (0)| 00:00:01 |
|* 15 | INDEX RANGE SCAN | XF1_ORGUNIT_ID | 1 | | 1 (0)| 00:00:01 |
| 16 | TABLE ACCESS BY INDEX ROWID | ORGUNIT | 3 | 87 | 2 (0)| 00:00:01 |
| 17 | NESTED LOOPS | | 3 | 168 | 5 (0)| 00:00:01 |
| 18 | NESTED LOOPS | | 1 | 27 | 3 (0)| 00:00:01 |
| 19 | VIEW | | 1 | 10 | 2 (0)| 00:00:01 |
| 20 | TABLE ACCESS FULL | SYS_TEMP_0FD9D9B51_2EBE182 | 1 | 10 | 2 (0)| 00:00:01 |
|* 21 | TABLE ACCESS BY INDEX ROWID | TAXGROUPITEM | 1 | 17 | 1 (0)| 00:00:01 |
|* 22 | INDEX RANGE SCAN | XF1_TAXGROUPITEM_TAXGROUP | 1 | | 0 (0)| 00:00:01 |
|* 23 | INDEX RANGE SCAN | XF1_ORGUNIT_ID | 3 | | 1 (0)| 00:00:01 |
| 24 | LOAD AS SELECT | | | | | |
|* 25 | INDEX UNIQUE SCAN | PK_APPUSAGE | 1 | 10 | 0 (0)| 00:00:01 |
| 26 | LOAD AS SELECT | | | | | |
|* 27 | TABLE ACCESS BY INDEX ROWID | FIELDDATA | 7 | 147 | 28 (0)| 00:00:01 |
| 28 | NESTED LOOPS | | 27 | 1269 | 117 (1)| 00:00:02 |
| 29 | NESTED LOOPS | | 4 | 104 | 4 (0)| 00:00:01 |
| 30 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
| 31 | VIEW | | 4 | 104 | 2 (0)| 00:00:01 |
| 32 | TABLE ACCESS FULL | SYS_TEMP_0FD9D9B52_2EBE182 | 4 | 388 | 2 (0)| 00:00:01 |
|* 33 | INDEX RANGE SCAN | XF11_DATA_LE_HB | 117 | | 12 (0)| 00:00:01 |
| 34 | SORT ORDER BY | | 2 | 6227 | 248 (51)| 00:00:03 |
| 35 | UNION-ALL | | | | | |
| 36 | NESTED LOOPS | | 1 | 4110 | 125 (2)| 00:00:02 |
| 37 | MERGE JOIN CARTESIAN | | 1 | 4093 | 124 (2)| 00:00:02 |
| 38 | NESTED LOOPS | | 1 | 4076 | 122 (2)| 00:00:02 |
|* 39 | VIEW | | 1 | 4043 | 121 (2)| 00:00:02 |
|* 40 | WINDOW SORT PUSHED RANK | | 1 | 2099 | 121 (2)| 00:00:02 |
| 41 | MERGE JOIN CARTESIAN | | 1 | 2099 | 120 (1)| 00:00:02 |
| 42 | NESTED LOOPS | | 1 | 2099 | 119 (1)| 00:00:02 |
| 43 | NESTED LOOPS | | 1 | 2088 | 118 (1)| 00:00:02 |
|* 44 | HASH JOIN | | 1 | 2077 | 117 (1)| 00:00:02 |
|* 45 | TABLE ACCESS BY INDEX ROWID| FIELDDATA | 117 | 3744 | 28 (0)| 00:00:01 |
| 46 | NESTED LOOPS | | 466 | 28892 | 114 (0)| 00:00:02 |
| 47 | NESTED LOOPS | | 4 | 120 | 2 (0)| 00:00:01 |
|* 48 | INDEX UNIQUE SCAN | PK_TABLEDEF | 1 | 4 | 0 (0)| 00:00:01 |
| 49 | VIEW | | 4 | 104 | 2 (0)| 00:00:01 |
| 50 | TABLE ACCESS FULL | SYS_TEMP_0FD9D9B52_2EBE182 | 4 | 388 | 2 (0)| 00:00:01 |
|* 51 | INDEX RANGE SCAN | XF11_DATA_LE_HB | 117 | | 12 (0)| 00:00:01 |
| 52 | VIEW | | 27 | 54405 | 2 (0)| 00:00:01 |
| 53 | TABLE ACCESS FULL | SYS_TEMP_0FD9D9B54_2EBE182 | 27 | 1269 | 2 (0)| 00:00:01 |
| 54 | TABLE ACCESS BY INDEX ROWID | TABLECELL | 1 | 11 | 1 (0)| 00:00:01 |
|* 55 | INDEX UNIQUE SCAN | XF1_TBLCEL_DATA | 1 | | 0 (0)| 00:00:01 |
|* 56 | TABLE ACCESS BY INDEX ROWID | CELLDEF | 1 | 11 | 1 (0)| 00:00:01 |
|* 57 | INDEX UNIQUE SCAN | PK_CELLDEF | 1 | | 0 (0)| 00:00:01 |
| 58 | BUFFER SORT | | 5 | | 120 (2)| 00:00:02 |
| 59 | INDEX FULL SCAN | PK_APPUSAGE | 5 | | 1 (0)| 00:00:01 |
| 60 | TABLE ACCESS BY INDEX ROWID | CELLDEF | 1 | 33 | 1 (0)| 00:00:01 |
|* 61 | INDEX UNIQUE SCAN | PK_CELLDEF | 1 | | 0 (0)| 00:00:01 |
| 62 | BUFFER SORT | | 1 | 17 | 123 (2)| 00:00:02 |
| 63 | VIEW | | 1 | 17 | 2 (0)| 00:00:01 |
| 64 | TABLE ACCESS FULL | SYS_TEMP_0FD9D9B53_2EBE182 | 1 | 10 | 2 (0)| 00:00:01 |
| 65 | TABLE ACCESS BY INDEX ROWID | APPUSAGEACCESS | 1 | 17 | 1 (0)| 00:00:01 |
|* 66 | INDEX UNIQUE SCAN | AK_APPUSAGEACCESS | 1 | | 0 (0)| 00:00:01 |
| 67 | NESTED LOOPS | | 1 | 2117 | 124 (2)| 00:00:02 |
| 68 | MERGE JOIN CARTESIAN | | 1 | 2100 | 123 (2)| 00:00:02 |
| 69 | NESTED LOOPS | | 1 | 2083 | 121 (2)| 00:00:02 |
| 70 | VIEW | | 1 | 2050 | 120 (2)| 00:00:02 |
| 71 | HASH GROUP BY | | 1 | 2091 | 120 (2)| 00:00:02 |
| 72 | NESTED LOOPS | | 1 | 2091 | 119 (1)| 00:00:02 |
| 73 | NESTED LOOPS | | 1 | 2080 | 118 (1)| 00:00:02 |
|* 74 | HASH JOIN | | 1 | 2069 | 117 (1)| 00:00:02 |
|* 75 | TABLE ACCESS BY INDEX ROWID | FIELDDATA | 117 | 3744 | 28 (0)| 00:00:01 |
| 76 | NESTED LOOPS | | 466 | 28892 | 114 (0)| 00:00:02 |
| 77 | NESTED LOOPS | | 4 | 120 | 2 (0)| 00:00:01 |
|* 78 | INDEX UNIQUE SCAN | PK_TABLEDEF | 1 | 4 | 0 (0)| 00:00:01 |
| 79 | VIEW | | 4 | 104 | 2 (0)| 00:00:01 |
| 80 | TABLE ACCESS FULL | SYS_TEMP_0FD9D9B52_2EBE182 | 4 | 388 | 2 (0)| 00:00:01 |
|* 81 | INDEX RANGE SCAN | XF11_DATA_LE_HB | 117 | | 12 (0)| 00:00:01 |
| 82 | VIEW | | 27 | 54189 | 2 (0)| 00:00:01 |
| 83 | TABLE ACCESS FULL | SYS_TEMP_0FD9D9B54_2EBE182 | 27 | 1269 | 2 (0)| 00:00:01 |
| 84 | TABLE ACCESS BY INDEX ROWID | TABLECELL | 1 | 11 | 1 (0)| 00:00:01 |
|* 85 | INDEX UNIQUE SCAN | XF1_TBLCEL_DATA | 1 | | 0 (0)| 00:00:01 |
|* 86 | TABLE ACCESS BY INDEX ROWID | CELLDEF | 1 | 11 | 1 (0)| 00:00:01 |
|* 87 | INDEX UNIQUE SCAN | PK_CELLDEF | 1 | | 0 (0)| 00:00:01 |
| 88 | TABLE ACCESS BY INDEX ROWID | CELLDEF | 1 | 33 | 1 (0)| 00:00:01 |
|* 89 | INDEX UNIQUE SCAN | PK_CELLDEF | 1 | | 0 (0)| 00:00:01 |
| 90 | BUFFER SORT | | 1 | 17 | 122 (2)| 00:00:02 |
| 91 | VIEW | | 1 | 17 | 2 (0)| 00:00:01 |
| 92 | TABLE ACCESS FULL | SYS_TEMP_0FD9D9B53_2EBE182 | 1 | 10 | 2 (0)| 00:00:01 |
| 93 | TABLE ACCESS BY INDEX ROWID | APPUSAGEACCESS | 1 | 17 | 1 (0)| 00:00:01 |
|* 94 | INDEX UNIQUE SCAN | AK_APPUSAGEACCESS | 1 | | 0 (0)| 00:00:01 |
---------------------------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id):
3 - filter("TAXGROUP_DELETE_IND"='N' AND "TAXGROUP_ACTIVE_IND"='A')
4 - access("TAXGROUP_CODE"='TAXGROUP2')
13 - filter("TGI"."HYPERIONBASE_ID" IS NOT NULL)
14 - access("TG"."TAXGROUP_CODE"="TGI"."TAXGROUP_CODE")
15 - access("TGI"."LEGALENTITY_ID"="OU"."ORGUNIT_ID" AND "TGI"."HYPERIONBASE_ID"="OU"."HYPERIONBASE_ID")
21 - filter("TGI"."HYPERIONBASE_ID" IS NULL)
22 - access("TG"."TAXGROUP_CODE"="TGI"."TAXGROUP_CODE")
23 - access("TGI"."LEGALENTITY_ID"="OU"."ORGUNIT_ID")
25 - access("APPUSAGE_CODE"='CONSOLIDATION')
27 - filter("FD"."FIELDDATA_VALUE"=CASE INSTR("FEDTAXPK_PKG"."GETFIELDDATAGROUPSEQKEY"(164415),':') WHEN 0
THEN "FEDTAXPK_PKG"."GETFIELDDATAGROUPSEQKEY"(164415) ELSE
SUBSTR("FEDTAXPK_PKG"."GETFIELDDATAGROUPSEQKEY"(164415),1,INSTR("FEDTAXPK_PKG"."GETFIELDDATAGROUPSEQKEY"(16441
5),':')-1) END )
33 - access("LE_HB"."LEGALENTITY_ID"="FD"."LEGALENTITY_ID" AND
"LE_HB"."HYPERIONBASE_ID"="FD"."HYPERIONBASE_ID")
39 - filter("FDK"."RN"=1)
40 - filter(ROW_NUMBER() OVER ( PARTITION BY "CD"."CELLDEF_ID","FEDTAXPK_PKG"."GETFIELDDATAGROUPSEQKEY"("FD"
."FIELDDATA_GROUP_SEQUENCE") ORDER BY "FD"."FIELDDATA_GROUP_SEQUENCE")<=1)
44 - access("GRS"."FD_GRPSEQ"="FD"."FIELDDATA_PARENT_ROW_SEQUENCE" AND
"GRS"."PRS_KEY"="FEDTAXPK_PKG"."GETFIELDDATAGROUPSEQKEY"("FD"."FIELDDATA_PARENT_ROW_SEQUENCE"))
45 - filter("FD"."FIELDDATA_DELETE_IND"='N')
48 - access("TD"."TABLEDEF_ID"=2265)
51 - access("LE_HB"."LEGALENTITY_ID"="FD"."LEGALENTITY_ID" AND
"LE_HB"."HYPERIONBASE_ID"="FD"."HYPERIONBASE_ID")
55 - access("FD"."FIELDDATA_ID"="TC"."FIELDDATA_ID")
56 - filter("CD"."TABLEDEF_ID"=2265 AND "CD"."CELLDEF_KEY_IND"='Y')
57 - access("TC"."CELLDEF_ID"="CD"."CELLDEF_ID")
61 - access("FDK"."CELLDEF_ID"="CD"."CELLDEF_ID")
66 - access("AUA"."APPUSAGE_CODE"="AU"."APPUSAGE_CODE" AND "CD"."CELLDEF_ID"="AUA"."CELLDEF_ID")
74 - access("GRS"."FD_GRPSEQ"="FD"."FIELDDATA_PARENT_ROW_SEQUENCE" AND
"GRS"."PRS_KEY"="FEDTAXPK_PKG"."GETFIELDDATAGROUPSEQKEY"("FD"."FIELDDATA_PARENT_ROW_SEQUENCE"))
75 - filter("FD"."FIELDDATA_DELETE_IND"='N')
78 - access("TD"."TABLEDEF_ID"=2265)
81 - access("LE_HB"."LEGALENTITY_ID"="FD"."LEGALENTITY_ID" AND
"LE_HB"."HYPERIONBASE_ID"="FD"."HYPERIONBASE_ID")
85 - access("FD"."FIELDDATA_ID"="TC"."FIELDDATA_ID")
86 - filter("CD"."TABLEDEF_ID"=2265 AND "CD"."CELLDEF_ADJUSTABLE_IND"='Y')
87 - access("TC"."CELLDEF_ID"="CD"."CELLDEF_ID")
89 - access("FDA"."CELLDEF_ID"="CD"."CELLDEF_ID")
94 - access("AUA"."APPUSAGE_CODE"="AU"."APPUSAGE_CODE" AND "CD"."CELLDEF_ID"="AUA"."CELLDEF_ID") -
Help to read TKPROF file in correct way
Hi,
I need help to understand what is going wrong.
I have one query executed with different bind variables values.
Case 1: Execution time is about 7.5 hours when :v6=:v3=:v4 (these are date bind variables values)
Case 2: Execution time is about 2 minuteswhen :v6 differs from :v3 and :v4, but :v3=:v4 (these are date bind variables values)
You can see TKPROF files below
Case1
SELECT EK.SECIK AS EK_SECIK,S.SECIK AS S_SECIK,EK.EQKEY1 AS EK_EQKEY1,EK.FROMDATE AS EK_FROMDATE,S.SECSHORT AS S_SECSHORT,S.SECNAME AS S_SECNAME,C.CDY AS C_CDY,C.CSTD AS C_CSTD,P.PAR AS P_PAR,P.PARIK AS P_PARIK,PH.ACCOUNTING_FRAMEWORK AS PH_ACC_FW,NVL(PH.BAL_NOMINAL_NUMBER,0) AS PH_BAL_NOM_NUM,PH.FROM_DATE AS PH_FROM_DATE,PH.POR AS PH_POR,PH.SEC_SHORT_NAME AS PH_SEC_SHORT_NAME,PH.TO_DATE AS PH_TO_DATE,PH.CUSTODY_SHORT_NAME AS PH_CUST_SHORT_NAME,T.TC_CSTD AS T_CSTD,SUM(T.TH_BAL_NOM_NUM) AS T_BAL_NOM_NUM,T.TH_SEC_SHORT_NAME AS T_SEC_SHORT_NAME,PH.POR_REF AS PH_POR_REF,PORT.PORIK AS PORT_PORIK,PORT.PORGRPIK AS PORT_PORGRPIK,PG.PORGRPIK AS PG_PORGRPIK,PG.PORGRPTYPEIK AS PG_PORGRPTYPEIK,PGT.PORGRPTYPEIK AS PGT_PORGRPTYPEIK FROM SCDAT.CUSTODIES C,SCDAT.EQUITYKEYS EK,SCDAT.PARTNERS P,SCDAT.PORTGROUPS PG,SCDAT.PORTGROUPTYPES PGT,(
SELECT HOLKEYS.PORIK As POR_REF,
ACCDEF.ACC As ACCOUNTING_FRAMEWORK,
NVL(HOLDINGS.BALNOMVAL,0) As BAL_NOMINAL_NUMBER,
CUSTODIES.CDY As CUSTODY_SHORT_NAME,
DECODE(HOLDINGS.FINBOOKED,0,'No',1,'Yes',' ') As FINALLY_BOOKED,
HOLDINGS.FROMDATE As FROM_DATE,
PORTFOLIOS.POR As POR,
SECURITIES.SECSHORT As SEC_SHORT_NAME,
HOLDINGS.TODATE As TO_DATE,
HOLDINGS.FINBOOKED As X_FINALLY_BOOKED
FROM HOLDINGS,HOLKEYS,ACCDEF,CUSTODIES,PORTFOLIOS,SECURITIES WHERE HOLDINGS.HOLKEYIK = HOLKEYS.HOLKEYIK AND HOLDINGS.ACCIK = ACCDEF.ACCIK AND HOLKEYS.CDYIK = CUSTODIES.CDYIK AND HOLKEYS.PORIK = PORTFOLIOS.PORIK AND HOLKEYS.SECIK = SECURITIES.SECIK) PH,SCDAT.PORTFOLIOS PORT,SCDAT.SECURITIES S,(SELECT TC.CDY AS TC_CDY,TC.CSTD AS TC_CSTD,SUM(NVL(TH.BAL_NOMINAL_NUMBER,0)) AS TH_BAL_NOM_NUM,TH.FROM_DATE AS TH_FROM_DATE,TH.TO_DATE AS TH_TO_DATE,TH.SEC_SHORT_NAME AS TH_SEC_SHORT_NAME,TH.CUSTODY_SHORT_NAME AS TH_CUST_SHORT_NAME,TP.PAR AS TP_PAR,TP.PARIK AS TP_PARIK FROM SCDAT.CUSTODIES TC,(
SELECT ACCDEF.ACC As ACCOUNTING_FRAMEWORK,
NVL(HOLDINGS.BALNOMVAL,0) As BAL_NOMINAL_NUMBER,
CUSTODIES.CDY As CUSTODY_SHORT_NAME,
DECODE(HOLDINGS.FINBOOKED,0,'No',1,'Yes',' ') As FINALLY_BOOKED,
HOLDINGS.FROMDATE As FROM_DATE,
SECURITIES.SECSHORT As SEC_SHORT_NAME,
HOLDINGS.TODATE As TO_DATE,
HOLDINGS.FINBOOKED As X_FINALLY_BOOKED
FROM HOLDINGS,HOLKEYS,ACCDEF,CUSTODIES,SECURITIES WHERE HOLDINGS.ACCIK = ACCDEF.ACCIK AND HOLDINGS.HOLKEYIK = HOLKEYS.HOLKEYIK AND HOLKEYS.CDYIK = CUSTODIES.CDYIK AND HOLKEYS.SECIK = SECURITIES.SECIK) TH,SCDAT.PARTNERS TP WHERE TH.CUSTODY_SHORT_NAME = TC.CDY AND TC.CSTD = TP.PARIK AND TH.ACCOUNTING_FRAMEWORK = :v1 AND NOT (NVL(TH.BAL_NOMINAL_NUMBER,0) = :v2 ) AND TH.FROM_DATE <= :v3 AND TH.TO_DATE >= :v4 AND TH.FINALLY_BOOKED = :v5 GROUP BY TC.CDY,TC.CSTD,TH.FROM_DATE,TH.TO_DATE,TH.SEC_SHORT_NAME,TH.CUSTODY_SHORT_NAME,TP.PAR,TP.PARIK) T WHERE EK.SECIK = S.SECIK AND PORT.PORGRPIK = PG.PORGRPIK AND PG.PORGRPTYPEIK = PGT.PORGRPTYPEIK AND S.SECSHORT = PH.SEC_SHORT_NAME AND PH.SEC_SHORT_NAME = T.TH_SEC_SHORT_NAME AND PH.POR_REF = PORT.PORIK AND PH.CUSTODY_SHORT_NAME = C.CDY AND EK.FROMDATE = :v6 AND NOT (EK.EQKEY1 = :v7 ) AND P.PAR = :v8 AND NOT (PGT.PORGRPTYPE IN (:v9 ,:v10 )) AND PH.ACCOUNTING_FRAMEWORK = :v11 AND NOT (NVL(PH.BAL_NOMINAL_NUMBER,0) = :v12 ) AND PH.FINALLY_BOOKED = :v13 AND EK.FROMDATE >= PH.FROM_DATE AND EK.FROMDATE <= PH.TO_DATE AND C.CSTD = P.PARIK AND C.CSTD = T.TC_CSTD GROUP BY EK.SECIK,S.SECIK,EK.EQKEY1,EK.FROMDATE,S.SECSHORT,S.SECNAME,C.CDY,C.CSTD,P.PAR,P.PARIK,PH.ACCOUNTING_FRAMEWORK,NVL(PH.BAL_NOMINAL_NUMBER,0),PH.FROM_DATE,PH.POR,PH.SEC_SHORT_NAME,PH.TO_DATE,PH.CUSTODY_SHORT_NAME,T.TC_CSTD,T.TH_SEC_SHORT_NAME,PH.POR_REF,PORT.PORIK,PORT.PORGRPIK,PG.PORGRPIK,PG.PORGRPTYPEIK,PGT.PORGRPTYPEIK
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 1 2.31 2.31 0 0 0 0
Fetch 1 27398.48 27473.33 11124 250891597 0 0
total 3 27400.79 27475.65 11124 250891597 0 0
Misses in library cache during parse: 1
Misses in library cache during execute: 1
Optimizer mode: ALL_ROWS
Parsing user id: 171 (SCDAT)
Number of plan statistics captured: 1
Rows (1st) Rows (avg) Rows (max) Row Source Operation
0 0 0 HASH GROUP BY (cr=0 pr=0 pw=0 time=55 us cost=1976 size=251 card=1)
123 123 123 NESTED LOOPS (cr=250890161 pr=11086 pw=0 time=35602462 us)
38622 38622 38622 NESTED LOOPS (cr=250858945 pr=8664 pw=0 time=4221237335 us cost=1975 size=251 card=1)
3945 3945 3945 NESTED LOOPS (cr=250850948 pr=7835 pw=0 time=1967017649 us cost=1937 size=199 card=1)
3833 3833 3833 HASH JOIN (cr=42840 pr=6196 pw=0 time=4910380 us cost=1559 size=1956 card=12)
8667 8667 8667 NESTED LOOPS (cr=42834 pr=6192 pw=0 time=4254867 us)
8667 8667 8667 NESTED LOOPS (cr=34167 pr=6192 pw=0 time=4232686 us cost=1556 size=2156 card=14)
8667 8667 8667 NESTED LOOPS (cr=26520 pr=6192 pw=0 time=4206426 us cost=1542 size=2058 card=14)
8667 8667 8667 NESTED LOOPS (cr=16041 pr=6192 pw=0 time=4161555 us cost=1528 size=1806 card=14)
18060 18060 18060 NESTED LOOPS (cr=16037 pr=6191 pw=0 time=4575478 us cost=1527 size=36504 card=312)
177 177 177 NESTED LOOPS (cr=6846 pr=6091 pw=0 time=3909468 us cost=1350 size=1500 card=15)
177 177 177 NESTED LOOPS (cr=6490 pr=6091 pw=0 time=3907157 us cost=1320 size=1245 card=15)
177 177 177 NESTED LOOPS (cr=6133 pr=6091 pw=0 time=3905733 us cost=1305 size=585 card=15)
1 1 1 NESTED LOOPS (cr=5 pr=2 pw=0 time=17096 us cost=2 size=23 card=1)
1 1 1 TABLE ACCESS BY INDEX ROWID ACCDEF (cr=2 pr=2 pw=0 time=17079 us cost=1 size=12 card=1)
1 1 1 INDEX UNIQUE SCAN ACCDEF_IX1 (cr=1 pr=1 pw=0 time=6675 us cost=0 size=0 card=1)(object id 103661)
1 1 1 TABLE ACCESS BY INDEX ROWID PARTNERS (cr=3 pr=0 pw=0 time=14 us cost=1 size=11 card=1)
1 1 1 INDEX UNIQUE SCAN PARTNERS_IX1 (cr=2 pr=0 pw=0 time=9 us cost=0 size=0 card=1)(object id 91563)
177 177 177 TABLE ACCESS FULL EQUITYKEYS (cr=6128 pr=6089 pw=0 time=3888376 us cost=1303 size=240 card=15)
177 177 177 TABLE ACCESS BY INDEX ROWID SECURITIES (cr=357 pr=0 pw=0 time=1127 us cost=1 size=44 card=1)
177 177 177 INDEX UNIQUE SCAN P_SECURITIES (cr=180 pr=0 pw=0 time=563 us cost=0 size=0 card=1)(object id 93819)
177 177 177 TABLE ACCESS BY INDEX ROWID SECURITIES (cr=356 pr=0 pw=0 time=2027 us cost=2 size=17 card=1)
177 177 177 INDEX RANGE SCAN SECURITIES_IX2 (cr=180 pr=0 pw=0 time=1166 us cost=1 size=0 card=1)(object id 93809)
18060 18060 18060 TABLE ACCESS BY INDEX ROWID HOLKEYS (cr=9191 pr=100 pw=0 time=716100 us cost=13 size=340 card=20)
18060 18060 18060 INDEX RANGE SCAN I_HOLKEYS_SECPOR (cr=421 pr=100 pw=0 time=689634 us cost=2 size=0 card=23)(object id 98864)
8667 8667 8667 TABLE ACCESS BY INDEX ROWID CUSTODIES (cr=4 pr=1 pw=0 time=131716 us cost=1 size=12 card=1)
36120 36120 36120 INDEX RANGE SCAN R_CUSTODIES_CSTD (cr=3 pr=1 pw=0 time=53659 us cost=0 size=0 card=3)(object id 101437)
8667 8667 8667 TABLE ACCESS BY INDEX ROWID PORTFOLIOS (cr=10479 pr=0 pw=0 time=36782 us cost=1 size=18 card=1)
8667 8667 8667 INDEX UNIQUE SCAN P_PORTFOLIOS (cr=1812 pr=0 pw=0 time=14722 us cost=0 size=0 card=1)(object id 91399)
8667 8667 8667 INDEX UNIQUE SCAN P_PORTGROUPS (cr=7647 pr=0 pw=0 time=20935 us cost=0 size=0 card=1)(object id 95885)
8667 8667 8667 TABLE ACCESS BY INDEX ROWID PORTGROUPS (cr=8667 pr=0 pw=0 time=15075 us cost=1 size=7 card=1)
3 3 3 VIEW index$_join$_005 (cr=6 pr=4 pw=0 time=17822 us cost=3 size=45 card=5)
3 3 3 HASH JOIN (cr=6 pr=4 pw=0 time=17816 us)
5 5 5 INDEX FAST FULL SCAN PORTGROUPTYPES_IX1 (cr=3 pr=2 pw=0 time=10731 us cost=1 size=45 card=5)(object id 95857)
3 3 3 INDEX FAST FULL SCAN P_PORTGROUPTYPES (cr=3 pr=2 pw=0 time=6182 us cost=1 size=45 card=5)(object id 95858)
3945 3945 3945 VIEW PUSHED PREDICATE (cr=250808108 pr=1639 pw=0 time=1615801762 us cost=32 size=36 card=1)
3945 3945 3945 SORT GROUP BY (cr=250808108 pr=1639 pw=0 time=1615792437 us cost=32 size=86 card=1)
8052 8052 8052 NESTED LOOPS (cr=250808108 pr=1639 pw=0 time=3245096176 us cost=31 size=86 card=1)
6879822 6879822 6879822 NESTED LOOPS (cr=14142041 pr=0 pw=0 time=93287445 us cost=18 size=53 card=1)
7665 7665 7665 MERGE JOIN CARTESIAN (cr=3980 pr=0 pw=0 time=214689 us cost=5 size=40 card=1)
7665 7665 7665 NESTED LOOPS (cr=3846 pr=0 pw=0 time=75334 us cost=3 size=23 card=1)
3833 3833 3833 TABLE ACCESS BY INDEX ROWID PARTNERS (cr=3842 pr=0 pw=0 time=38447 us cost=2 size=11 card=1)
3833 3833 3833 INDEX UNIQUE SCAN P_PARTNERS (cr=9 pr=0 pw=0 time=13355 us cost=1 size=0 card=1)(object id 91507)
7665 7665 7665 TABLE ACCESS BY INDEX ROWID CUSTODIES (cr=4 pr=0 pw=0 time=34661 us cost=1 size=12 card=1)
7665 7665 7665 INDEX RANGE SCAN R_CUSTODIES_CSTD (cr=3 pr=0 pw=0 time=23093 us cost=0 size=0 card=1)(object id 101437)
7665 7665 7665 BUFFER SORT (cr=134 pr=0 pw=0 time=128191 us cost=4 size=17 card=1)
7665 7665 7665 TABLE ACCESS BY INDEX ROWID SECURITIES (cr=134 pr=0 pw=0 time=44771 us cost=2 size=17 card=1)
7665 7665 7665 INDEX RANGE SCAN SECURITIES_IX2 (cr=109 pr=0 pw=0 time=32098 us cost=1 size=0 card=1)(object id 93809)
6879822 6879822 6879822 TABLE ACCESS BY INDEX ROWID HOLKEYS (cr=14138061 pr=0 pw=0 time=99798296 us cost=13 size=13 card=1)
27845684 27845684 27845684 INDEX RANGE SCAN I_HOLKEYS_SECPOR (cr=92999 pr=0 pw=0 time=21161648 us cost=2 size=0 card=23)(object id 98864)
8052 8052 8052 VIEW PUSHED PREDICATE VW_GBC_22 (cr=236667503 pr=1677 pw=0 time=1559090990 us cost=13 size=33 card=1)
8052 8052 8052 SORT GROUP BY (cr=236667503 pr=1677 pw=0 time=1552356479 us cost=13 size=64 card=1)
8052 8052 8052 HASH JOIN (cr=236667503 pr=1677 pw=0 time=1518269306 us cost=12 size=64 card=1)
6879822 6879822 6879822 TABLE ACCESS BY INDEX ROWID ACCDEF (cr=13759644 pr=0 pw=0 time=58085525 us cost=1 size=12 card=1)
6879822 6879822 6879822 INDEX UNIQUE SCAN ACCDEF_IX1 (cr=6879822 pr=0 pw=0 time=37383556 us cost=0 size=0 card=1)(object id 103661)
16077 16077 16077 TABLE ACCESS BY INDEX ROWID HOLDINGS (cr=222907859 pr=1677 pw=0 time=1109306657 us cost=10 size=52 card=1)
13212301 13212301 13212301 INDEX SKIP SCAN P_HOLDINGS (cr=211196455 pr=431 pw=0 time=734718877 us cost=6 size=0 card=3)(object id 2173392)
38622 38622 38622 INDEX RANGE SCAN R_HOLDINGS_HOLKEYIK (cr=7997 pr=829 pw=0 time=9653175 us cost=2 size=0 card=42)(object id 2173885)
123 123 123 TABLE ACCESS BY INDEX ROWID HOLDINGS (cr=31216 pr=2422 pw=0 time=40223697 us cost=38 size=52 card=1)
Case2
SELECT EK.SECIK AS EK_SECIK,S.SECIK AS S_SECIK,EK.EQKEY1 AS EK_EQKEY1,EK.FROMDATE AS EK_FROMDATE,S.SECSHORT AS S_SECSHORT,S.SECNAME AS S_SECNAME,C.CDY AS C_CDY,C.CSTD AS C_CSTD,P.PAR AS P_PAR,P.PARIK AS P_PARIK,PH.ACCOUNTING_FRAMEWORK AS PH_ACC_FW,NVL(PH.BAL_NOMINAL_NUMBER,0) AS PH_BAL_NOM_NUM,PH.FROM_DATE AS PH_FROM_DATE,PH.POR AS PH_POR,PH.SEC_SHORT_NAME AS PH_SEC_SHORT_NAME,PH.TO_DATE AS PH_TO_DATE,PH.CUSTODY_SHORT_NAME AS PH_CUST_SHORT_NAME,T.TC_CSTD AS T_CSTD,SUM(T.TH_BAL_NOM_NUM) AS T_BAL_NOM_NUM,T.TH_SEC_SHORT_NAME AS T_SEC_SHORT_NAME,PH.POR_REF AS PH_POR_REF,PORT.PORIK AS PORT_PORIK,PORT.PORGRPIK AS PORT_PORGRPIK,PG.PORGRPIK AS PG_PORGRPIK,PG.PORGRPTYPEIK AS PG_PORGRPTYPEIK,PGT.PORGRPTYPEIK AS PGT_PORGRPTYPEIK FROM SCDAT.CUSTODIES C,SCDAT.EQUITYKEYS EK,SCDAT.PARTNERS P,SCDAT.PORTGROUPS PG,SCDAT.PORTGROUPTYPES PGT,(
SELECT HOLKEYS.PORIK As POR_REF,
ACCDEF.ACC As ACCOUNTING_FRAMEWORK,
NVL(HOLDINGS.BALNOMVAL,0) As BAL_NOMINAL_NUMBER,
CUSTODIES.CDY As CUSTODY_SHORT_NAME,
DECODE(HOLDINGS.FINBOOKED,0,'No',1,'Yes',' ') As FINALLY_BOOKED,
HOLDINGS.FROMDATE As FROM_DATE,
PORTFOLIOS.POR As POR,
SECURITIES.SECSHORT As SEC_SHORT_NAME,
HOLDINGS.TODATE As TO_DATE,
HOLDINGS.FINBOOKED As X_FINALLY_BOOKED
FROM HOLDINGS,HOLKEYS,ACCDEF,CUSTODIES,PORTFOLIOS,SECURITIES WHERE HOLDINGS.HOLKEYIK = HOLKEYS.HOLKEYIK AND HOLDINGS.ACCIK = ACCDEF.ACCIK AND HOLKEYS.CDYIK = CUSTODIES.CDYIK AND HOLKEYS.PORIK = PORTFOLIOS.PORIK AND HOLKEYS.SECIK = SECURITIES.SECIK) PH,SCDAT.PORTFOLIOS PORT,SCDAT.SECURITIES S,(SELECT TC.CDY AS TC_CDY,TC.CSTD AS TC_CSTD,SUM(NVL(TH.BAL_NOMINAL_NUMBER,0)) AS TH_BAL_NOM_NUM,TH.FROM_DATE AS TH_FROM_DATE,TH.TO_DATE AS TH_TO_DATE,TH.SEC_SHORT_NAME AS TH_SEC_SHORT_NAME,TH.CUSTODY_SHORT_NAME AS TH_CUST_SHORT_NAME,TP.PAR AS TP_PAR,TP.PARIK AS TP_PARIK FROM SCDAT.CUSTODIES TC,(
SELECT ACCDEF.ACC As ACCOUNTING_FRAMEWORK,
NVL(HOLDINGS.BALNOMVAL,0) As BAL_NOMINAL_NUMBER,
CUSTODIES.CDY As CUSTODY_SHORT_NAME,
DECODE(HOLDINGS.FINBOOKED,0,'No',1,'Yes',' ') As FINALLY_BOOKED,
HOLDINGS.FROMDATE As FROM_DATE,
SECURITIES.SECSHORT As SEC_SHORT_NAME,
HOLDINGS.TODATE As TO_DATE,
HOLDINGS.FINBOOKED As X_FINALLY_BOOKED
FROM HOLDINGS,HOLKEYS,ACCDEF,CUSTODIES,SECURITIES WHERE HOLDINGS.ACCIK = ACCDEF.ACCIK AND HOLDINGS.HOLKEYIK = HOLKEYS.HOLKEYIK AND HOLKEYS.CDYIK = CUSTODIES.CDYIK AND HOLKEYS.SECIK = SECURITIES.SECIK) TH,SCDAT.PARTNERS TP WHERE TH.CUSTODY_SHORT_NAME = TC.CDY AND TC.CSTD = TP.PARIK AND TH.ACCOUNTING_FRAMEWORK = :v1 AND NOT (NVL(TH.BAL_NOMINAL_NUMBER,0) = :v2 ) AND TH.FROM_DATE <= :v3 AND TH.TO_DATE >= :v4 AND TH.FINALLY_BOOKED = :v5 GROUP BY TC.CDY,TC.CSTD,TH.FROM_DATE,TH.TO_DATE,TH.SEC_SHORT_NAME,TH.CUSTODY_SHORT_NAME,TP.PAR,TP.PARIK) T WHERE EK.SECIK = S.SECIK AND PORT.PORGRPIK = PG.PORGRPIK AND PG.PORGRPTYPEIK = PGT.PORGRPTYPEIK AND S.SECSHORT = PH.SEC_SHORT_NAME AND PH.SEC_SHORT_NAME = T.TH_SEC_SHORT_NAME AND PH.POR_REF = PORT.PORIK AND PH.CUSTODY_SHORT_NAME = C.CDY AND EK.FROMDATE = :v6 AND NOT (EK.EQKEY1 = :v7 ) AND P.PAR = :v8 AND NOT (PGT.PORGRPTYPE IN (:v9 ,:v10 )) AND PH.ACCOUNTING_FRAMEWORK = :v11 AND NOT (NVL(PH.BAL_NOMINAL_NUMBER,0) = :v12 ) AND PH.FINALLY_BOOKED = :v13 AND EK.FROMDATE >= PH.FROM_DATE AND EK.FROMDATE <= PH.TO_DATE AND C.CSTD = P.PARIK AND C.CSTD = T.TC_CSTD GROUP BY EK.SECIK,S.SECIK,EK.EQKEY1,EK.FROMDATE,S.SECSHORT,S.SECNAME,C.CDY,C.CSTD,P.PAR,P.PARIK,PH.ACCOUNTING_FRAMEWORK,NVL(PH.BAL_NOMINAL_NUMBER,0),PH.FROM_DATE,PH.POR,PH.SEC_SHORT_NAME,PH.TO_DATE,PH.CUSTODY_SHORT_NAME,T.TC_CSTD,T.TH_SEC_SHORT_NAME,PH.POR_REF,PORT.PORIK,PORT.PORGRPIK,PG.PORGRPIK,PG.PORGRPTYPEIK,PGT.PORGRPTYPEIK
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 1 2.34 2.34 0 0 0 0
Fetch 2 39.31 131.53 17885 17489238 0 2039
total 4 41.66 133.88 17885 17489238 0 2039
Misses in library cache during parse: 1
Misses in library cache during execute: 1
Optimizer mode: ALL_ROWS
Parsing user id: 171 (SCDAT)
Number of plan statistics captured: 1
Rows (1st) Rows (avg) Rows (max) Row Source Operation
2039 2039 2039 HASH GROUP BY (cr=17489238 pr=17885 pw=0 time=131529969 us cost=2062 size=251 card=1)
166827 166827 166827 NESTED LOOPS (cr=17489238 pr=17885 pw=0 time=157379020 us cost=2061 size=251 card=1)
2043 2043 2043 NESTED LOOPS (cr=143626 pr=5419 pw=0 time=19393083 us cost=2003 size=215 card=1)
11156 11156 11156 HASH JOIN (cr=53391 pr=2600 pw=0 time=4865614 us cost=1559 size=1956 card=12)
11156 11156 11156 NESTED LOOPS (cr=53385 pr=2600 pw=0 time=4585085 us)
11156 11156 11156 NESTED LOOPS (cr=42229 pr=2600 pw=0 time=4563404 us cost=1555 size=2156 card=14)
11156 11156 11156 NESTED LOOPS (cr=32467 pr=2600 pw=0 time=4543117 us cost=1541 size=2058 card=14)
11156 11156 11156 NESTED LOOPS (cr=19234 pr=2600 pw=0 time=4506220 us cost=1527 size=1806 card=14)
24211 24211 24211 NESTED LOOPS (cr=19230 pr=2600 pw=0 time=4417211 us cost=1526 size=36504 card=312)
193 193 193 NESTED LOOPS (cr=6926 pr=2556 pw=0 time=4371848 us cost=1350 size=1500 card=15)
193 193 193 NESTED LOOPS (cr=6537 pr=2556 pw=0 time=4370289 us cost=1320 size=1245 card=15)
193 193 193 NESTED LOOPS (cr=6148 pr=2556 pw=0 time=4369122 us cost=1305 size=585 card=15)
1 1 1 NESTED LOOPS (cr=5 pr=1 pw=0 time=6568 us cost=2 size=23 card=1)
1 1 1 TABLE ACCESS BY INDEX ROWID ACCDEF (cr=2 pr=1 pw=0 time=6556 us cost=1 size=12 card=1)
1 1 1 INDEX UNIQUE SCAN ACCDEF_IX1 (cr=1 pr=1 pw=0 time=6551 us cost=0 size=0 card=1)(object id 103661)
1 1 1 TABLE ACCESS BY INDEX ROWID PARTNERS (cr=3 pr=0 pw=0 time=10 us cost=1 size=11 card=1)
1 1 1 INDEX UNIQUE SCAN PARTNERS_IX1 (cr=2 pr=0 pw=0 time=6 us cost=0 size=0 card=1)(object id 91563)
193 193 193 TABLE ACCESS FULL EQUITYKEYS (cr=6143 pr=2555 pw=0 time=4362460 us cost=1303 size=240 card=15)
193 193 193 TABLE ACCESS BY INDEX ROWID SECURITIES (cr=389 pr=0 pw=0 time=1000 us cost=1 size=44 card=1)
193 193 193 INDEX UNIQUE SCAN P_SECURITIES (cr=196 pr=0 pw=0 time=498 us cost=0 size=0 card=1)(object id 93819)
193 193 193 TABLE ACCESS BY INDEX ROWID SECURITIES (cr=389 pr=0 pw=0 time=1486 us cost=2 size=17 card=1)
193 193 193 INDEX RANGE SCAN SECURITIES_IX2 (cr=197 pr=0 pw=0 time=899 us cost=1 size=0 card=1)(object id 93809)
24211 24211 24211 TABLE ACCESS BY INDEX ROWID HOLKEYS (cr=12304 pr=44 pw=0 time=38145 us cost=13 size=340 card=20)
24211 24211 24211 INDEX RANGE SCAN I_HOLKEYS_SECPOR (cr=475 pr=44 pw=0 time=13253 us cost=2 size=0 card=23)(object id 98864)
11156 11156 11156 TABLE ACCESS BY INDEX ROWID CUSTODIES (cr=4 pr=0 pw=0 time=93056 us cost=1 size=12 card=1)
48422 48422 48422 INDEX RANGE SCAN R_CUSTODIES_CSTD (cr=3 pr=0 pw=0 time=35831 us cost=0 size=0 card=3)(object id 101437)
11156 11156 11156 TABLE ACCESS BY INDEX ROWID PORTFOLIOS (cr=13233 pr=0 pw=0 time=31391 us cost=1 size=18 card=1)
11156 11156 11156 INDEX UNIQUE SCAN P_PORTFOLIOS (cr=2077 pr=0 pw=0 time=12494 us cost=0 size=0 card=1)(object id 91399)
11156 11156 11156 INDEX UNIQUE SCAN P_PORTGROUPS (cr=9762 pr=0 pw=0 time=15817 us cost=0 size=0 card=1)(object id 95885)
11156 11156 11156 TABLE ACCESS BY INDEX ROWID PORTGROUPS (cr=11156 pr=0 pw=0 time=15160 us cost=1 size=7 card=1)
5 5 5 VIEW index$_join$_005 (cr=6 pr=0 pw=0 time=656 us cost=3 size=45 card=5)
5 5 5 HASH JOIN (cr=6 pr=0 pw=0 time=648 us)
5 5 5 INDEX FAST FULL SCAN PORTGROUPTYPES_IX1 (cr=3 pr=0 pw=0 time=26 us cost=1 size=45 card=5)(object id 95857)
7 7 7 INDEX FAST FULL SCAN P_PORTGROUPTYPES (cr=3 pr=0 pw=0 time=15 us cost=1 size=45 card=5)(object id 95858)
2043 2043 2043 TABLE ACCESS BY INDEX ROWID HOLDINGS (cr=90235 pr=2819 pw=0 time=19041512 us cost=38 size=52 card=1)
92362 92362 92362 INDEX RANGE SCAN R_HOLDINGS_HOLKEYIK (cr=22368 pr=436 pw=0 time=2663719 us cost=2 size=0 card=42)(object id 2173885)
166827 166827 166827 VIEW PUSHED PREDICATE (cr=17345612 pr=12466 pw=0 time=107441684 us cost=58 size=36 card=1)
166827 166827 166827 SORT GROUP BY (cr=17345612 pr=12466 pw=0 time=107408172 us cost=58 size=117 card=1)
1911217 1911217 1911217 NESTED LOOPS (cr=17345612 pr=12466 pw=0 time=1296620056 us)
10575944 10575944 10575944 NESTED LOOPS (cr=9800492 pr=1140 pw=0 time=22104782 us cost=57 size=117 card=1)
2292837 2292837 2292837 NESTED LOOPS (cr=5195338 pr=0 pw=0 time=9516177 us cost=19 size=65 card=1)
4086 4086 4086 MERGE JOIN CARTESIAN (cr=4885 pr=0 pw=0 time=93451 us cost=6 size=52 card=1)
4086 4086 4086 NESTED LOOPS (cr=4103 pr=0 pw=0 time=29074 us cost=4 size=35 card=1)
2043 2043 2043 NESTED LOOPS (cr=4099 pr=0 pw=0 time=20146 us cost=3 size=23 card=1)
2043 2043 2043 TABLE ACCESS BY INDEX ROWID PARTNERS (cr=2052 pr=0 pw=0 time=10371 us cost=2 size=11 card=1)
2043 2043 2043 INDEX UNIQUE SCAN P_PARTNERS (cr=9 pr=0 pw=0 time=4583 us cost=1 size=0 card=1)(object id 91507)
2043 2043 2043 TABLE ACCESS BY INDEX ROWID ACCDEF (cr=2047 pr=0 pw=0 time=7133 us cost=1 size=12 card=1)
2043 2043 2043 INDEX UNIQUE SCAN ACCDEF_IX1 (cr=4 pr=0 pw=0 time=3680 us cost=0 size=0 card=1)(object id 103661)
4086 4086 4086 TABLE ACCESS BY INDEX ROWID CUSTODIES (cr=4 pr=0 pw=0 time=10204 us cost=1 size=12 card=1)
4086 4086 4086 INDEX RANGE SCAN R_CUSTODIES_CSTD (cr=3 pr=0 pw=0 time=6320 us cost=0 size=0 card=1)(object id 101437)
4086 4086 4086 BUFFER SORT (cr=782 pr=0 pw=0 time=60735 us cost=5 size=17 card=1)
4086 4086 4086 TABLE ACCESS BY INDEX ROWID SECURITIES (cr=782 pr=0 pw=0 time=27892 us cost=2 size=17 card=1)
4086 4086 4086 INDEX RANGE SCAN SECURITIES_IX2 (cr=590 pr=0 pw=0 time=13746 us cost=1 size=0 card=1)(object id 93809)
2292837 2292837 2292837 TABLE ACCESS BY INDEX ROWID HOLKEYS (cr=5190453 pr=0 pw=0 time=12329304 us cost=13 size=13 card=1)
10116948 10116948 10116948 INDEX RANGE SCAN I_HOLKEYS_SECPOR (cr=41387 pr=0 pw=0 time=2136775 us cost=2 size=0 card=23)(object id 98864)
10575944 10575944 10575944 INDEX RANGE SCAN R_HOLDINGS_HOLKEYIK (cr=4605154 pr=1140 pw=0 time=14152971 us cost=2 size=0 card=42)(object id 2173885)
1911217 1911217 1911217 TABLE ACCESS BY INDEX ROWID HOLDINGS (cr=7545120 pr=11326 pw=0 time=78999228 us cost=38 size=52 card=1)
Rows Execution Plan
0 SELECT STATEMENT MODE: ALL_ROWS
2039 HASH (GROUP BY)
166827 NESTED LOOPS
2043 NESTED LOOPS
11156 HASH JOIN
11156 VIEW OF 'index$_join$_005' (VIEW)
11156 HASH JOIN
11156 INDEX MODE: ANALYZED (FAST FULL SCAN) OF
'PORTGROUPTYPES_IX1' (INDEX (UNIQUE))
11156 INDEX MODE: ANALYZED (FAST FULL SCAN) OF
'P_PORTGROUPTYPES' (INDEX (UNIQUE))
24211 HASH JOIN
193 VIEW OF 'index$_join$_004' (VIEW)
193 HASH JOIN
193 INDEX MODE: ANALYZED (FAST FULL SCAN) OF
'P_PORTGROUPS' (INDEX (UNIQUE))
1 INDEX MODE: ANALYZED (FAST FULL SCAN) OF
'R_PORTGROUPS_PORGRPTYPEIK' (INDEX)
1 HASH JOIN
1 HASH JOIN
1 TABLE ACCESS MODE: ANALYZED (FULL) OF
'EQUITYKEYS' (TABLE)
1 HASH JOIN
193 TABLE ACCESS MODE: ANALYZED (FULL) OF
'SECURITIES' (TABLE)
193 HASH JOIN
193 VIEW OF 'index$_join$_012' (VIEW)
193 HASH JOIN
193 INDEX MODE: ANALYZED (FAST FULL SCAN) OF
'P_SECURITIES' (INDEX (UNIQUE))
24211 INDEX MODE: ANALYZED (FAST FULL SCAN) OF
'SECURITIES_IX2' (INDEX (UNIQUE))
24211 NESTED LOOPS
11156 NESTED LOOPS
48422 NESTED LOOPS
11156 NESTED LOOPS
11156 TABLE ACCESS MODE: ANALYZED (BY
INDEX ROWID) OF 'ACCDEF' (TABLE)
11156 INDEX MODE: ANALYZED (UNIQUE SCAN)
OF 'ACCDEF_IX1' (INDEX (UNIQUE))
11156 TABLE ACCESS MODE: ANALYZED (BY
INDEX ROWID) OF 'PARTNERS' (TABLE)
5 INDEX MODE: ANALYZED (UNIQUE SCAN)
OF 'PARTNERS_IX1' (INDEX (UNIQUE))
5 TABLE ACCESS MODE: ANALYZED (BY INDEX
ROWID) OF 'CUSTODIES' (TABLE)
5 INDEX MODE: ANALYZED (RANGE SCAN) OF
'R_CUSTODIES_CSTD' (INDEX)
7 INDEX MODE: ANALYZED (RANGE SCAN) OF
'R_HOLKEYS_CDYIK' (INDEX)
2043 TABLE ACCESS MODE: ANALYZED (BY INDEX
ROWID) OF 'HOLKEYS' (TABLE)
92362 VIEW OF 'index$_join$_013' (VIEW)
166827 HASH JOIN
166827 INDEX MODE: ANALYZED (FAST FULL SCAN) OF
'P_PORTFOLIOS' (INDEX (UNIQUE))
1911217 INDEX MODE: ANALYZED (FAST FULL SCAN) OF
'PORTFOLIOS_IX1' (INDEX (UNIQUE))
10575944 TABLE ACCESS MODE: ANALYZED (BY INDEX ROWID) OF
'HOLDINGS' (TABLE)
2292837 INDEX MODE: ANALYZED (RANGE SCAN) OF
'R_HOLDINGS_HOLKEYIK' (INDEX)
4086 VIEW PUSHED PREDICATE
4086 SORT (GROUP BY)
2043 NESTED LOOPS
2043 NESTED LOOPS
2043 MERGE JOIN (CARTESIAN)
2043 NESTED LOOPS
2043 TABLE ACCESS MODE: ANALYZED (BY INDEX ROWID)
OF 'PARTNERS' (TABLE)
4086 INDEX MODE: ANALYZED (UNIQUE SCAN) OF
'P_PARTNERS' (INDEX (UNIQUE))
4086 TABLE ACCESS MODE: ANALYZED (BY INDEX ROWID)
OF 'CUSTODIES' (TABLE)
4086 INDEX MODE: ANALYZED (RANGE SCAN) OF
'R_CUSTODIES_CSTD' (INDEX)
4086 BUFFER (SORT)
4086 TABLE ACCESS MODE: ANALYZED (BY INDEX ROWID)
OF 'SECURITIES' (TABLE)
2292837 INDEX MODE: ANALYZED (RANGE SCAN) OF
'SECURITIES_IX2' (INDEX (UNIQUE))
10116948 TABLE ACCESS MODE: ANALYZED (BY INDEX ROWID) OF
'HOLKEYS' (TABLE)
10575944 INDEX MODE: ANALYZED (RANGE SCAN) OF
'I_HOLKEYS_SECPOR' (INDEX)
1911217 VIEW PUSHED PREDICATE OF 'VW_GBC_22' (VIEW)
0 SORT (GROUP BY)
0 NESTED LOOPS
0 TABLE ACCESS MODE: ANALYZED (BY INDEX ROWID)
OF 'ACCDEF' (TABLE)
0 INDEX MODE: ANALYZED (UNIQUE SCAN) OF
'ACCDEF_IX1' (INDEX (UNIQUE))
0 TABLE ACCESS MODE: ANALYZED (BY INDEX ROWID)
OF 'HOLDINGS' (TABLE)
0 INDEX MODE: ANALYZED (RANGE SCAN) OF
'R_HOLDINGS_HOLKEYIK' (INDEX)
Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
SQL*Net message to client 2 0.00 0.00
db file sequential read 16176 0.17 90.98
db file scattered read 590 0.01 1.94
Disk file operations I/O 15 0.00 0.00
SQL*Net message from client 2 0.04 0.04
SQL*Net more data to client 33 0.00 0.00the plans show that your first query has to do much more work than the second query (250M vs. 17M consistent gets). The queries use different plans and the second plan seems to be the better choice - since the first query does not return any rows. The plans also tell us where the time is spent - and there are some nested loops with extreme execution counts and a lot of expansive index access operations (especially the skip scan on P_HOLDINGS), but I would prefer to use a a plan with rowsource statistics to find the errors in the optimizers cardinality estimations.
-
Sql Query Tuning. Please help me to tune this query
Hi All ,
I have this problematic Sql . It is taking huge time to execute. It contains a view CIDV, which i think is the bottleneck.
I have pasted the query below. I will be pasting TKPROF and explain plan for the same. Please advice me to tune this query.
SELECT GCC.SEGMENT1 || '.' || GCC.SEGMENT2 || '.' || GCC.SEGMENT3 || '.' ||
GCC.SEGMENT4 || '.' || GCC.SEGMENT5 || '.' || GCC.SEGMENT6 || '.' ||
GCC.SEGMENT7 || '.' || GCC.SEGMENT8 || '.' || GCC.SEGMENT9 OFFSET_ACCOUNT,
OOD.ORGANIZATION_CODE,
CIDV.SUBINVENTORY_CODE OFFSET_SUBINV,
MIL.SEGMENT1 || '.' || MIL.SEGMENT2 || '.' || MIL.SEGMENT3 || '.' ||
MIL.SEGMENT4 || '.' || MIL.SEGMENT5 OFFSET_LOCATOR,
CIDV.LAST_UPDATE_LOGIN
FROM APPS.CST_INV_DISTRIBUTION_V CIDV,
APPS.GL_CODE_COMBINATIONS GCC,
APPS.MTL_ITEM_LOCATIONS MIL,
APPS.ORG_ORGANIZATION_DEFINITIONS OOD
WHERE CIDV.TRANSACTION_ID = :B2
AND CIDV.PRIMARY_QUANTITY = (-1) * :B1
AND CIDV.REFERENCE_ACCOUNT = GCC.CODE_COMBINATION_ID
AND OOD.ORGANIZATION_ID = CIDV.ORGANIZATION_ID
AND MIL.INVENTORY_LOCATION_ID = CIDV.LOCATOR_ID
AND GCC.ACCOUNT_TYPE = 'A'****************
TKPROF
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 68337 10.32 10.32 0 0 0 0
Fetch 68337 229.75 936.36 58819 6743323 1121 68232
total 136675 240.07 946.69 58819 6743323 1121 68232
Misses in library cache during parse: 1
Misses in library cache during execute: 1
Optimizer mode: ALL_ROWS
Parsing user id: 203 (recursive depth: 1)
Number of plan statistics captured: 1
Rows (1st) Rows (avg) Rows (max) Row Source Operation
1 1 1 MERGE JOIN CARTESIAN (cr=102 pr=15 pw=0 time=193608 us cost=56 size=219 card=1)
1 1 1 NESTED LOOPS (cr=100 pr=15 pw=0 time=193483 us cost=53 size=219 card=1)
1 1 1 NESTED LOOPS (cr=99 pr=15 pw=0 time=193407 us cost=52 size=215 card=1)
1 1 1 NESTED LOOPS (cr=96 pr=15 pw=0 time=193378 us cost=51 size=190 card=1)
1 1 1 NESTED LOOPS (cr=93 pr=15 pw=0 time=193284 us cost=49 size=162 card=1)
1 1 1 NESTED LOOPS (cr=89 pr=14 pw=0 time=185515 us cost=46 size=138 card=1)
1 1 1 NESTED LOOPS (cr=85 pr=12 pw=0 time=157975 us cost=44 size=81 card=1)
1 1 1 NESTED LOOPS (cr=83 pr=12 pw=0 time=157925 us cost=43 size=73 card=1)
1 1 1 NESTED LOOPS (cr=81 pr=12 pw=0 time=157641 us cost=43 size=132 card=2)
1 1 1 VIEW CST_INV_DISTRIBUTION_V (cr=78 pr=12 pw=0 time=156386 us cost=41 size=118 card=2)
1 1 1 UNION-ALL (cr=78 pr=12 pw=0 time=156378 us)
0 0 0 NESTED LOOPS OUTER (cr=44 pr=9 pw=0 time=124997 us cost=20 size=291 card=1)
0 0 0 NESTED LOOPS (cr=44 pr=9 pw=0 time=124993 us cost=18 size=255 card=1)
0 0 0 NESTED LOOPS (cr=44 pr=9 pw=0 time=124990 us cost=18 size=251 card=1)
33 33 33 MERGE JOIN CARTESIAN (cr=25 pr=6 pw=0 time=98544 us cost=14 size=192 card=1)
1 1 1 NESTED LOOPS OUTER (cr=22 pr=5 pw=0 time=85754 us cost=12 size=156 card=1)
1 1 1 NESTED LOOPS (cr=19 pr=4 pw=0 time=79830 us cost=10 size=120 card=1)
1 1 1 NESTED LOOPS OUTER (cr=17 pr=4 pw=0 time=79813 us cost=9 size=113 card=1)
1 1 1 NESTED LOOPS (cr=15 pr=4 pw=0 time=79752 us cost=8 size=106 card=1)
1 1 1 NESTED LOOPS (cr=11 pr=2 pw=0 time=43120 us cost=6 size=93 card=1)
1 1 1 NESTED LOOPS (cr=7 pr=2 pw=0 time=43087 us cost=4 size=83 card=1)
1 1 1 NESTED LOOPS (cr=6 pr=2 pw=0 time=43072 us cost=4 size=80 card=1)
1 1 1 TABLE ACCESS BY INDEX ROWID MTL_MATERIAL_TRANSACTIONS (cr=5 pr=2 pw=0 time=43042 us cost=4 size=76 card=1)
1 1 1 INDEX UNIQUE SCAN MTL_MATERIAL_TRANSACTIONS_U1 (cr=4 pr=2 pw=0 time=43011 us cost=3 size=0 card=1)(object id 12484094)
1 1 1 INDEX UNIQUE SCAN MTL_TRANSACTION_TYPES_U1 (cr=1 pr=0 pw=0 time=20 us cost=0 size=764 card=191)(object id 9983)
1 1 1 INDEX UNIQUE SCAN MTL_TXN_SOURCE_TYPES_U1 (cr=1 pr=0 pw=0 time=7 us cost=0 size=54 card=18)(object id 9987)
1 1 1 INDEX UNIQUE SCAN MTL_SYSTEM_ITEMS_B_U1 (cr=4 pr=0 pw=0 time=27 us cost=2 size=736324450 card=73632445)(object id 12484155)
1 1 1 INDEX UNIQUE SCAN MTL_SYSTEM_ITEMS_TL_U1 (cr=4 pr=2 pw=0 time=36626 us cost=2 size=957481070 card=73652390)(object id 12484137)
1 1 1 TABLE ACCESS BY INDEX ROWID MTL_PARAMETERS (cr=2 pr=0 pw=0 time=42 us cost=1 size=3290 card=470)
1 1 1 INDEX UNIQUE SCAN MTL_PARAMETERS_U1 (cr=1 pr=0 pw=0 time=28 us cost=0 size=0 card=1)(object id 9847)
1 1 1 TABLE ACCESS BY INDEX ROWID MTL_PARAMETERS (cr=2 pr=0 pw=0 time=12 us cost=1 size=3290 card=470)
1 1 1 INDEX UNIQUE SCAN MTL_PARAMETERS_U1 (cr=1 pr=0 pw=0 time=7 us cost=0 size=0 card=1)(object id 9847)
0 0 0 INDEX RANGE SCAN FND_LOOKUP_VALUES_U1 (cr=3 pr=1 pw=0 time=5915 us cost=2 size=36 card=1)(object id 705891)
33 33 33 BUFFER SORT (cr=3 pr=1 pw=0 time=12713 us cost=12 size=36 card=1)
33 33 33 INDEX RANGE SCAN FND_LOOKUP_VALUES_U1 (cr=3 pr=1 pw=0 time=12582 us cost=2 size=36 card=1)(object id 705891)
0 0 0 TABLE ACCESS BY INDEX ROWID MTL_TRANSACTION_ACCOUNTS (cr=19 pr=3 pw=0 time=26591 us cost=4 size=59 card=1)
66 66 66 INDEX RANGE SCAN MTL_TRANSACTION_ACCOUNTS_N1 (cr=18 pr=2 pw=0 time=13607 us cost=3 size=0 card=3)(object id 12484127)
0 0 0 INDEX UNIQUE SCAN MTL_PARAMETERS_U1 (cr=0 pr=0 pw=0 time=0 us cost=0 size=4 card=1)(object id 9847)
0 0 0 INDEX RANGE SCAN FND_LOOKUP_VALUES_U1 (cr=0 pr=0 pw=0 time=0 us cost=2 size=36 card=1)(object id 705891)
1 1 1 NESTED LOOPS (cr=34 pr=3 pw=0 time=31269 us cost=21 size=288 card=1)
1 1 1 NESTED LOOPS (cr=30 pr=3 pw=0 time=31161 us cost=19 size=275 card=1)
1 1 1 NESTED LOOPS (cr=26 pr=3 pw=0 time=31105 us cost=17 size=265 card=1)
1 1 1 NESTED LOOPS (cr=25 pr=3 pw=0 time=31082 us cost=17 size=261 card=1)
1 1 1 NESTED LOOPS OUTER (cr=23 pr=3 pw=0 time=31027 us cost=16 size=254 card=1)
1 1 1 NESTED LOOPS (cr=21 pr=3 pw=0 time=30980 us cost=15 size=247 card=1)
1 1 1 NESTED LOOPS (cr=20 pr=3 pw=0 time=30957 us cost=15 size=243 card=1)
1 1 1 NESTED LOOPS OUTER (cr=19 pr=3 pw=0 time=30926 us cost=15 size=240 card=1)
1 1 1 NESTED LOOPS (cr=16 pr=3 pw=0 time=30389 us cost=13 size=204 card=1)
1 1 1 NESTED LOOPS (cr=11 pr=0 pw=0 time=665 us cost=9 size=131 card=1)
1 1 1 NESTED LOOPS OUTER (cr=8 pr=0 pw=0 time=306 us cost=7 size=95 card=1)
1 1 1 TABLE ACCESS BY INDEX ROWID MTL_TRANSACTION_ACCOUNTS (cr=5 pr=0 pw=0 time=37 us cost=5 size=59 card=1)
2 2 2 INDEX RANGE SCAN MTL_TRANSACTION_ACCOUNTS_N1 (cr=4 pr=0 pw=0 time=17 us cost=4 size=0 card=3)(object id 12484127)
1 1 1 INDEX RANGE SCAN FND_LOOKUP_VALUES_U1 (cr=3 pr=0 pw=0 time=216 us cost=2 size=36 card=1)(object id 705891)
1 1 1 INDEX RANGE SCAN FND_LOOKUP_VALUES_U1 (cr=3 pr=0 pw=0 time=352 us cost=2 size=36 card=1)(object id 705891)
1 1 1 TABLE ACCESS BY INDEX ROWID MTL_MATERIAL_TRANSACTIONS (cr=5 pr=3 pw=0 time=29716 us cost=4 size=73 card=1)
1 1 1 INDEX RANGE SCAN MTL_MATERIAL_TRANSACTIONS_N23 (cr=4 pr=3 pw=0 time=29588 us cost=3 size=0 card=1)(object id 12484133)
0 0 0 INDEX RANGE SCAN FND_LOOKUP_VALUES_U1 (cr=3 pr=0 pw=0 time=520 us cost=2 size=36 card=1)(object id 705891)
1 1 1 INDEX UNIQUE SCAN MTL_TXN_SOURCE_TYPES_U1 (cr=1 pr=0 pw=0 time=22 us cost=0 size=3 card=1)(object id 9987)
1 1 1 INDEX UNIQUE SCAN MTL_TRANSACTION_TYPES_U1 (cr=1 pr=0 pw=0 time=16 us cost=0 size=4 card=1)(object id 9983)
1 1 1 TABLE ACCESS BY INDEX ROWID MTL_PARAMETERS (cr=2 pr=0 pw=0 time=34 us cost=1 size=7 card=1)
1 1 1 INDEX UNIQUE SCAN MTL_PARAMETERS_U1 (cr=1 pr=0 pw=0 time=19 us cost=0 size=0 card=1)(object id 9847)
1 1 1 TABLE ACCESS BY INDEX ROWID MTL_PARAMETERS (cr=2 pr=0 pw=0 time=44 us cost=1 size=7 card=1)
1 1 1 INDEX UNIQUE SCAN MTL_PARAMETERS_U1 (cr=1 pr=0 pw=0 time=14 us cost=0 size=0 card=1)(object id 9847)
1 1 1 INDEX UNIQUE SCAN MTL_PARAMETERS_U1 (cr=1 pr=0 pw=0 time=13 us cost=0 size=4 card=1)(object id 9847)
1 1 1 INDEX UNIQUE SCAN MTL_SYSTEM_ITEMS_B_U1 (cr=4 pr=0 pw=0 time=49 us cost=2 size=10 card=1)(object id 12484155)
1 1 1 INDEX UNIQUE SCAN MTL_SYSTEM_ITEMS_TL_U1 (cr=4 pr=0 pw=0 time=96 us cost=2 size=13 card=1)(object id 12484137)
1 1 1 TABLE ACCESS BY INDEX ROWID HR_ALL_ORGANIZATION_UNITS (cr=3 pr=0 pw=0 time=1246 us cost=1 size=7 card=1)
1 1 1 INDEX UNIQUE SCAN HR_ORGANIZATION_UNITS_PK (cr=2 pr=0 pw=0 time=24 us cost=0 size=0 card=1)(object id 250158)
1 1 1 INDEX UNIQUE SCAN HR_ALL_ORGANIZATION_UNTS_TL_PK (cr=2 pr=0 pw=0 time=275 us cost=0 size=7 card=1)(object id 689101)
1 1 1 TABLE ACCESS BY INDEX ROWID MTL_PARAMETERS (cr=2 pr=0 pw=0 time=38 us cost=1 size=8 card=1)
1 1 1 INDEX UNIQUE SCAN MTL_PARAMETERS_U1 (cr=1 pr=0 pw=0 time=15 us cost=0 size=0 card=1)(object id 9847)
1 1 1 TABLE ACCESS BY INDEX ROWID GL_CODE_COMBINATIONS (cr=4 pr=2 pw=0 time=27531 us cost=2 size=57 card=1)
1 1 1 INDEX UNIQUE SCAN GL_CODE_COMBINATIONS_U1 (cr=3 pr=1 pw=0 time=19925 us cost=1 size=0 card=1)(object id 51426)
1 1 1 TABLE ACCESS BY INDEX ROWID MTL_ITEM_LOCATIONS (cr=4 pr=1 pw=0 time=7758 us cost=3 size=24 card=1)
1 1 1 INDEX RANGE SCAN MTL_ITEM_LOCATIONS_U1 (cr=3 pr=0 pw=0 time=51 us cost=2 size=0 card=1)(object id 9761)
1 1 1 TABLE ACCESS BY INDEX ROWID HR_ORGANIZATION_INFORMATION (cr=3 pr=0 pw=0 time=85 us cost=2 size=28 card=1)
1 1 1 INDEX RANGE SCAN HR_ORGANIZATION_INFORMATIO_FK2 (cr=2 pr=0 pw=0 time=29 us cost=1 size=0 card=2)(object id 5379798)
1 1 1 TABLE ACCESS BY INDEX ROWID HR_ORGANIZATION_INFORMATION (cr=3 pr=0 pw=0 time=25 us cost=1 size=25 card=1)
1 1 1 INDEX RANGE SCAN HR_ORGANIZATION_INFORMATIO_FK2 (cr=2 pr=0 pw=0 time=11 us cost=1 size=0 card=1)(object id 5379798)
1 1 1 INDEX FULL SCAN GL_SETS_OF_BOOKS_U2 (cr=1 pr=0 pw=0 time=69 us cost=1 size=4 card=1)(object id 1380842)
1 1 1 BUFFER SORT (cr=2 pr=0 pw=0 time=110 us cost=55 size=0 card=1)
1 1 1 TABLE ACCESS FULL FND_PRODUCT_GROUPS (cr=2 pr=0 pw=0 time=59 us cost=3 size=0 card=1)
Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
library cache lock 2 0.00 0.00
library cache pin 2 0.00 0.00
Disk file operations I/O 249 0.00 0.00
db file sequential read 58819 2.61 714.28
gc cr grant 2-way 5198 0.16 4.52
gc current grant busy 1 0.00 0.00
KJC: Wait for msg sends to complete 517 0.00 0.05
library cache: mutex X 433 0.01 0.04
gc cr grant congested 28 0.08 0.18
latch: ges resource hash list 5 0.00 0.00
gc current block 2-way 513 0.11 0.61
gc current block congested 2 0.00 0.00
latch: gc element 16 0.00 0.01
latch: cache buffers chains 4 0.00 0.00
latch: object queue header operation 3 0.00 0.00
********************************************************************************Explain Plan for the query
SELECT STATEMENT, GOAL = ALL_ROWS Cost=56 Cardinality=1 Bytes=219
MERGE JOIN CARTESIAN Cost=56 Cardinality=1 Bytes=219
NESTED LOOPS Cost=53 Cardinality=1 Bytes=219
NESTED LOOPS Cost=52 Cardinality=1 Bytes=215
NESTED LOOPS Cost=51 Cardinality=1 Bytes=190
NESTED LOOPS Cost=49 Cardinality=1 Bytes=162
NESTED LOOPS Cost=46 Cardinality=1 Bytes=138
NESTED LOOPS Cost=44 Cardinality=1 Bytes=81
NESTED LOOPS Cost=43 Cardinality=1 Bytes=73
NESTED LOOPS Cost=43 Cardinality=2 Bytes=132
VIEW Object owner=APPS Object name=CST_INV_DISTRIBUTION_V Cost=41 Cardinality=2 Bytes=118
UNION-ALL
NESTED LOOPS OUTER Cost=20 Cardinality=1 Bytes=291
NESTED LOOPS Cost=18 Cardinality=1 Bytes=255
NESTED LOOPS Cost=18 Cardinality=1 Bytes=251
MERGE JOIN CARTESIAN Cost=14 Cardinality=1 Bytes=192
NESTED LOOPS OUTER Cost=12 Cardinality=1 Bytes=156
NESTED LOOPS Cost=10 Cardinality=1 Bytes=120
NESTED LOOPS OUTER Cost=9 Cardinality=1 Bytes=113
NESTED LOOPS Cost=8 Cardinality=1 Bytes=106
NESTED LOOPS Cost=6 Cardinality=1 Bytes=93
NESTED LOOPS Cost=4 Cardinality=1 Bytes=83
NESTED LOOPS Cost=4 Cardinality=1 Bytes=80
TABLE ACCESS BY INDEX ROWID Object owner=INV Object name=MTL_MATERIAL_TRANSACTIONS Cost=4 Cardinality=1 Bytes=76
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_MATERIAL_TRANSACTIONS_U1 Cost=3 Cardinality=1
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_TRANSACTION_TYPES_U1 Cost=0 Cardinality=191 Bytes=764
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_TXN_SOURCE_TYPES_U1 Cost=0 Cardinality=18 Bytes=54
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_SYSTEM_ITEMS_B_U1 Cost=2 Cardinality=73632445 Bytes=736324450
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_SYSTEM_ITEMS_TL_U1 Cost=2 Cardinality=73652390 Bytes=957481070
TABLE ACCESS BY INDEX ROWID Object owner=INV Object name=MTL_PARAMETERS Cost=1 Cardinality=470 Bytes=3290
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_PARAMETERS_U1 Cost=0 Cardinality=1
TABLE ACCESS BY INDEX ROWID Object owner=INV Object name=MTL_PARAMETERS Cost=1 Cardinality=470 Bytes=3290
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_PARAMETERS_U1 Cost=0 Cardinality=1
INDEX RANGE SCAN Object owner=APPLSYS Object name=FND_LOOKUP_VALUES_U1 Cost=2 Cardinality=1 Bytes=36
BUFFER SORT Cost=12 Cardinality=1 Bytes=36
INDEX RANGE SCAN Object owner=APPLSYS Object name=FND_LOOKUP_VALUES_U1 Cost=2 Cardinality=1 Bytes=36
TABLE ACCESS BY INDEX ROWID Object owner=INV Object name=MTL_TRANSACTION_ACCOUNTS Cost=4 Cardinality=1 Bytes=59
INDEX RANGE SCAN Object owner=INV Object name=MTL_TRANSACTION_ACCOUNTS_N1 Cost=3 Cardinality=3
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_PARAMETERS_U1 Cost=0 Cardinality=1 Bytes=4
INDEX RANGE SCAN Object owner=APPLSYS Object name=FND_LOOKUP_VALUES_U1 Cost=2 Cardinality=1 Bytes=36
NESTED LOOPS Cost=21 Cardinality=1 Bytes=288
NESTED LOOPS Cost=19 Cardinality=1 Bytes=275
NESTED LOOPS Cost=17 Cardinality=1 Bytes=265
NESTED LOOPS Cost=17 Cardinality=1 Bytes=261
NESTED LOOPS OUTER Cost=16 Cardinality=1 Bytes=254
NESTED LOOPS Cost=15 Cardinality=1 Bytes=247
NESTED LOOPS Cost=15 Cardinality=1 Bytes=243
NESTED LOOPS OUTER Cost=15 Cardinality=1 Bytes=240
NESTED LOOPS Cost=13 Cardinality=1 Bytes=204
NESTED LOOPS Cost=9 Cardinality=1 Bytes=131
NESTED LOOPS OUTER Cost=7 Cardinality=1 Bytes=95
TABLE ACCESS BY INDEX ROWID Object owner=INV Object name=MTL_TRANSACTION_ACCOUNTS Cost=5 Cardinality=1 Bytes=59
INDEX RANGE SCAN Object owner=INV Object name=MTL_TRANSACTION_ACCOUNTS_N1 Cost=4 Cardinality=3
INDEX RANGE SCAN Object owner=APPLSYS Object name=FND_LOOKUP_VALUES_U1 Cost=2 Cardinality=1 Bytes=36
INDEX RANGE SCAN Object owner=APPLSYS Object name=FND_LOOKUP_VALUES_U1 Cost=2 Cardinality=1 Bytes=36
TABLE ACCESS BY INDEX ROWID Object owner=INV Object name=MTL_MATERIAL_TRANSACTIONS Cost=4 Cardinality=1 Bytes=73
INDEX RANGE SCAN Object owner=INV Object name=MTL_MATERIAL_TRANSACTIONS_N23 Cost=3 Cardinality=1
INDEX RANGE SCAN Object owner=APPLSYS Object name=FND_LOOKUP_VALUES_U1 Cost=2 Cardinality=1 Bytes=36
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_TXN_SOURCE_TYPES_U1 Cost=0 Cardinality=1 Bytes=3
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_TRANSACTION_TYPES_U1 Cost=0 Cardinality=1 Bytes=4
TABLE ACCESS BY INDEX ROWID Object owner=INV Object name=MTL_PARAMETERS Cost=1 Cardinality=1 Bytes=7
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_PARAMETERS_U1 Cost=0 Cardinality=1
TABLE ACCESS BY INDEX ROWID Object owner=INV Object name=MTL_PARAMETERS Cost=1 Cardinality=1 Bytes=7
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_PARAMETERS_U1 Cost=0 Cardinality=1
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_PARAMETERS_U1 Cost=0 Cardinality=1 Bytes=4
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_SYSTEM_ITEMS_B_U1 Cost=2 Cardinality=1 Bytes=10
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_SYSTEM_ITEMS_TL_U1 Cost=2 Cardinality=1 Bytes=13
TABLE ACCESS BY INDEX ROWID Object owner=HR Object name=HR_ALL_ORGANIZATION_UNITS Cost=1 Cardinality=1 Bytes=7
INDEX UNIQUE SCAN Object owner=HR Object name=HR_ORGANIZATION_UNITS_PK Cost=0 Cardinality=1
INDEX UNIQUE SCAN Object owner=HR Object name=HR_ALL_ORGANIZATION_UNTS_TL_PK Cost=0 Cardinality=1 Bytes=7
TABLE ACCESS BY INDEX ROWID Object owner=INV Object name=MTL_PARAMETERS Cost=1 Cardinality=1 Bytes=8
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_PARAMETERS_U1 Cost=0 Cardinality=1
TABLE ACCESS BY INDEX ROWID Object owner=GL Object name=GL_CODE_COMBINATIONS Cost=2 Cardinality=1 Bytes=57
INDEX UNIQUE SCAN Object owner=GL Object name=GL_CODE_COMBINATIONS_U1 Cost=1 Cardinality=1
TABLE ACCESS BY INDEX ROWID Object owner=INV Object name=MTL_ITEM_LOCATIONS Cost=3 Cardinality=1 Bytes=24
INDEX RANGE SCAN Object owner=INV Object name=MTL_ITEM_LOCATIONS_U1 Cost=2 Cardinality=1
TABLE ACCESS BY INDEX ROWID Object owner=HR Object name=HR_ORGANIZATION_INFORMATION Cost=2 Cardinality=1 Bytes=28
INDEX RANGE SCAN Object owner=HR Object name=HR_ORGANIZATION_INFORMATIO_FK2 Cost=1 Cardinality=2
TABLE ACCESS BY INDEX ROWID Object owner=HR Object name=HR_ORGANIZATION_INFORMATION Cost=1 Cardinality=1 Bytes=25
INDEX RANGE SCAN Object owner=HR Object name=HR_ORGANIZATION_INFORMATIO_FK2 Cost=1 Cardinality=1
INDEX FULL SCAN Object owner=GL Object name=GL_SETS_OF_BOOKS_U2 Cost=1 Cardinality=1 Bytes=4
BUFFER SORT Cost=55 Cardinality=1
TABLE ACCESS FULL Object owner=APPLSYS Object name=FND_PRODUCT_GROUPS Cost=3 Cardinality=1 -
Refresh a materialized view in parallel
Hi,
To improve the refresh performance for a materialized view, I set up it to be refreshed in parallel. The view can be refreshed successfully, however, I did not see the view is refreshed in parallel from session browser, can someone let me know if I miss any steps?
1) In DB A (running 8 CPUs), set up the base table to be parallelized, the base table is called table1
ALTER TABLE A.table1 PARALLEL ( DEGREE Default INSTANCES Default );
2) In Database A, set up the materialized view log
CREATE MATERIALIZED VIEW LOG
ON table1 WITH primary key
INCLUDING NEW VALUES;
3) In Database B (in the same server with Database A), there is an existing table called table1, prebuilt with millions of records in the table. Due to the size of table1, I have to use prebuilt option
Drop MATERIALIZED VIEW table1;
CREATE MATERIALIZED VIEW table1 ON PREBUILT TABLE
REFRESH FAST with primary key
AS
select /*+ PARALLEL(table1, 8) */ *
from table1@A;
4) in Database B, I executed this stored procedure -
EXECUTE DBMS_MVIEW.REFRESH(LIST=>'table1',PARALLELISM=>8, METHOD=>'F');
Thanks in advance!
LizI checked the execution plan when I executed the refresh stored procedure again, Does the plan indicates the parallel execution is working or not?
SELECT STATEMENT REMOTE ALL_ROWSCost: 32,174 Bytes: 775,392 Cardinality: 1,182
13 PX COORDINATOR
12 PX SEND QC (RANDOM) PARALLEL_TO_SERIAL SYS.:TQ10001 :Q1001
11 NESTED LOOPS PARALLEL_COMBINED_WITH_PARENT :Q1001
9 NESTED LOOPS PARALLEL_COMBINED_WITH_PARENT :Q1001Cost: 32,174 Bytes: 775,392 Cardinality: 1,182
6 BUFFER SORT PARALLEL_COMBINED_WITH_CHILD :Q1001
5 PX RECEIVE PARALLEL_COMBINED_WITH_PARENT :Q1001
4 PX SEND ROUND-ROBIN PARALLEL_FROM_SERIAL SYS.:TQ10000 A
3 VIEW APP_USR. Cost: 12,986 Bytes: 6,070,196 Cardinality: 275,918
2 HASH UNIQUE Cost: 12,986 Bytes: 9,105,294 Cardinality: 275,918
1 TABLE ACCESS FULL TABLE A.MLOG$_TABLE1 A Cost: 10,518 Bytes: 9,105,294 Cardinality: 275,918
8 PARTITION RANGE ITERATOR PARALLEL_COMBINED_WITH_PARENT :Q1001Cost: 0 Cardinality: 1
7 INDEX RANGE SCAN INDEX (UNIQUE) PARALLEL_COMBINED_WITH_PARENT A.PK_TABLE1 :Q1001Cost: 0 Cardinality: 1
10 TABLE ACCESS BY LOCAL INDEX ROWID TABLE PARALLEL_COMBINED_WITH_PARENT A.TABLE1 :Q1001Cost: 0 Bytes: 634 Cardinality: 1 -
Performance Differences (complex)
Hi!
Almost 2 years ago we started to migrate our software from Oracle 8.0 to Oracle 10g.
Soon we faced severe performance problems with some statements (Oracle 10g being 1000 times SLOWER than 8.0!), but we somehow managed to get around with this.
Then we suddenly faced problems with a few statements, that were fast on 10.1.0.2 and slow on 10.1.0.4 - or vice versa. But we also managed this...
Now in recent days - guess what - I'm even having problems with extremly varying performance executing SQLs on two machines running the same database (10.1.0.2), having been installed identically. The hardware ist not equal, maybe server1 ist two times faster than server2, but the diffrences in execution time are far beyond that, what hardware differences could explain (sometimes factor 100), and to make the confusion complete: sometimes the slow machine is by far faster than the "fast" one :(
I know there are millions of factors that determine the execution speed of an sql statement, but slowly but surely this behaviour really starts to suck apart from the fact that developement becomes expensive, if you never know whether the statement you wrote will also be fast on your customer's computer.
Meanwhile I'm really desperate about this behaviour and my belief in oracle (or in my abilities) has decreased drastically.
Has anyone some hints how to generally adress problems like these?
First thing I do in these situations is to generate new statistics using GATHER_SCHEMA_STATS but in most cases this wont help.
We also tried looking at the execution plans. Of course they are different, but the question is why, and how can I affect this?
The last weeks this has really become a big problem for us, because the number of incidents has increased and we don't want our application to be a kind of performance-gamble.
If I look around in forums I always have the feeling we are the only ones to face problems like these. Are we doing something completely wrong, and how can I find out what?
Has anyone faced similar problems?
Thanks in advance,
Marcus-- Statement I
PLAN_TABLE_OUTPUT
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 401 | 48 (3)| 00:00:01 |
|* 1 | TABLE ACCESS BY INDEX ROWID | CMP_STRUKTUREN | 1 | 140 | 2 (0)| 00:00:01 |
| 2 | NESTED LOOPS | | 1 | 401 | 48 (3)| 00:00:01 |
|* 3 | HASH JOIN | | 1 | 261 | 46 (3)| 00:00:01 |
| 4 | TABLE ACCESS BY INDEX ROWID| CMP_STRUKTUREN | 1 | 140 | 4 (0)| 00:00:01 |
|* 5 | INDEX RANGE SCAN | STR_PK | 1 | | 3 (0)| 00:00:01 |
|* 6 | TABLE ACCESS FULL | BDE_MITARBEITERTAETIGKEITEN | 242 | 29282 | 42 (3)| 00:00:01 |
|* 7 | INDEX RANGE SCAN | STR_STROBJ_ZU_FK_I | 1 | | 1 (0)| 00:00:01 |
Predicate Information (identified by operation id):
1 - filter("ST_A_FS"."STRUKTURTYP"='FERTIGUNGSTRUKTUR' AND "ST_A_FS"."STRUKTURSUBTYP"='FERTSTR'
AND "ST_A_FS"."STUFE"=1)
3 - access("ST_A_VP"."STRUKTUROBJEKT_ZU"="MT"."AUFTRAG")
5 - access("ST_A_VP"."STRUKTURSUBTYP"='VORPRODUKT' AND "ST_A_VP"."STRUKTURSUBTYP_ZU"='AUFTRAG' AND
"ST_A_VP"."STRUKTURTYP"='PRODUKTSTRUKTUR' AND "ST_A_VP"."STRUKTURTYP_ZU"='AUFTRAGSSTRUKTUR' AND
"ST_A_VP"."STUFE"=3 AND "ST_A_VP"."STUFE_ZU"=3)
6 - filter("MT"."PRODUKTIONSTAG"<=TO_DATE('2004-08-30 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND
"MT"."PRODUKTIONSTAG">=TO_DATE('2004-08-10 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND
"MT"."TAETIGKEITSART"='GESARBEIT')
7 - access("ST_A_FS"."STRUKTURTYP_ZU"='AUFTRAGSSTRUKTUR' AND
"ST_A_FS"."STRUKTURSUBTYP_ZU"='AUFTRAG' AND "ST_A_FS"."STUFE_ZU"=3 AND
"ST_A_FS"."STRUKTUROBJEKT_ZU"="MT"."AUFTRAG")
Statistiken
0 recursive calls
0 db block gets
1314 consistent gets
0 physical reads
0 redo size
71298 bytes sent via SQL*Net to client
633 bytes received via SQL*Net from client
14 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
176 rows processed
-- Statement II
PLAN_TABLE_OUTPUT
Plan hash value: 4199534100
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 401 | 48 (3)| 00:00:01 |
|* 1 | HASH JOIN | | 1 | 401 | 48 (3)| 00:00:01 |
|* 2 | TABLE ACCESS BY INDEX ROWID | CMP_STRUKTUREN | 1 | 140 | 2 (0)| 00:00:01 |
| 3 | NESTED LOOPS | | 1 | 280 | 6 (0)| 00:00:01 |
| 4 | TABLE ACCESS BY INDEX ROWID| CMP_STRUKTUREN | 1 | 140 | 4 (0)| 00:00:01 |
|* 5 | INDEX RANGE SCAN | STR_PK | 1 | | 3 (0)| 00:00:01 |
|* 6 | INDEX RANGE SCAN | STR_STROBJ_ZU_FK_I | 1 | | 1 (0)| 00:00:01 |
|* 7 | TABLE ACCESS FULL | BDE_MITARBEITERTAETIGKEITEN | 242 | 29282 | 42 (3)| 00:00:01 |
Predicate Information (identified by operation id):
1 - access("ST_A_FS"."STRUKTUROBJEKT_ZU"="MT"."AUFTRAG")
2 - filter("ST_A_FS"."STRUKTURTYP"='FERTIGUNGSTRUKTUR' AND "ST_A_FS"."STRUKTURSUBTYP"='FERTSTR'
AND "ST_A_FS"."STUFE"=1)
5 - access("ST_A_VP"."STRUKTURSUBTYP"='VORPRODUKT' AND "ST_A_VP"."STRUKTURSUBTYP_ZU"='AUFTRAG' AND
"ST_A_VP"."STRUKTURTYP"='PRODUKTSTRUKTUR' AND "ST_A_VP"."STRUKTURTYP_ZU"='AUFTRAGSSTRUKTUR' AND
"ST_A_VP"."STUFE"=3 AND "ST_A_VP"."STUFE_ZU"=3)
6 - access("ST_A_FS"."STRUKTURTYP_ZU"='AUFTRAGSSTRUKTUR' AND
"ST_A_FS"."STRUKTURSUBTYP_ZU"='AUFTRAG' AND "ST_A_FS"."STUFE_ZU"=3 AND
"ST_A_VP"."STRUKTUROBJEKT_ZU"="ST_A_FS"."STRUKTUROBJEKT_ZU")
7 - filter("MT"."PRODUKTIONSTAG"<=TO_DATE('2004-08-30 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND
"MT"."PRODUKTIONSTAG">=TO_DATE('2004-08-10 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND
"MT"."TAETIGKEITSART"='GESARBEIT')
Statistiken
0 recursive calls
0 db block gets
2731 consistent gets
0 physical reads
0 redo size
71298 bytes sent via SQL*Net to client
633 bytes received via SQL*Net from client
14 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
176 rows processed
-- Statement III
PLAN_TABLE_OUTPUT
Plan hash value: 3128453532
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 235 | 30 (4)| 00:00:01 |
|* 1 | HASH JOIN | | 1 | 235 | 30 (4)| 00:00:01 |
| 2 | MERGE JOIN CARTESIAN| | 1 | 168 | 5 (0)| 00:00:01 |
|* 3 | INDEX RANGE SCAN | STR_PK | 1 | 84 | 3 (0)| 00:00:01 |
| 4 | BUFFER SORT | | 1 | 84 | 2 (0)| 00:00:01 |
|* 5 | INDEX RANGE SCAN | STR_PK | 1 | 84 | 2 (0)| 00:00:01 |
|* 6 | INDEX FAST FULL SCAN| MAT_PK | 242 | 16214 | 24 (0)| 00:00:01 |
Predicate Information (identified by operation id):
1 - access("ST_A_FS"."STRUKTUROBJEKT_ZU"="MT"."AUFTRAG" AND
"ST_A_VP"."STRUKTUROBJEKT_ZU"="MT"."AUFTRAG")
3 - access("ST_A_FS"."STRUKTURSUBTYP"='FERTSTR' AND
"ST_A_FS"."STRUKTURSUBTYP_ZU"='AUFTRAG' AND
"ST_A_FS"."STRUKTURTYP"='FERTIGUNGSTRUKTUR' AND
"ST_A_FS"."STRUKTURTYP_ZU"='AUFTRAGSSTRUKTUR' AND "ST_A_FS"."STUFE"=1
AND "ST_A_FS"."STUFE_ZU"=3)
5 - access("ST_A_VP"."STRUKTURSUBTYP"='VORPRODUKT' AND
"ST_A_VP"."STRUKTURSUBTYP_ZU"='AUFTRAG' AND
"ST_A_VP"."STRUKTURTYP"='PRODUKTSTRUKTUR' AND
"ST_A_VP"."STRUKTURTYP_ZU"='AUFTRAGSSTRUKTUR' AND "ST_A_VP"."STUFE"=3
AND "ST_A_VP"."STUFE_ZU"=3)
6 - filter("MT"."PRODUKTIONSTAG"<=TO_DATE('2004-08-30 00:00:00',
'yyyy-mm-dd hh24:mi:ss') AND "MT"."PRODUKTIONSTAG">=TO_DATE('2004-08-10
00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND
"MT"."TAETIGKEITSART"='GESARBEIT')
Statistiken
77 recursive calls
0 db block gets
150 consistent gets
5194 physical reads
0 redo size
2676 bytes sent via SQL*Net to client
633 bytes received via SQL*Net from client
14 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
176 rows processed
-- Statement IV
PLAN_TABLE_OUTPUT
Plan hash value: 3768923004
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 235 | 30 (4)| 00:00:01 |
|* 1 | HASH JOIN | | 1 | 235 | 30 (4)| 00:00:01 |
| 2 | NESTED LOOPS | | 1 | 168 | 5 (0)| 00:00:01 |
|* 3 | INDEX RANGE SCAN | STR_PK | 1 | 84 | 3 (0)| 00:00:01 |
|* 4 | INDEX RANGE SCAN | STR_PK | 1 | 84 | 2 (0)| 00:00:01 |
|* 5 | INDEX FAST FULL SCAN| MAT_PK | 242 | 16214 | 24 (0)| 00:00:01 |
Predicate Information (identified by operation id):
1 - access("ST_A_FS"."STRUKTUROBJEKT_ZU"="MT"."AUFTRAG")
3 - access("ST_A_FS"."STRUKTURSUBTYP"='FERTSTR' AND
"ST_A_FS"."STRUKTURSUBTYP_ZU"='AUFTRAG' AND
"ST_A_FS"."STRUKTURTYP"='FERTIGUNGSTRUKTUR' AND
"ST_A_FS"."STRUKTURTYP_ZU"='AUFTRAGSSTRUKTUR' AND "ST_A_FS"."STUFE"=1
AND "ST_A_FS"."STUFE_ZU"=3)
4 - access("ST_A_VP"."STRUKTURSUBTYP"='VORPRODUKT' AND
"ST_A_VP"."STRUKTURSUBTYP_ZU"='AUFTRAG' AND
"ST_A_VP"."STRUKTURTYP"='PRODUKTSTRUKTUR' AND
"ST_A_VP"."STRUKTURTYP_ZU"='AUFTRAGSSTRUKTUR' AND "ST_A_VP"."STUFE"=3
AND "ST_A_VP"."STUFE_ZU"=3 AND "ST_A_VP"."STRUKTUROBJEKT_ZU"="ST_A_FS"."
STRUKTUROBJEKT_ZU")
filter("ST_A_VP"."STRUKTUROBJEKT_ZU"="ST_A_FS"."STRUKTUROBJEKT_ZU
5 - filter("MT"."PRODUKTIONSTAG"<=TO_DATE('2004-08-30 00:00:00',
'yyyy-mm-dd hh24:mi:ss') AND "MT"."PRODUKTIONSTAG">=TO_DATE('2004-08-10
00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND
"MT"."TAETIGKEITSART"='GESARBEIT')
Statistiken
0 recursive calls
0 db block gets
17845 consistent gets
0 physical reads
0 redo size
2676 bytes sent via SQL*Net to client
633 bytes received via SQL*Net from client
14 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
176 rows processed
Maybe you are looking for
-
How to get row number in the fetch row itself in Sql Query ?
Hi, i am fetching some rows from a sql query . Is there any way to get row number as well in each row while all rows are fetched ? like this : RowNum data1 data2 1 abc ere 2 bnh ioi
-
Where i can get the mobile phone domain name
i wan to send sms using smtp..!! i from MALAYSIA..!! where i can find these mobile company domain name , so that i can send sms using this domain name..!! [email protected] pls guide me...
-
Can I connect ADC monitor to new Aluminum iMac?
Is it possible (with some adapter) to connect an Apple Studio Display with ADC to the Aluminum iMac's Mini-DVI output port?
-
Yesterday, I installed ARD 3.7.2 on both my MacBook Pro (late 2013, retina) as well as my Mac mini (early 2009) which I run as a server. Since rebooting after the installation I can no longer access the machine over VNC locally or remotely, via the
-
It seems Acrobat Pro XI recently updated and now when I chose to send for signature via echo sign, it just ships the doc off to the recipient willy-nilly with out asking what other fields I may want input, where I may want to sign myself (upon first