Re: autotrace and live plan
Date: Wed, 2 Sep 2009 18:44:34 -0500
Message-Id: <377D6644-04F5-4223-BBE8-8E6BD27F1465_at_enkitec.com>
I think Dave's right - definitely does an explain plan. Here's another "proof".
SQL> select sql_id,sql_text from v$sql where sql_text like '%kso%';
SQL_ID SQL_TEXT
------------- ----------------------------------------- 2svw50fynzdzr select sql_id,sql_text from v$sql where s ql_text like '%kso%' SQL> -- only my select from v$sql is in the shared pool with '%kso%' SQL>
SQL> set autotrace on
SQL> select * from kso1 where rownum < 5;
OBJECT_NAME
DBA_CONS_COLUMNS DBA_CONS_COLUMNS DBA_LOG_GROUP_COLUMNS DBA_LOG_GROUP_COLUMNS
Execution Plan
Plan hash value: 4162151349
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |00:00:01 |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 4 | 264 | 3 (0)| 00:00:01 | |* 1 | COUNT STOPKEY | | | | | | | 2 | TABLE ACCESS FULL| KSO1 | 1548 | 99K| 3 (0)|
Predicate Information (identified by operation id):
1 - filter(ROWNUM<5)
Note
- dynamic sampling used for this statement
Statistics
0 recursive calls 0 db block gets 5 consistent gets 0 physical reads 0 redo size 669 bytes sent via SQL*Net to client 524 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 4 rows processed
SQL> set autotrace off
SQL> select sql_id,sql_text from v$sql where sql_text like '%kso%';
SQL_ID SQL_TEXT
------------- ----------------------------------------- 59zr23qasfmqu EXPLAIN PLAN SET STATEMENT_ID='PLUS429496 7295' FOR select * from kso1 where rownum < 5
crqjjxb4m2su9 select * from kso1 where rownum < 5 2svw50fynzdzr select sql_id,sql_text from v$sql where s
ql_text like '%kso%'
SQL> -- Now I have my statement, the query of v$sql, AND THE EXPLAIN PLAN This is from an 11.1.0.7 database but it behaves the same way on 10.2. There may be some cases where it does something different, but I haven't seen one.
Kerry Osborne
Enkitec
blog: kerryosborne.oracle-guy.com
On Sep 2, 2009, at 5:54 PM, Herring Dave - dherri wrote:
> > Kyle, Tanel Poder had a session at Hotsos in '06 that showed how you > could see what autotrace was doing: > > oradebug setmypid > oradebug event 10046 trace name context forever, level 4; > set autotrace on > SELECT * FROM dual; > > I tried the above and got: > > select /*+ opt_param('parallel_execution_enabled', > 'false') EXEC_FROM_DBMS_XPLAN */ > * from PLAN_TABLE where 1=0 > > SELECT /*+ opt_param('parallel_execution_enabled', 'false') */ > /* EXEC_FROM_DBMS_XPLAN */ id, position, > level - 1 depth, operation, options, object_name, cardinality, > bytes, temp_space, cost, io_ > cost, cpu_cost , null , partition_start, partition_stop, > object_node, other_tag, distribution, NULL, access_predicates, > filter_predicates , other, null, null > , remarks, null, null, null, null, null, null, null, > null, null, null, null, null, > null, null, null, null from PLAN_TABLE > start with id = 0 > and timestamp >= > (select max(timestamp) > from PLAN_TABLE where id=0 and > statement_id = :stmt_id and nvl(statement_id, ' ') > not like 'SYS_LE > %') > and nvl(statement_id, ' ') > not like 'SYS_LE > %' and statement_id = :stmt_id connect by (prior id = parent_id > and prior nvl(statement_id, ' ') = > nvl(statement_id, ' ') > and prior timestamp <= timestamp) > or (prior nvl(object_name, ' ') > like 'SYS_LE%' > and prior nvl(object_name, ' ') = > nvl(statement_id, ' ') > and id = 0 and prior timestamp <= > timestamp) > order siblings by id > > Assuming I've read the tracefile correctly, autotrace is using a > form of DBMS_XPLAN, not getting the "live" plan as you hoped. > > Of course I'm sure Tanel has a way of changing this, as in that > session I remember he showed how you could "adjust" autotrace to > display different default statistics. ☺ > > David C. Herring | DBA, Acxiom Database Services > > 630-944-4762 office | 630-430-5988 cell | 630-944-4989 fax > 1501 Opus Pl | Downers Grove, IL, 60515 | U.S.A. | www.acxiom.com > > > ________________________________________ > From: oracle-l-bounce_at_freelists.org [mailto:oracle-l-bounce_at_freelists.org > ] On Behalf Of kyle Hailey > Sent: Tuesday, September 01, 2009 12:58 PM > To: ORACLE-L > Subject: autotrace and live plan > > Does autotrace ever show the live plan, ie the plan from v$sql_plan? > I traced autotrace on 9iR2 and 10gR2 and in both cases they use > "explain plan" to generate the explain plan. > I guess that fine since theoretically within my same session the > calculated execution plan, ie "explain plan", would have to be the > same as the actual executed plan, but with v$sql_plan in place, I > somehow find it disconcerting that the plan isn't extracted from v > $sql_plan. > > Best > Kyle > http://perfvision.com > http://oraclemonitor.com > > *************************************************************************** > The information contained in this communication is confidential, is > intended only for the use of the recipient named above, and may be > legally > privileged. > > If the reader of this message is not the intended recipient, you are > hereby notified that any dissemination, distribution or copying of > this > communication is strictly prohibited. > > If you have received this communication in error, please resend this > communication to the sender and delete the original message or any > copy > of it from your computer system. > > Thank You. > ***************************************************************************-- > http://www.freelists.org/webpage/oracle-l > *
-- http://www.freelists.org/webpage/oracle-lReceived on Wed Sep 02 2009 - 18:44:34 CDT