Oracle查看执行计划常用方法

 

查看执行计划常用方法

 

1explain plan命令

2DBMS_XPLAN

3AUTOTRACE开关

410046事件

510053事件

6AWR SQL报告

 

 

1、 explain plan(相当于PL/SQLF5

explain plan for select * from dual;

select * from table(dbms_xplan.display);

 

注:相关表plan_table$是一个on commit preserve rows的global temporary table。

 

2、 DBMS_XPLAN

方法1:配合explain plan使用

explain plan for select * from dual;

select * from table(dbms_xplan.display);

 

方法2:跟在执行语句后面,‘advanced’比‘all’多显示了“Outline Data”内容

set linesize 800

set pagesize 900

col plan_table_output for a200

select * from table(dbms_xplan.display_cursor(null,null,'advanced'));


方法3:只要目标SQL的执行计划所在的Child Cursor还没有被age outShared Pool,就可以使用该方法查看SQL执行计划

select sql_text, sql_id, hash_value, child_number

        from v$sql

       where sql_text like 'select count(*) from sh.customers%';

select * from table(dbms_xplan.display_cursor('sql_id/hash_value',

child_cursor_number,'advanced'));



方法4:用于查看指定SQL的所有历史执行计划,没有谓词信息

--目标SQL可能有多个Child Cursor,即多个执行计划

select sql_text, sql_id, version_count, executions

        from v$sqlarea

 where sql_text like 'select count(*) from sh.customers%';

select * from table(dbms_xplan.display_awr('sql_id'));


注:Oracle把执行计划采样数据从V$sql_plan搬到AWR Repository基表wrh$_sql_plan中没有保留谓词信息的记录。

 

3、 AUTOTRACE开关

可以额外观察到目标SQL执行时所耗费的物理读、逻辑读、产生redo数量以及排序的数量。(statistics

set outotrace on;

set outotrace off;

set outotrace traceonly;--不现实SQL执行结果

set outotrace traceonly explain;

set outotrace traceonly statistics;

 

 

 

4、 10046事件与tkprof命令

明确显示了目标SQL实际执行计划中每一个执行步骤所消耗的逻辑读、物理读和花费的时间。(USER_DUMP_DEST目录下生成trace文件。

--打开

alter session set events '10046 trace name context forever,level 12';

oradebug event 10046 trace name context forever,level 12;

--关闭

alter session set events '10046 trace name context off';

oradebug event 10046 trace name context off;

注:level 12表示trace文件中还包含目标SQL所使用的绑定变量的值以及该session所经历的等待事件。

 

--操作步骤--

aSQL> oradebug setmypid;

bSQL> oradebug event 10046 trace name context forever,level 12;

cSQL> select count(*) from dual;

dSQL> oradebug tracefile_name;

   /oracle/app/oracle/diag/rdbms/test/test/trace/test_ora_4288.trc

eSQL> oradebug event 10046 trace name context off;

f[oracle@test ~]$tkprof /oracle/app/oracle/diag/rdbms/test

/test/trace/test_ora_4288.trc /oracle/test_ora_4288_tkprof.trc

 

5、 10053事件

6、 AWR SQL报告、Statspack报告

7、 一些现成的脚本(display_cursor_9i.sql)

 

 

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

转载于:http://blog.itpub.net/27126919/viewspace-1688233/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值