1.需求概述

某数据库由于整体统计信息不准确,多次出现部分业务SQL选错执行计划,从而导致性能下降影响到最终用户体验,目前通过SQL_PROFILE绑定执行计划临时解决,但此方法不够灵活,后续维护工作量也会增加。

Oracle优化器(CBO)依赖数据库统计信息来计算目标SQL各种可能的执行路径的成本,并从中选择一条成本值最小的执行路径来作为目标SQL的执行计划。如果统计信息不准确甚至是错误,会导致优化器选择错误SQL执行计划的概率大大增加。

目前计划对该数据库统计信息进行重新收集,因为生产环境的复杂性,不排除重新收集正确的统计信息后,整体性能反而下降的情况。故而在收集之前需要对原有的统计信息做好备份,如发现收集后性能反而下降的极端情况,也可以快速回退到原有的统计信息。

2.实施步骤

2.1备份当前数据库统计信息

备份当前数据库的统计信息,建议备份后再导出一份留存:

--备份当前数据库的统计信息:

begin

DBMS_STATS.CREATE_STAT_TABLE('SYSTEM','DB_STATS_20190118');

DBMS_STATS.EXPORT_DATABASE_STATS(STATTAB => 'DB_STATS_20190118', STATOWN => 'SYSTEM');

end;

/

--备份后再导出一份留存

expdp \'/ as sysdba\' directory=DATA_PUMP_DIR dumpfile=stats.dmp logfile=stats.log tables=system.db_stats_20190118

2.2收集数据库统计信息

收集数据库的统计信息,需要在业务闲时操作:

--开启计时

set timing on

--开始收集全库统计信息

begin

dbms_stats.gather_database_stats(

ESTIMATE_PERCENT=>DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'for all indexed columns', cascade=>true, degree=>16);

end;

/

注意:degree的值并不是设置越高就越快,同时要根据实际CPU具体情况来设置。

如果数据库是11.2.0.2及以上版本,还可以通过DBMS_STATS.SET_GLOBAL_PREFS设置并发收集进一步提升收集效率,具体可参考:

3.回退方案

3.1正常回退

收集统计信息后发现性能大幅下降,正常回退,直接将原统计信息导入:

--正常回退,直接将原统计信息导入:

exec DBMS_STATS.IMPORT_DATABASE_STATS (STATTAB => 'DB_STATS_20190118', STATOWN => 'SYSTEM');

3.2其他情况

如果DB_STATS_20190118被损坏,可以删除后使用之前的备份导入:

--删除DB_STATS_20190118:

exec DBMS_STATS.DROP_STAT_TABLE ('SYSTEM','DB_STATS_20190118');

--使用之前的备份导入DB_STATS_20190118:

impdp \'/ as sysdba\' directory=DATA_PUMP_DIR dumpfile=stats.dmp logfile=stats.log

oracle 数据统计收集,Oracle 10g收集数据库统计信息相关推荐

  1. oracle查询一列汇总,【学习笔记】Oracle数据筛选 查找oracle所有表中的特定列中的某些数据...

    天萃荷净 开发DBA反映,根据需求需要查找Oracle数据库中所有表中特定的列中指定的关键词的数据,和数据内容和数量 找出数据库中所有表表中REMARK列中含有WN.wind.wlr中表名和数量 de ...

  2. 彻底删除oracle数据,彻底删除Oracle数据库的方法

    1.关闭oracle所有的服务.可以在windows的服务管理器中关闭: 2.打开注册表:regedit 打开路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlS ...

  3. oracle数据文件离线,oracle数据库的文件在哪里

    Oracle体系结构 Oracle 服务器由Oracle实例与Oracle数据库组成 Oracle实例(instance),通过ORACLE_SID来引导(Oracle标识) 单实例情况下:Oracl ...

  4. oracle数据物理结构包括,Oracle数据库的物理结构介绍

    Oracle数据库现以发展最为抢手,那么你对它的实际应用以及相关功能特性了解的又有多少呢?以下的文章主要是向你介绍Oracel的初步认识,你如果是Oracle数据库的疯狂一族的话,以下的文章,你一定不 ...

  5. oracle数据备份 full,oracle数据库备份 full

    通过exp命令对Oracle数据库进行备份操作(提供两种情况的备份:备份本地,备份远程的数据库) 通过exp命令可以对Oracle数据库进行备份操作,其命令含义是:exp 用户名/密码@数据库所在ip ...

  6. Oracle数据二进制传输,Oracle数据库插入二进制字段数据

    oracle数据库喜欢搞特殊,二进制字段数据不能直接插入,需先再该字段插入oracle函数返回的的初始数据,然后在查询更新该字段.下面以Blob字段类型为例: 1.插入初始数据 Class.forNa ...

  7. oracle数据插入覆盖,oracle数据库覆盖导入

    oracle数据库备份(导入导出dmp)_IT/计算机_专业资料.包括远程连接 ... oracle数据库导入导出命令_计算机软件及应用_IT/计算机_专业资料.Oracle 数据导入导出 imp/e ...

  8. oracle数据库函数mod,oracle数据库常用函数

    1.看当前数据库的名字 select name from v$database 2.查看当前数据库实例名 select instance_name from v$instance show param ...

  9. 修改oracle数据连接数据库,修改Oracle数据库的连接数

    修改Oracle数据库的连接数 摘(一) 使用sys,以sysdba权限登录: SQL>conn / as sysdba 1. 查看processes和sessions参数 SQL> sh ...

  10. oracle数据文件编号,oracle中表空间与数据文件编号的连续性

    ORACLE中表空间编号与数据文件编号都是连续的,不会断号.如果TS$中表空间出现了断号, oracle在启动时会进行数据字典和控制文件的校验,发现不一致时,数据库不能正常启动. 表空间被删除时ts$ ...

最新文章

  1. 网页版登录入口_企业微信网页版怎么登录?企业微信客户端和网页版有什么区别?...
  2. 行为型模式:状态模式
  3. 第九章 隐马尔科夫模型HMM
  4. 8.String、StringBuffer、enum枚举
  5. 每日一道算法题--leetcode 746--使用最小花费爬楼梯--python
  6. python3.6中内置函数变化
  7. 架构整洁之道:优秀设计或多余,有效设计最可取
  8. 单片机原理及应用姜志海pdf_单片机原理及应用.pdf
  9. linux添加源地址ping,Linux下指定源ip进行ping操作的方法
  10. 吉比特2018校招 走格子游戏
  11. 名词性短语和名词性从句
  12. 计算机开机连不上网,我家电脑有时候开机为什么连不上网,重启以后就好?
  13. 从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t。
  14. 20 行 Python 代码批量抓取免费高清图片!
  15. 单细胞测序流程(九)单细胞的GO圈图
  16. 国外问卷调查是真的么?
  17. SONiC Warm Reboot
  18. Audio Codec
  19. 关于5G时延的深度解读,非常详尽
  20. TCP FIN_WAIT2由来

热门文章

  1. 《Excel最强功能-数据透视表》 网课笔记
  2. php模型分页代码,ThinkPHP6.0模型关联分页
  3. InfluxData【付诸实践 01】SpringBoot 集成时序数据库 InfluxDB 应用分享(InfluxDB实例+Feign接口调用InfluxDB API)源码分享
  4. 【Linux环境】阿里云CPU使用率 100% ECS 同时连接数峰值 25k+ 问题排查无果(附阿里云重新初始化云盘详细步骤)
  5. 【多线程高并发】深入浅出原子性
  6. Windows10——荣耀笔记本任务栏图标显示异常且无显示/隐藏图标的箭头解决方案
  7. C#——实现IComparableT 接口,ArrayLIst调用ArrayLIst.Sort()抛出System.InvalidOperationException异常解决方案
  8. Superhero Transformation
  9. 最大公约数(Greatest_Common_Divisor)
  10. memcached+magent实现memcached集群