【转 oracle 监控执行计划突然变化】教程文章相关的互联网学习教程文章

在Oracle中,如何得到真实的执行计划?

一、 如何得到真实的执行计划? 在Oracle数据库中判断得到的执行计划是否准确,就是看目标SQL是否被真正执行过,真正执行过的SQL所对应的执行计划就是准确的,反之则有可能不准,因此,通过10046事件及如下的几种方式得到的执行计划是最准确的,而从其它方式获取到的执行计划都有可能不准确。SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, ADVANCED ALLSTATS));SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(sql_...

Oracle执行计划filter下多个节点的优化

Oracle执行计划filter下多个节点的优化 FILTER操作是执行计划中常见的操作,这种操作有两种情况: l 只有一个子节点,那么就是简单过滤操作。l 有多个子节点,那么就是类似NESTED LOOPS操作,只不过与NESTED LOOPS差别在于,FILTER内部会构建HASH表,对于重复匹配的,不会再次进行循环查找,而是利用已有结果,提高效率。但是一旦重复匹配的较少,循环次数多,那么,FILTER操作将是严重影响性能的操作,可能你的SQL几天都执行不完了...

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

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

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

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

【SPM】oracle如何固定执行计划【图】

【SPM】oracle如何固定执行计划 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读和注意事项各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~:① 固定执行计划的常用方法:outline、SQL Profile、SPM(重点)② coe_xfr_sql_profile.sql脚本的使用 Tips: ① 若文章代码格式有错乱,推荐使用QQ、搜狗或360浏览器,也可以下载pdf格式的文档来查看,pdf文档下载地址:...

【SPM】oracle如何固定执行计划【图】

一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读和注意事项各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~:① 固定执行计划的常用方法:outline、SQL Profile、SPM(重点)② coe_xfr_sql_profile.sql脚本的使用 Tips: ① 若文章代码格式有错乱,推荐使用QQ、搜狗或360浏览器,也可以下载pdf格式的文档来查看,pdf文档下载地址:http://yunpan.cn/cdEQedhCs2kF...

Oracle执行计划详解【代码】【图】

定义 执行计划是一条查询语句在Oracle中的执行过程或访问路径的描述。组成目标SQL的正文、sql_id和执行计划对应的plan_hash_value执行计划主体,主要有内部执行步骤、执行顺序、谓词信息、列信息、Cardinality、Cost等执行计划的额外补充信息,是否动态采用(dynamic sampling)、是否Cardinality Feedback、是否SQL Profile模块解读 主体HeaderID:序号 Operation: 当前操作的内容 Rows: 当前操作的Cardinality,Oracle估计当前...

Oracle 执行计划(Explain Plan)【代码】

Oracle 执行计划(Explain Plan)执行计划:一条查询语句在ORACLE中的执行过程或访问路径的描述。即就是对一个查询任务,做出一份怎样去完成任务的详细方案。 如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQL的每一步执行是否存在问题。 看懂执行计划也就成了SQL优化的先决条件。 通过执行计划定位性能问题,定位后就通过建立索引、修改sql等解决问题。 一、执行计划的查看 1.1 设置autotrace autotrace命令如...

Oracle数据迁移后由列的直方图统计信息引起的执行计划异常【代码】

(一)问题背景在使用impdp进行数据导入的时候,往往在导入表和索引的统计信息的时候,速度非常慢,因此我在使用impdp进行导入时,会使用exclude=table_statistics排除表的统计信息,从而加快导入速度,之后再手动收集统计信息。 图.impdp导入数据的时导入统计信息速度非常慢导入语句如下:impdp user/password directory=DUMPDIR dumpfile=TEST01.dmp logfile=TEST01.log remap_sch...

看懂Oracle执行计划

一:什么是Oracle执行计划? 执行计划是一条查询语句在Oracle中的执行过程或访问路径的描述 二:怎样查看Oracle执行计划? 因为我一直用的PLSQL远程连接的公司数据库,所以这里以PLSQL为例: ①:配置执行计划需要显示的项: 工具 —> 首选项 —> 窗口类型 —> 计划窗口 —> 根据需要配置要显示在执行计划中的列执行计划的常用列字段解释: 基数(Rows):Oracle估计的当前操作的返回结果集行数 字节(Bytes):执行该...

oracle查看执行计划【代码】

SQL> explain plan for select * from emp; ExplainedSQL> select * from table(dbms_xplan.display()); PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------- Plan hash value: 3956160932 -------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------...

查看Oracle执行计划的几种常用方法-系列1【图】

SQL的执行计划实际代表了目标SQL在Oracle数据库内部的具体执行步骤,作为调优,只有知道了优化器选择的执行计划是否为当前情形下最优的执行计划,才能够知道下一步往什么方向。 执行计划的定义:执行目标SQL的所有步骤的组合。 我们首先列出查看执行计划的一些常用方法: 1. explain plan命令 PL/SQL Developer中通过快捷键F5就可以查看目标SQL的执行计划了。但其实按下F5后,实际后台调用的就是explain plan命令,相当于封装了该命...

oracle里面常见的执行计划以及执行计划的调整

一.查看执行计划: 先从开头一直连续往右看,直到看到最右边的并列的地方,对于不并列的,靠右的先执行;如果见到并列的,就从上往下看,对于并列的部分,考上的先执行。 总结两个字: 右 上 二.oracle里面常见的执行计划 2.1.与表访问相关的执行计划 全表扫描:(TABLE ACCESS BY ROWID) rowid扫描:(TABLE ACCESS BY USER ROWID或者TABLE ACCESS BY INDEX ROWID) 2.2.与B树索引相关的执行计划 索引唯一扫描:index unique sc...

Oracle执行计划2(Explain Plan)【图】

一、获取执行计划的方法 (1) explain plan for 步骤:1:explain plan for 你的SQL; 2:select * from table (dbms_xplan. display()) ;优点:不需要真的执行,快捷方便 缺点:没有输出运行时的统计信息(逻辑读、递归调用,物理读),因为没有真正执行,所以不能看到执行了多少行、表被访问了多少次等等(2) set autotrace on sqlplus登录: 用户名/密码@主机名称:1521/数据库名步骤:1:set sutoatrace on 2:在此次执行你的sql;优点...

oracle 11g 执行计划 笛卡尔积 处理

开发说一SQL查不出来,语句很简单,查一个视图,条件就工号, 看执行计划有笛卡尔积: MERGE JOIN CARTESIAN 查视图代码关联条件都是OK的,代码么有错 1, 增加提示 /*+ ordered */ ,2秒出来。 select?/*+?ordered?*/? ... from? ..? 2, 但是代码没法改,在执行下统计信息收集, ? ? ?视图对应的表太多了, 查执行计划用到的表 : select DISTINCT OBJECT_OWNER, OBJECT_NAME from v$sql_planwhere sql_id =am8zzd3tqfz67AND ...