声明:脚本来自《Pro Oracle SQL》一书,pln.sql
下面只是一个查看执行计划一种方法,就是通过加上备注表示唯一SQL语句:
[oracle@maa3 ~]$ cat pln.sql
SELECT xplan.*
FROM
(
select max(sql_id) keep
(dense_rank last order by last_active_time) sql_id
, max(child_number) keep
(dense_rank last order by last_active_time) child_number
from v$sql
where upper(sql_text) like '%&1%'
and upper(sql_text) not like '%FROM V$SQL WHERE UPPER(SQL_TEXT) LIKE %'
) sqlinfo,
table(DBMS_XPLAN.DISPLAY_CURSOR(sqlinfo.sql_id, sqlinfo.child_number, 'ALLSTATS LAST')) xplan
/
luocs@MAA> @pln AAA
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
SQL_ID a151a11p17s10, child number 0
-------------------------------------
select /* aaa */ COUNT(OWNER) from t1 where owner='SYS'
Plan hash value: 1245464496
----------------------------------------------------
| Id | Operation | Name | E-Rows |
----------------------------------------------------
| 0 | SELECT STATEMENT | | |
| 1 | SORT AGGREGATE | | 1 |
|* 2 | INDEX FAST FULL SCAN| INX_OWNER | 19134 |
----------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("OWNER"='SYS')
Note
-----
- Warning: basic plan statistics not available. These are only collected when:
* hint 'gather_plan_statistics' is used for the statement or
* parameter 'statistics_level' is set to 'ALL', at session or system level
sys@MAA> alter system flush shared_pool;
System altered.
luocs@MAA> alter session set statistics_level=ALL;
Session altered.
luocs@MAA> select /* aaa */ COUNT(OWNER) from t1 where owner='SYS';
COUNT(OWNER)
---------------
19134
luocs@MAA> select /* www.luocs.com */ COUNT(OWNER) from t1 where owner='LUOCS';
COUNT(OWNER)
---------------
2
luocs@MAA> @pln AAA
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
SQL_ID a151a11p17s10, child number 0
-------------------------------------
select /* aaa */ COUNT(OWNER) from t1 where owner='SYS'
Plan hash value: 1245464496
---------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers |
---------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | 1 |00:00:00.01 | 116 |
| 1 | SORT AGGREGATE | | 1 | 1 | 1 |00:00:00.01 | 116 |
|* 2 | INDEX FAST FULL SCAN| INX_OWNER | 1 | 19134 | 19134 |00:00:00.01 | 116 |
---------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("OWNER"='SYS')
luocs@MAA> @pln WWW.LUOCS.COM
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
SQL_ID fczadm51f27c4, child number 0
-------------------------------------
select /* www.luocs.com */ COUNT(OWNER) from t1 where owner='LUOCS'
Plan hash value: 3047016978
-----------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers |
----------------------------------------------------------