Oracle数据库如何搜集指定SQL的执行计划和解决过程中的ORA-00904错误

   Oracle 数据库如何搜集指定SQL的执行计划和解决过程中的ORA-00904错误

  (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处;否则请与本人联系,违者必究)

  如何收集指定SQL的执行计划对开发人员来说非常重要的,这里记录下基础的收集方式,以便查阅和其他人参考。

  1. 链接到sqlplus,如下图


  2. 执行下面两个的命令之一

  set autotrace on; (说明:打开自动分析统计,并显示SQL语句的运行结果)

  3. 输入并执行要搜集执行计划的SQL语句。


  4. 这样执行计划就会打印出来。如上图

  <喎�"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD48cD7I57n71NrK1byvtcS5/bPM1tDT9rW9T1JBLTAwOTA0OiZxdW90O09USEVSX1RBRyZx

dW90Ozqx6sq2t/vO3tCntcTOyszio6zI58/Czbw8L3A+PHA+PGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/

20140403/201404030849428.jpg" alt="" />

  那么我们需要

  1. 先drop掉表plan_table;

  2. 使用@$ORACLE_HOME/rdbms/admin/utlxplan.sql重建plan_table;如下图


  3. 重建完之后的搜集执行计划的效果如下。

时间: 2024-09-17 04:40:58

Oracle数据库如何搜集指定SQL的执行计划和解决过程中的ORA-00904错误的相关文章

ORACLE从共享池删除指定SQL的执行计划

Oracle 11g在DBMS_SHARED_POOL包中引入了一个名为PURGE的新存储过程,用于从对象库缓存中刷新特定对象,例如游标,包,序列,触发器等.也就是说可以删除.清理特定SQL的执行计划,这样在特殊情况下,就避免你要将整个SHARED POOL清空的危险情况.例如某个SQL语句由于优化器产生了错误的执行计划,我们希望优化器重新解析,生成新的执行计划,必须先将SQL的执行计划从共享池中刷出或将其置为无效,那么优化器才能将后续SQL进行硬解析.生成新的执行计划.这在以前只能使用清空共享

【OUTLINE】使用Oracle Outline技术暂时锁定SQL的执行计划

  Oracle的Outline技术可以在特殊情况下保证执行计划的稳定性.在极端情况下可以使用此项技术实现暂时锁定执行计划的目的.  主要使用场景如下:  ①短时间内无法完成SQL的优化任务,此时可以使用outline暂时锁定SQL执行计划:  ②在CBO优化模式下,当统计信息出现问题时,会导致执行计划出现异常变化,此时可以使用outline暂时调整SQL执行计划:  ③由于数据库的bug导致SQL的执行计划出现异常,使用outline锁定执行计划.   记录一下关于outline的使用方法,供

【DBAplus】深入Oracle优化器:一条诡异执行计划的解决之道

深入Oracle优化器:一条诡异执行计划的解决之道 DBAplus社群 | 2016-05-05 19:51 CBO计算成本并选择最佳执行计划的至关重要输入物就是表和索引的统计信息,过旧或错误的统计信息则可能导致一个性能极差的执行计划被错误地选中.本文将以一个案例展示诡异的统计信息如何影响执行计划的生成. 1案例介绍 这是一个简单的sql,近两个月来对于告警明细表(分区)做月度汇总查询时,总是出现了异常缓慢的情况. 测试SQL: 字段NEALARM_TIME是固定条件,字段RELATED_EMS

深入Oracle优化器:一条诡异执行计划的解决之道

CBO计算成本并选择最佳执行计划的至关重要输入物就是表和索引的统计信息,过旧或错误的统计信息则可能导致一个性能极差的执行计划被错误地选中.本文将以一个案例展示诡异的统计信息如何影响执行计划的生成. 1案例介绍    这是一个简单的sql,近两个月来对于告警明细表(分区)做月度汇总查询时,总是出现了异常缓慢的情况. 测试SQL: 字段NEALARM_TIME是固定条件,字段RELATED_EMS_CUID是不固定的(这些不固定条件的选择性都不强),分区裁剪到的分区有着1~3月份的数据. 关于HIS

oracle 数据库用的plsql工具,执行的sql按F5查看cpu耗费,请教高手帮忙解答!

问题描述 oracle 数据库用的plsql工具,执行的sql按F5查看cpu耗费,请教高手帮忙解答! 主要区别在于走索引,走了索引,耗费降低,但是执行速度变慢了,但是不走索引,执行速度变快了,但是耗费上升!请问原因是什么?是不是意味着,耗费越高,执行速度越快吗?还是两者没有必然联系?我们在设计sql时,是要先考虑哪方面? 解决方案 楼主 你知不知道索引的意思? 索引类似书的目录结构,按照索引查找执行速度怎么变慢了呢? 至于耗费和速度的关系就如同你跑步一样的 你费力气点跑,就跑的快一点 你省力气

探讨:Oracle数据库查看一个进程是如何执行相关的实际SQL语句_oracle

Oracle数据库查看一个进程是如何执行相关的实际SQL语句 复制代码 代码如下: SELECT b.sql_text, sid, serial#, osuser, machine      FROM v$session a, v$sqlarea b      WHERE a.sql_address = b.address;  查询前台发出的SQL语句. 复制代码 代码如下: select user_name,sql_text  from v$open_cursor  where sid in

把Oracle数据库移植到Microsoft SQL Server 7.0

oracle|server|数据|数据库  把Oracle数据库移植到Microsoft SQL Server 7.0 摘要:本文是为那些想把自己的Oracle应用程序转换为Microsoft SQL Server应用程序的开发人员编写的.本文描述了一个成功的转换所需要的工具.过程和技术.同时强调了建立高性能.高度并行的SQL Server应用程序的基本的设计要素. 本文的读者应该具有: Oracle关系型数据管理系统(RDBMS)的坚实基础. 普通数据库管理知识. 熟悉Oracle SQL和P

求oracle数据库的分页显示sql语句

问题描述 求oracle数据库的分页显示sql语句 求大神告知oracle数据库的分页显示sql语句,用rownum查不到 解决方案 http://www.cnblogs.com/xiaopang2010/archive/2012/07/23/2604880.htmlhttp://www.2cto.com/database/201304/206296.html 解决方案二: String querySql = ""; querySql += "select x.* from

Oracle 历史SQL语句执行计划的对比与分析

    基于CBO优化器的环境中,SQL执行计划的生成依赖于统计信息的真实与完整.如列的离散度,列上的直方图,索引的可用性,索引上的聚簇因子.当这些信息是真实完整的情况下,CBO优化器通常都可以制定最优的执行计划.也正因此CBO优化器也灵活,难以控制,任一信息的不真实或缺失都可能导致执行计划发生变化而产生多个版本.经常碰到的情形是之前的某个SQL语句前阵子还不是TOP SQL,而最近变成了TOP SQL.或者说之前尽管是TOP SQL但,但最近尽然成了TOP 1.对于此情形,我们可以比对SQL语