ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle9i 执行计划(转)

Oracle9i 执行计划(转)

原创 Linux操作系统 作者:wdnmg 时间:2011-02-23 21:58:09 0 删除 编辑

以下命令用于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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-01-31

  • 博文量
    53
  • 访问量
    145434