Include actual execution plan is not visible in EDITOR tab

Hi ,

Toad version : 12.8.0.49
edition : Toad development tool for oracle

I am trying to generate actual execution plan for oracle sql , but i can only view estimated plan not the actual execution plan , i tried to enable “include actual execution plan” using EDITOR tab , but it is not visible ,

please guide to how to get actual execution ?

Thanks

Right-click in the explain plan dialog. Check “Use cached plan if possible”.
If the query has not been run (and thus not in Oracle’s cache), run the query.
Then do a CTRL+E to do the explain plan.
Above the plan tree, it will say either “New Explain Plan” or “Cached Explain Plan” so you can tell if it is a cached plan or not.

I could see only “LOAD CACHED PLAN IF POSSIBLE” , i enable load cached plan if possible and ran query again and generated explain plan using CTRL+E , but still did not see actual execution plan.

Do you have the SELECT privilege on V$SQL?

yes , i can able to query table

Oh, sorry, check privs on v$sql_plan for Toad 12.8. We also use dbms_utility, but that’s granted to public so you should have that.

Yes , I do have access to above table

That should be all you need. Try turning on spool SQL. (Main Menu: Database -> Spool SQL -> Spool to screen). That will show you what Toad is doing. You should see how Toad gets a hash of your query, then tries to find that has in v$SQL_PLAN. Maybe it isn’t found in v$SQL_PLAN for some reason.

spool SQL screen shows empty , nothing in it.

what are various ways to get actual execution plan in TOAD ?

So, you turn on spool sql, then do a CTRL+E to get an explain plan, and the plan shows up nothing shows up in the spool? I don't understand how that can happen.

what are various ways to get actual execution plan in TOAD ?

This is the only way. Usually it works. I am not sure why you are having problems.

Your best bet to get this resolved is probably to open a support case. Sorry I am out of ideas.

I just copied plan hash value from explain plan screen and filtered in v$sql_plan view and found some records , i guess this is the actual execution plan , am i correct ?

does v$sql_plan always stores actual execution plan ?

sorry , my mistake , I turn on sql spool , then did CTRL+E ,

it giving

Session: database
Timestamp: 10:03:18.907
Select *
from v$sql_plan
Where hash_value = :sqlhv
and child_number =:cn
order by id
:sqlhv(VARCHAR[10],IN/OUT)=‘2289551384’
:cn(INTEGER,IN/OUT)=0


Session: database
Timestamp: 10:03:19.000
select * from table(dbms_xplan.display_cursor(sql_id => ‘0142yc247gk0s’, cursor_child_no => null, format => ‘TYPICAL, ALLSTATS’))

Well, then it’s showing you the plan from v$sql_plan. If it weren’t you’d see a statement like “explain plan set statement_id = ‘blah’ into TOAD_PLAN_TABLE for ‘’”

This is the script it showing up in sql spool


Session: database1
Timestamp: 10:03:18.902
declare
v_ignore raw(100);
v_oldhash number;
v_hash number;
begin
v_hash := dbms_utility.get_sql_hash(:SQLText || chr(0), v_ignore, v_oldhash);
:outHash := v_hash;
end;
:SQLText(VARCHAR[2679],IN/OUT)=‘select query’


Session: database1
Timestamp: 10:03:18.907
Select *
from v$sql_plan
Where hash_value = :sqlhv
and child_number =:cn
order by id
:sqlhv(VARCHAR[10],IN/OUT)=‘2289551384’
:cn(INTEGER,IN/OUT)=0


Session: database1
Timestamp: 10:03:19.000
select * from table(dbms_xplan.display_cursor(sql_id => ‘0142yc247gk0s’, cursor_child_no => null, format => ‘TYPICAL, ALLSTATS’))

Ok, so it appears that you are getting the actual plan. Why does it seem that it is not?

I am sorry if i am confusing you.

Is that above is actual execution plan ? it is something like showing up list of steps how query executed right ?

You mean i have to query above v$sql_plan to get actual plan ?

please advice

You do not have to query v$sql_plan manually.

Whatever it is showing you in the explain plan output is the actual explain plan. I can tell because of the spool sql ouput.

okay got it.

once we enable sql spool and run CTRL+E , plan showing up in explain plan is the actual execution plan , am i correct ?

if sql spool turn off and plan in explain plan is not actual ?
image

above plan , E – indicates estimated ,but its a actual plan ,how it possible ?

Not exactly. Enabling Spool SQL has nothing to do with Explain Plan. That is just a tool to see what Toad is doing in the background.

To get the actual plan, all you have to do is: 1) make sure that Toad's "Used Cached Plan if possible" menu item is checked, 2) run the query if it hasn't been run recently, 3) CTRL+E.

E doesn't mean that the whole plan is an estimate of what Oracle would do if it ran the query. It means that Oracle estimated the # of rows, the number of bytes, etc, when it executed the query.

can we distinguish actual plan and estimated plan in toad ?

when i run query , then ran crtl+E (this its a actual execution plan used ) ?