Oracle9i 执行计划(转)

本文介绍了在Windows操作系统下,通过多种方式查看SQL执行计划的方法,包括使用autotrace、explain plan for、sql_trace及10053事件等。这些方法可以帮助数据库管理员深入了解SQL语句的执行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下命令用于Windows操作系统

一、使用autotrace

进入sqlplus

1.使用utxlplan脚本创建表

sqlplus中执行命令

@?\rdbms\admin\utlxplan.sql

2.创建同义词为了多个用户可以共享一个plan_table 并授权给public

create public synonym plan_table for plan_table;

grant all on plan_table to public;

3.创建plustrace 角色

执行命令 @?\sqlplus\admin\plustrce.sql

4.将角色权限授予public

grant plustrace to public;

使用以下命令改变跟踪状态

进入sqlplus时,autotrace项默认是不打开的,以后使用set autotrace off 关闭状态
 
set autotrace on
开启状态后,执行的sql语句可以查看执行计划和查询信息
 
set autotrace traceonly
此状态执行sql语句只显示执行计划,不显示查询输出

SQL> set autotrace on
SQL> set autotrace traceonly
SQL> select table_name from user_tables;

关于Autotrace几个常用选项的说明:
SET AUTOTRACE OFF ---------------- 不生成AUTOTRACE 报告,这是缺省模式
SET AUTOTRACE ON EXPLAIN ------ AUTOTRACE只显示优化器执行路径报告
SET AUTOTRACE ON STATISTICS -- 只显示执行统计信息
SET AUTOTRACE ON ----------------- 包含执行计划和统计信息
SET AUTOTRACE TRACEONLY ------ 同set autotrace on,但是不显示查询输出


二、使用explain plan for查看执行计划:
通过键入explain plan for + [待分析sql文]执行解析;

其次输入SELECT * FROM TABLE( DBMS_XPLAN.DISPLAY() );命令可查看分析结果

三、使用sql_trace查看

在pl/sql或者sqlplus中,打开一个sql_window。
(1)先运行:alter session set sql_trace=true;
(2)再运行你那个返回结果不正确的SQL
(3)再运行:alter session set sql_trace=false;
(4)马上登陆到机器上,到$ORACLE_BASE/admin/sid/udump目录下。找到刚生成的.trc文件(假设文件名是1234455.trc)。执行命令:tkprof 1234455.trc aa.txt。查看aa.txt文件。这个文件里面有执行计划。看看执行计划每一步返回的结果集记录数是不是正确。

四、通过10053事件来查看,这里面可以查到一些关于SQL成本的详细信息

在pl/sql或者sqlplus中,打开一个sql_window。
(1)先运行:Alter session set events’10053 trace name context forever[,level {1/2}]’;

(2)再运行你那个返回结果不正确的SQL
(3)再运行:Alter session set events’10053 trace name context off’;

(4)马上登陆到10.1.4.10机器上,到$ORACLE_BASE/admin/sid/udump目录下。找到刚生成的.trc文件)。

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

转载于:http://blog.itpub.net/70109/viewspace-687803/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值