Aegis-Titan
Member
Hiya everyone, im trying to create automation for explain plans and im having tad of an issue with getting somewhat accurate readings, for example, what i use now is:
set verify off;
set colsep ,
set headsep off
set AUTOTRACE ON
set pagesize 0
set trimspool on
set termout off
col v_spool noprint new_value v_spool
select 'TESTOUTPUT_'||
to_char(sysdate,'yyyy_mm_dd_hh24_mi_ss')||'.csv' v_spool from dual;
set termout on
spool /test/&&v_spool
set lines 12345 pages 12345;
EXPLAIN PLAN SET statement_id = 'example_plan1' FOR
@test.sql
select plan_table_output
from table(dbms_xplan.display('example_plan1',null,'typical'));
SET TIMING OFF
spool off
In this case scenario it always returns same output time for all queries - aka 33 seconds, tho its very inaccurate, in reality each query takes under a second to execute.
Modified version:
set verify off;
set colsep ,
set headsep off
set serveroutput off
set AUTOTRACE ON
set pagesize 0
set trimspool on
set termout off
col v_spool noprint new_value v_spool
select 'TESTOUTPUT_'||
to_char(sysdate,'yyyy_mm_dd_hh24_mi_ss')||'.csv' v_spool from dual;
set termout on
spool /test/&&v_spool
set lines 12345 pages 12345;
explain plan for
@test2.sql
SELECT *
FROM table(DBMS_XPLAN.DISPLAY (FORMAT=>'ALL +OUTLINE'));
SET TIMING OFF
spool off
Which shows 9 seconds in explain, but in reality query takes 29 seconds to execute. plus its narrowed down to a single query, preference is to be able to do it for multiple queries in spool.
Hopefully someone knows the answer, and thank you ahead of time!
Cheers!
set verify off;
set colsep ,
set headsep off
set AUTOTRACE ON
set pagesize 0
set trimspool on
set termout off
col v_spool noprint new_value v_spool
select 'TESTOUTPUT_'||
to_char(sysdate,'yyyy_mm_dd_hh24_mi_ss')||'.csv' v_spool from dual;
set termout on
spool /test/&&v_spool
set lines 12345 pages 12345;
EXPLAIN PLAN SET statement_id = 'example_plan1' FOR
@test.sql
select plan_table_output
from table(dbms_xplan.display('example_plan1',null,'typical'));
SET TIMING OFF
spool off
In this case scenario it always returns same output time for all queries - aka 33 seconds, tho its very inaccurate, in reality each query takes under a second to execute.
Modified version:
set verify off;
set colsep ,
set headsep off
set serveroutput off
set AUTOTRACE ON
set pagesize 0
set trimspool on
set termout off
col v_spool noprint new_value v_spool
select 'TESTOUTPUT_'||
to_char(sysdate,'yyyy_mm_dd_hh24_mi_ss')||'.csv' v_spool from dual;
set termout on
spool /test/&&v_spool
set lines 12345 pages 12345;
explain plan for
@test2.sql
SELECT *
FROM table(DBMS_XPLAN.DISPLAY (FORMAT=>'ALL +OUTLINE'));
SET TIMING OFF
spool off
Which shows 9 seconds in explain, but in reality query takes 29 seconds to execute. plus its narrowed down to a single query, preference is to be able to do it for multiple queries in spool.
Hopefully someone knows the answer, and thank you ahead of time!
Cheers!
Last edited: