用utlxplan.sql建立PLAN_TABLE表
输入“SET AUTOTRACE ON”,然后运行待调试的SQL语句。在给出查询结果后,ORACLE将显示相应的“执行计划”,包括优化器类型、执行代价、连接方式、连接顺序、数据搜索路径以及相应的连续读、物理读等资源代价。
但是plan_table表里面都没有内容
怎么回事?
exection plan应该到那个表或者视图中去找?
输入“SET AUTOTRACE ON”,然后运行待调试的SQL语句。在给出查询结果后,ORACLE将显示相应的“执行计划”,包括优化器类型、执行代价、连接方式、连接顺序、数据搜索路径以及相应的连续读、物理读等资源代价。
但是plan_table表里面都没有内容
怎么回事?
exection plan应该到那个表或者视图中去找?
explain plan
set statement_id='TEST'
for
select ....(你的待调试SQL语句)2、查看调试结果
select * from plan_talbe where statement_id='TEST'
will not insert any records in plan table . But I feel it is enough to display them on the screen
plan_talbe 不是一个视图或者表吗,除了在sqlplus中用select查看以外,没有别的办法了吗
这个表是用来分析sql语句的执行计划.
%oracle_home%\rdbms\admin\utlxpls.sql可以用来格式化显示最近的一条执行计划!
当然要想把执行计划和相应的统计信息显示完全,还要配置一些其他的参数!
但是在 sqlplus 里使用 set autotrace 则稍微有些不一样,因为 sqlplus 实际是与 oracle 内核交互的一个壳(shell),aotutrace 会借用 plan_table 暂时存储数据,但是显示结束之后,会自动删除 plan_table 里的相关纪录,所以当你是用 set autotrace 的时候,查询 plan_table 不会有记录。
“用 explain plan 语句会把分析结果自动追加到 plan_table 里,所以执行完 explain plan 之后,plan_table 里会有数据,除非你删除,否则这些数据一直在。”
请问怎么运行explain plan,不是在sqlplus里面运行吗?