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

基于CBO优化器的环境中,SQL执行计划的生成依赖于统计信息的真实与完整。如列的离散度,列上的直方图,索引的可用性,索引上的聚

基于cbo优化器的环境中,sql执行计划的生成依赖于统计信息的真实与完整。如列的离散度,列上的直方图,,索引的可用性,索引上的聚簇因子。当这些信息是真实完整的情况下,cbo优化器通常都可以制定最优的执行计划。也正因此cbo优化器也灵活,难以控制,任一信息的不真实或缺失都可能导致执行计划发生变化而产生多个版本。经常碰到的情形是之前的某个sql语句前阵子还不是top sql,而最近变成了top sql。或者说之前尽管是top sql但,但最近尽然成了top 1。对于此情形,我们可以比对sql语句的历史执行计划进行分析是何种原因导致sql变慢或执行计划发生变化。下面通过例子来模拟sql执行计划变异的情形。
 
1、创建演示环境

–演示环境
scott@SYBO2SZ> select * from v$version where rownum

BANNER
—————————————————————-
Oracle Database 10g Release 10.2.0.3.0 – 64bit Production

–创建1000000万记录的表
scott@SYBO2SZ> @cr_big_tb

check total rows  for big_table
====================================
  COUNT(*)
———-
  1000000

–为表创建索引
scott@SYBO2SZ> create index i_big_tb_owner on big_table(owner);

sys@SYBO2SZ> conn / as sysdba;

sys@SYBO2SZ> select snap_id from dba_hist_snapshot order by snap_id;

  SNAP_ID
———-
        30
        31

–清除awr的历史记录,shared pool及buffer cache       
sys@SYBO2SZ> exec dbms_workload_repository.drop_snapshot_range(30,31);

sys@SYBO2SZ> alter system flush shared_pool;

sys@SYBO2SZ> alter system flush buffer_cache;

–清除dba_hist_sql_plan视图,实际上清除wrh$_sql_plan,wrh$_sqltext,wrh$_sqlstat
sys@SYBO2SZ> truncate table wrh$_sql_plan;

–清除dba_hist_sql_sqltext以及dba_hist_sqlstat视图

sys@SYBO2SZ> truncate table wrh$_sqltext;

sys@SYBO2SZ> truncate table wrh$_sqlstat;

sys@SYBO2SZ> select count(*) from dba_hist_sql_plan;

  COUNT(*)
———-
        0

sys@SYBO2SZ> select count(*) from dba_hist_sqltext;

  COUNT(*)
———-
        0

linux

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1890589.html

(0)
上一篇 2025年2月22日 13:06:07
下一篇 2025年2月22日 13:06:46

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Oracle约束Constraint对于CBO优化器的作用

    进入CBO优化器时代之后,成本计算值决定执行计划的选取已经成为主流。一条性能良好的执行计划建立在尽可能ldquo;贴切rdquo;的统 进入cbo优化器时代之后,成本计算值决定执行计划的选取已经成为主流。一条性能良好的执行计划建立在尽可能“…

    数据库 2025年2月23日
    100
  • sqlldr批量导入导出数据测试

    %ignore_a_1%是在处理大数据量的操作中建议采用的方式,它有许多性能想关的开关,能最大程度的减少redo,undo的生成,控制数据的处理方式 sqlldr是在处理大数据量的操作中建议采用的方式,它有许多性能想关的开关,能最大程度的减…

    数据库 2025年2月23日
    100
  • Oracle SQL 执行计划和分析小结

    Oracle有多种方式获得一条SQL语句的查询计划,比如使用explain plan命令,在PLSQL Developer里面按F5快捷键等,但是作为SQL调优, oracle有多种方式获得一条sql语句的查询计划,比如使用explain …

    数据库 2025年2月23日
    100
  • DML操作 DDL触发器

    今天应用方告诉我,一个DML操作导致%ignore_a_1%报错,说ldquo;ORA-234567,不允许开发执行DDL操作,请联系DBArdquo;为了安全,DBA在 今天应用方告诉我,一个dml操作导致数据库报错,说“ora-2345…

    数据库 2025年2月23日
    100
  • Oracle 10g升级Cluster失败

    今天升级一个Oracle 10g的集群环境到10.2.0.5,网上下载补丁包p8202632_10205_Linux-x86-64.zip,解压后安装执行,中途报错:I/O 今天升级一个oracle 10g的集群环境到10.2.0.5,网上…

    数据库 2025年2月23日
    100
  • MySQL字符集继承关系验证

    (1)创建%ignore_a_1%时不指定字符集会继承服务器字符集 Server characterset: utf8 Db characterset: latin1 mysqlgt; show g (1)创建数据库时不指定字符集会继承服务…

    数据库 2025年2月23日
    100
  • MYSQL的模式查询

    另外一种是用正则表达式匹配。 如查询所有owner为#39;陈…#39;的pet. select * from pet where owner regexp #39;^陈#39;; 或select * 假设MYSQL有一%ign…

    数据库 2025年2月23日
    100
  • 让两个ORACLE数据库和平共处

    假如你安装了ORACLE9I ,然后再安装了ORACLE10G,在用TOAD或者是PLSQL Developer工具时,选择%ignore_a_1%就会屏蔽了9I数据库的SERVICES 假如你安装了Oracle9I ,然后再安装了ORAC…

    数据库 2025年2月23日
    100
  • Oracle客户端出现乱码的解决

    Unix:# 常用unicode字符集export NLS_LANG=american_america.AL32UTF8# 常用中文字符集export NLS_LANG=quot;Simplified Chines 1. NLS_LANG …

    数据库 2025年2月23日
    100
  • 简单的Oracle小问题解决

    前两天过完年回北京,结果一上班就碰到一个问题:公司在深圳那边有一个Oracle项目,一次系统重启后Oracle%ignore_a_1%就无法连接了。项目开发人员   前两天过完年回北京,结果一上班就碰到一个问题:公司在深圳那边有一个Orac…

    数据库 2025年2月23日
    100

发表回复

登录后才能评论