dbms_xplan

 

10g

*****************************************

dbms_xplan包通过dbmsutil.sql脚本创建

 DISPLAY - PLAN_TABLE中提取执行计划

 DISPLAY_CURSOR - V$SQL_PLAN中提取执行计划,需要V$SQL_PLAN, V$SESSIONV$SQL_PLAN_STATISTICS_ALL上的权限

 DISPLAY_AWR - AWR库中的SQL语句的提取执行计划,需要DBA_HIST_SQL_PLANWRH$_SQL_PLAN, DBA_HIST_SQLTEXTWRH$_SQLTEXTV$DATABASE上的权限,

 DISPLAY_SQLSET - SQL tuning set中的SQL语句的执行计划,需要ALL_SQLSET_STATEMENTSALL_SQLSET_PLANS上的权限(这两个视图是WRI$上建立的一个视图)

SQL> EXPLAIN PLAN FOR

2 select *

3 from regions a, countries b

4 where a.region_id = b.region_id

5 and a.region_name = 'Americas';

Explained.

SQL> SET LINESIZE 130

SQL> SET PAGESIZE 0

SQL> SELECT * FROM table(DBMS_XPLAN.DISPLAY);

Plan hash value: 2128980668

------------------------------------------------------------------------------------------------

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |

------------------------------------------------------------------------------------------------

| 0 | SELECT STATEMENT | | 6 | 168 | 2 (0)| 00:00:01 |

| 1 | NESTED LOOPS | | 6 | 168 | 2 (0)| 00:00:01 |

| 2 | INDEX FULL SCAN | COUNTRY_C_ID_PK | 25 | 350 | 1 (0)| 00:00:01 |

|* 3 | TABLE ACCESS BY INDEX ROWID| REGIONS | 1 | 14 | 1 (0)| 00:00:01 |

|* 4 | INDEX UNIQUE SCAN | REG_ID_PK | 1 | | 0 (0)| 00:00:01 |

------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

3 - filter("A"."REGION_NAME"='Americas')

4 - access("A"."REGION_ID"="B"."REGION_ID")

17 rows selected.

SQL> select count(*)

2 from regions a, countries b

3 where a.region_id = b.region_id

4 and a.region_name = 'Americas';

COUNT(*)

----------

5

SQL> SET PAGESIZE 0

SQL> SET LINESIZE 130

SQL> SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR);

SQL_ID 59fkr5bn6q9kq, child number 0

-------------------------------------

SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR)

Plan hash value: 3713220770

--------------------------------------------------------------------

| Id | Operation | Name | Cost |

--------------------------------------------------------------------

| 0 | SELECT STATEMENT | | 24 |

| 1 | COLLECTION ITERATOR PICKLER FETCH| DISPLAY_CURSOR | |

--------------------------------------------------------------------

Note

-----

- cpu costing is off (consider enabling it)

17 rows selected.

SQL> select /* ZHANGQIAOC */count(*)

2 from regions a, countries b

3 where a.region_id = b.region_id

4 and a.region_name = 'Americas';

COUNT(*)

----------

5

SQL> select sql_id, child_number, sql_text

2 from v$sql

3 where sql_text like '%ZHANGQIAOC%';

SQL_ID CHILD_NUMBER

------------- ------------

SQL_TEXT

---------------------------------------------------------------------------------------------------

bz0qkc2n9n614 0

select sql_id, child_number, sql_text from v$sql where sql_text like '%ZHANGQIAOC%'

4rwway8kx55j3 0

select /* ZHANGQIAOC */count(*) from regions a, countries b where a.region_id = b.region_id a

nd a.region_name = 'Americas'

5m4s3h69a1rgj 0

select /* ZHANGQIAOC */count(*) from regions a, countries b where a.region_id = b.region_id a

SQL> select * from table(dbms_xplan.display_cursor('4rwway8kx55j3',0));

PLAN_TABLE_OUTPUT

---------------------------------------------------------------------------------------------------

SQL_ID 4rwway8kx55j3, child number 0

-------------------------------------

select /* ZHANGQIAOC */count(*) from regions a, countries b where a.region_id =

b.region_id and a.region_name = 'Americas'

Plan hash value: 1080168104

-------------------------------------------------------------------------------------------------

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |

-------------------------------------------------------------------------------------------------

| 0 | SELECT STATEMENT | | | | 2 (100)| |

PLAN_TABLE_OUTPUT

---------------------------------------------------------------------------------------------------

| 1 | SORT AGGREGATE | | 1 | 17 | | |

| 2 | NESTED LOOPS | | 6 | 102 | 2 (0)| 00:00:01 |

| 3 | INDEX FULL SCAN | COUNTRY_C_ID_PK | 25 | 75 | 1 (0)| 00:00:01 |

|* 4 | TABLE ACCESS BY INDEX ROWID| REGIONS | 1 | 14 | 1 (0)| 00:00:01 |

|* 5 | INDEX UNIQUE SCAN | REG_ID_PK | 1 | | 0 (0)| |

-------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

4 - filter("A"."REGION_NAME"='Americas')

PLAN_TABLE_OUTPUT

---------------------------------------------------------------------------------------------------

5 - access("B"."REGION_ID"="A"."REGION_ID")

24 rows selected.

SQL> ALTER TABLE countries PARALLEL;

Table altered.

SQL> EXPLAIN PLAN for

2 select /*+ full(a) full(b) */*

3 from regions a, countries b

4 where a.region_id = b.region_id

5 and a.region_name = 'Americas'

6 order by b.country_id;

Explained.

SQL> SELECT * FROM table(DBMS_XPLAN.DISPLAY);

Plan hash value: 2078065449

----------------------------------------------------------------------------------------------------------------------------

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | TQ |IN-OUT| PQ Distrib |

----------------------------------------------------------------------------------------------------------------------------

| 0 | SELECT STATEMENT | | 6 | 168 | 7 (29)| 00:00:01 | | | |

| 1 | PX COORDINATOR | | | | | | | | |

| 2 | PX SEND QC (ORDER) | :TQ10002 | 6 | 168 | 7 (29)| 00:00:01 | Q1,02 | P->S | QC (ORDER) |

| 3 | SORT ORDER BY | | 6 | 168 | 7 (29)| 00:00:01 | Q1,02 | PCWP | |

| 4 | PX RECEIVE | | 6 | 168 | 6 (17)| 00:00:01 | Q1,02 | PCWP | |

| 5 | PX SEND RANGE | :TQ10001 | 6 | 168 | 6 (17)| 00:00:01 | Q1,01 | P->P | RANGE |

|* 6 | HASH JOIN | | 6 | 168 | 6 (17)| 00:00:01 | Q1,01 | PCWP | |

| 7 | BUFFER SORT | | | | | | Q1,01 | PCWC | |

| 8 | PX RECEIVE | | 1 | 14 | 3 (0)| 00:00:01 | Q1,01 | PCWP | |

| 9 | PX SEND BROADCAST | :TQ10000 | 1 | 14 | 3 (0)| 00:00:01 | | S->P | BROADCAST |

|* 10 | TABLE ACCESS FULL | REGIONS | 1 | 14 | 3 (0)| 00:00:01 | | | |

| 11 | PX BLOCK ITERATOR | | 25 | 350 | 2 (0)| 00:00:01 | Q1,01 | PCWC | |

| 12 | INDEX FAST FULL SCAN| COUNTRY_C_ID_PK | 25 | 350 | 2 (0)| 00:00:01 | Q1,01 | PCWP | |

----------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

6 - access("A"."REGION_ID"="B"."REGION_ID")

10 - filter("A"."REGION_NAME"='Americas')

25 rows selected.

SQL>

SQL> CREATE VIEW PLAN AS SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

View created.

SQL> SELECT * FROM PLAN;

Plan hash value: 2078065449

----------------------------------------------------------------------------------------------------------------------------

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | TQ |IN-OUT| PQ Distrib |

----------------------------------------------------------------------------------------------------------------------------

| 0 | SELECT STATEMENT | | 6 | 168 | 7 (29)| 00:00:01 | | | |

| 1 | PX COORDINATOR | | | | | | | | |

| 2 | PX SEND QC (ORDER) | :TQ10002 | 6 | 168 | 7 (29)| 00:00:01 | Q1,02 | P->S | QC (ORDER) |

| 3 | SORT ORDER BY | | 6 | 168 | 7 (29)| 00:00:01 | Q1,02 | PCWP | |

| 4 | PX RECEIVE | | 6 | 168 | 6 (17)| 00:00:01 | Q1,02 | PCWP | |

| 5 | PX SEND RANGE | :TQ10001 | 6 | 168 | 6 (17)| 00:00:01 | Q1,01 | P->P | RANGE |

|* 6 | HASH JOIN | | 6 | 168 | 6 (17)| 00:00:01 | Q1,01 | PCWP | |

| 7 | BUFFER SORT | | | | | | Q1,01 | PCWC | |

| 8 | PX RECEIVE | | 1 | 14 | 3 (0)| 00:00:01 | Q1,01 | PCWP | |

| 9 | PX SEND BROADCAST | :TQ10000 | 1 | 14 | 3 (0)| 00:00:01 | | S->P | BROADCAST |

|* 10 | TABLE ACCESS FULL | REGIONS | 1 | 14 | 3 (0)| 00:00:01 | | | |

| 11 | PX BLOCK ITERATOR | | 25 | 350 | 2 (0)| 00:00:01 | Q1,01 | PCWC | |

| 12 | INDEX FAST FULL SCAN| COUNTRY_C_ID_PK | 25 | 350 | 2 (0)| 00:00:01 | Q1,01 | PCWP | |

----------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

6 - access("A"."REGION_ID"="B"."REGION_ID")

10 - filter("A"."REGION_NAME"='Americas')

25 rows selected.

DBMS_XPLAN.DISPLAY(TABLE_NAME IN VARCHAR2 DEFAULT 'PLAN_TABLE',

STATEMENT_ID IN VARCHAR2 DEFAULT NULL,

FORMAT IN VARCHAR2 DEFAULT 'TYPICAL',

FILTER_PREDS IN VARCHAR2 DEFAULT NULL); --9i没有此参数

9i无此方法

DBMS_XPLAN.DISPLAY_AWR(SQL_ID IN VARCHAR2,

PLAN_HASH_VALUE IN NUMBER DEFAULT NULL,

DB_ID IN NUMBER DEFAULT NULL,

FORMAT IN VARCHAR2 DEFAULT TYPICAL);

9i无此方法

DBMS_XPLAN.DISPLAY_CURSOR(SQL_ID IN VARCHAR2 DEFAULT NULL,

CHILD_NUMBER IN NUMBER DEFAULT NULL,

FORMAT IN VARCHAR2 DEFAULT 'TYPICAL');

9i无此方法

DBMS_XPLAN.DISPLAY_SQLSET(SQLSET_NAME IN VARCHAR2,

SQL_ID IN VARCHAR2,

PLAN_HASH_VALUE IN NUMBER := NULL,

FORMAT IN VARCHAR2 := 'TYPICAL',

SQLSET_OWNER IN VARCHAR2 := NULL)

RETURN DBMS_XPLAN_TYPE_TABLE PIPELINED;

SELECT * FROM table (

DBMS_XPLAN.DISPLAY_SQLSET(

'OLTP_optimization_0405','gwp663cqh5qbf', 3693697075));

SELECT * FROM table (

DBMS_XPLAN.DISPLAY_SQLSET(

'OLTP_optimization_0405','gwp663cqh5qbf'));

SELECT * FROM table (

DBMS_XPLAN.DISPLAY_SQLSET(

'OLTP_optimization_0405', 'gwp663cqh5qbf', NULL, 'ALLSTATS LAST');

另外,调优SQL的常用语句

--SQL文本

select * from v$sqltext where sql_id='4pf5z8cnggkrs';

--SGA中的执行计划

select * from v$sql_plan where sql_id='4pf5z8cnggkrs';

--AWR中捕获的执行计划

SELECT * FROM TABLE(dbms_xplan.display_awr('f2zymmdhuzvxj'));

--绑定变量的值

select b.SQL_TEXT,value_string,child_number,name,datatype_string

from v$sql_bind_capture a,v$sqlarea b

where a.SQL_ID = b.SQL_ID

and A.SQL_ID='4pf5z8cnggkrs'

order by CHILD_NUMBER,POSITION;

--其他信息

select child_number,executions,optimizer_mode,optimizer_cost,parsing_user_id,

parsing_schema_id,address,hash_value

from v$sql

where sql_id = '7d5xrwggyz1hp';


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/611609/viewspace-743710/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/611609/viewspace-743710/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值