Getting proper explain plan via sqlplus

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!
 
Last edited:
Back
Top