Query with same plan running longer
Date: Tue, 1 Mar 2022 00:12:10 +0530
Message-ID: <CAKna9VbT0swwarwyO6jKsJdM_OuqFm=sy5fQzgMjycUAfTM_bw_at_mail.gmail.com>
Its version 19.9 of oracle. We are seeing suddenly a query taking longer even is using same path and looking into the sql monitor report from past it shows the cell offloading percentage has been dropped from ~98% to ~56%. Want to understand the cause behind this and how to fix it?
Below is the sql monitor for this and majority of time is on step-6 i.e full scan of TAB1 , however the read request , read bytes all seems to be the same but still there is a big difference in the offloading percentage. When I run the query manually and peek into the v$sesstat seeing below output from that.
SELECT .....
FROM TAB1 , TD , CMC
WHERE ROWNUM <= 100000 AND TAB1.TDN = td.DID AND TAB1.CO_ID = CMC.PME AND 1 = 1 AND ATI IN ('XXXXX') AND ( ( ( ( IDR = 'Y' AND TRUNC (SYSDATE) - 15 > I_DT) OR IDR = 'N') AND PCSC IN ('CR', 'CC', 'CA', 'CI1', 'CR1', 'CC2', 'CC3', 'CI4')) OR (PCSC IN ('CC1', 'CI', 'CA1', 'CI2', 'CR2', 'CC4', 'CA2', 'CI3')) OR ( ( ( IDR = 'Y' AND TRUNC (SYSDATE) - 15 > I_DT) OR IDR = 'N') AND PCSC IN ('CI4', 'CI5') AND S_DT < TRUNC (SYSDATE)) OR ( PCSC IN ('CI6', 'CI7') AND S_DT < TRUNC (SYSDATE))) AND ( D_DT > SYSDATE - 120 OR (IDR = 'N' AND D_DT IS NULL))ORDER BY D_DT ASC, S_AMT DESC
- Slow execution *****************
Global Information
Status : DONE (ALL ROWS) Instance ID : 1 Execution Started : 02/26/2022 06:58:23 First Refresh Time : 02/26/2022 06:58:27 Last Refresh Time : 02/26/2022 07:00:40 Duration : 137s Module/Action : JDBC Thin Client/- Program : JDBC Thin Client Fetch Calls : 3877
Global Stats
| Elapsed | Cpu | IO | Application | Fetch | Buffer | Read | Read | Uncompressed | Offload | Offload | Cell | | Time(s) | Time(s) | Waits(s) | Waits(s) | Calls | Gets | Reqs | Bytes | Bytes | Elig Bytes | Returned Bytes | Offload |
| 137 | 133 | 3.46 | 0.09 | 3877 | 26M | 201K | 196GB | 111GB | 196GB | 84GB | 56.90% |
=====================================================================================================================================
SQL Plan Monitoring Details (Plan Hash Value=3977078242)
| Id | Operation | Name | Rows | Cost | Time | Start | Execs | Rows | Read | Read | Mem | Activity | Activity Detail |
| | | | (Estim) | | Active(s) | Active | | (Actual) | Reqs | Bytes |(Max) | (%) | (# samples) |
| 0 | SELECT STATEMENT | | | | 3 | +135 | 1 | 38764 | | | . | | | | 1 | SORT ORDER BY | | 3876 | 4M | 3 | +135 | 1 | 38764 | | | 6MB | | | | 2 | COUNT STOPKEY | | | | 1 | +135 | 1 | 38764 | | | . | | | | 3 | HASH JOIN | | 3876 | 4M | 1 | +135 | 1 | 38764 | | | 15MB | | | | 4 | HASH JOIN | | 3802 | 4M | 132 | +4 | 1 | 38764 | | | 13MB | | | | 5 | JOIN FILTER CREATE | :BF0000 | 3809 | 4M | 132 | +4 | 1 | 38764 | | | . | | | | 6 | TABLE ACCESS STORAGE FULL | TAB1 | 3809 | 4M | 135 | +1 | 1 | 38764 | 201K | 196GB | 7MB | | | | 7 | JOIN FILTER USE | :BF0000 | 2M | 3237 | 1 | +135 | 1 | 15626 | | | . | | | | 8 | TABLE ACCESS STORAGE FULL | TD | 2M | 3237 | 1 | +135 | 1 | 15626 | | | . | | | | 9 | INDEX STORAGE FAST FULL SCAN | TD_IX1 | 959K | 448 | 2 | +135 | 1 | 959K | | | . | | |
====================================================================================================================================================================================
- fast execution ***************
Global Information
Status : DONE (ALL ROWS) Instance ID : 1 SQL Execution ID : 16777247 Execution Started : 02/25/2022 15:38:36 First Refresh Time : 02/25/2022 15:38:40 Last Refresh Time : 02/25/2022 15:39:09 Duration : 33s Module/Action : JDBC Thin Client/- Program : JDBC Thin Client Fetch Calls : 1801
Global Stats
| Elapsed | Cpu | IO | Application | Fetch | Buffer | Read | Read | Uncompressed | Offload | Offload | Cell | | Time(s) | Time(s) | Waits(s) | Waits(s) | Calls | Gets | Reqs | Bytes | Bytes | Elig Bytes | Returned Bytes | Offload |
| 33 | 8.29 | 25 | 0.02 | 1801 | 26M | 204K | 195GB | 191GB | 195GB | 3GB | 98.21% |
=====================================================================================================================================
SQL Plan Monitoring Details (Plan Hash Value=3977078242)
| Id | Operation | Name | Rows | Cost | Time | Start | Execs | Rows | Read | Read | Mem | Activity | Activity Detail |
| | | | (Estim) | | Active(s) | Active | | (Actual) | Reqs | Bytes |(Max) | (%) | (# samples) |
| 0 | SELECT STATEMENT | | | | 2 | +32 | 1 | 18003 | | | . | | | | 1 | SORT ORDER BY | | 3866 | 4M | 2 | +32 | 1 | 18003 | | | 3MB | | | | 2 | COUNT STOPKEY | | | | 1 | +32 | 1 | 18003 | | | . | | | | 3 | HASH JOIN | | 3866 | 4M | 1 | +32 | 1 | 18003 | | | 8MB | | | | 4 | HASH JOIN | | 3792 | 4M | 23 | +10 | 1 | 18003 | | | 6MB | | | | 5 | JOIN FILTER CREATE | :BF0000 | 3800 | 4M | 23 | +10 | 1 | 18003 | | | . | | | | 6 | TABLE ACCESS STORAGE FULL | TAB1 | 3800 | 4M | 32 | +1 | 1 | 18003 | 204K | 195GB | 7MB | | | | 7 | JOIN FILTER USE | :BF0000 | 2M | 3237 | 1 | +32 | 1 | 11409 | | | . | | | | 8 | TABLE ACCESS STORAGE FULL | TD | 2M | 3237 | 1 | +32 | 1 | 11409 | | | . | | | | 9 | INDEX STORAGE FAST FULL SCAN | TD_IX1 | 959K | 448 | 1 | +32 | 1 | 959K | | | . | | |
====================================================================================================================================================================================
Predicate Information (identified by operation id):
2 - filter(ROWNUM<=100000) 3 - access("CMC"."PME"=TO_NUMBER("TAB1"."CO_ID")) 4 - access("TAB1"."TDN"="TD"."DID") 6 - storage("ATI"='XXXXXXX' AND (("PCSC"='CA2' OR "PCSC"='CR2' OR"PCSC"='CC4' OR "PCSC"='CI3' OR "PCSC"='CA1' OR "PCSC"='CC1' OR "PCSC"='CI' OR "PCSC"='CI2') OR ("PCSC"='CC3' OR "PCSC"='CC2' OR "PCSC"='CI4' OR "PCSC"='CR1' OR "PCSC"='CA' OR "PCSC"='CC' OR "PCSC"='CI1' OR "PCSC"='CR') AND ("IDR"='N' OR "IDR"='Y' AND "I_DT"<TRUNC(SYSDATE_at_!)-15) OR
("PCSC"='CI7' OR "PCSC"='CI6') AND "S_DT"<TRUNC(SYSDATE_at_!) OR ("PCSC"='CI5' OR "PCSC"='CI4') AND ("IDR"='N' OR "IDR"='Y' AND "I_DT"<TRUNC(SYSDATE_at_!)-15) AND "S_DT"<TRUNC(SYSDATE_at_!))
AND ("D_DT" IS NULL AND "IDR"='N' OR "D_DT">SYSDATE_at_!-120)) filter("ATI"='XXXXXXX' AND (("PCSC"='CA2' OR "PCSC"='CR2' OR"PCSC"='CC4' OR "PCSC"='CI3' OR "PCSC"='CA1' OR "PCSC"='CC1' OR "PCSC"='CI' OR "PCSC"='CI2') OR ("PCSC"='CC3' OR "PCSC"='CC2' OR "PCSC"='CI4' OR "PCSC"='CR1' OR "PCSC"='CA' OR "PCSC"='CC' OR "PCSC"='CI1' OR "PCSC"='CR') AND ("IDR"='N' OR "IDR"='Y' AND "I_DT"<TRUNC(SYSDATE_at_!)-15) OR
("PCSC"='CI7' OR "PCSC"='CI6') AND "S_DT"<TRUNC(SYSDATE_at_!) OR ("PCSC"='CI5' OR "PCSC"='CI4') AND ("IDR"='N' OR "IDR"='Y' AND "I_DT"<TRUNC(SYSDATE_at_!)-15) AND "S_DT"<TRUNC(SYSDATE_at_!))
AND ("D_DT" IS NULL AND "IDR"='N' OR "D_DT">SYSDATE_at_!-120)) 8 - storage(SYS_OP_BLOOM_FILTER(:BF0000,"TD"."DID")) filter(SYS_OP_BLOOM_FILTER(:BF0000,"TD"."DID"))
-- http://www.freelists.org/webpage/oracle-lReceived on Mon Feb 28 2022 - 19:42:10 CET