用utlxplan.sql建立PLAN_TABLE表
输入“SET AUTOTRACE ON”,然后运行待调试的SQL语句。在给出查询结果后,ORACLE将显示相应的“执行计划”,包括优化器类型、执行代价、连接方式、连接顺序、数据搜索路径以及相应的连续读、物理读等资源代价。
但是plan_table表里面都没有内容
怎么回事?
exection plan应该到那个表或者视图中去找?

解决方案 »

  1.   

    1、执行解释
    explain plan 
    set statement_id='TEST'
    for
    select ....(你的待调试SQL语句)2、查看调试结果
      select * from plan_talbe where statement_id='TEST'
      

  2.   

    SET AUTOTRACE ON
    will not insert any records in plan table . But I feel it is enough to display them on the screen
      

  3.   

    谢谢armu80830(此情可待) 
    plan_talbe 不是一个视图或者表吗,除了在sqlplus中用select查看以外,没有别的办法了吗
      

  4.   

    plan_talbe是一个表,oracle有此解释.还可以用pl/sql developer工具作测试,比较方便.
      

  5.   

    plan_table是一个表的话,那调试的记录保存在这个表里面吗?
      

  6.   

    调试记录是不会记载这个表中的
    这个表是用来分析sql语句的执行计划.
    %oracle_home%\rdbms\admin\utlxpls.sql可以用来格式化显示最近的一条执行计划!
    当然要想把执行计划和相应的统计信息显示完全,还要配置一些其他的参数!
      

  7.   

    用 explain plan 语句会把分析结果自动追加到 plan_table 里,所以执行完 explain plan 之后,plan_table 里会有数据,除非你删除,否则这些数据一直在。
    但是在 sqlplus 里使用 set autotrace 则稍微有些不一样,因为 sqlplus 实际是与 oracle 内核交互的一个壳(shell),aotutrace 会借用 plan_table 暂时存储数据,但是显示结束之后,会自动删除 plan_table 里的相关纪录,所以当你是用 set autotrace 的时候,查询 plan_table 不会有记录。
      

  8.   

    to wenzhulz(触丝) 
    “用 explain plan 语句会把分析结果自动追加到 plan_table 里,所以执行完 explain plan 之后,plan_table 里会有数据,除非你删除,否则这些数据一直在。”
    请问怎么运行explain plan,不是在sqlplus里面运行吗?
      

  9.   

    只需在待调试的SQL语句前加 explain plan 就行。看 oracle 的文档中,关于 explain plan 的语法