oracle 数据统计收集,Oracle 10g收集数据库统计信息
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收集数据库统计信息相关推荐
- oracle查询一列汇总,【学习笔记】Oracle数据筛选 查找oracle所有表中的特定列中的某些数据...
天萃荷净 开发DBA反映,根据需求需要查找Oracle数据库中所有表中特定的列中指定的关键词的数据,和数据内容和数量 找出数据库中所有表表中REMARK列中含有WN.wind.wlr中表名和数量 de ...
- 彻底删除oracle数据,彻底删除Oracle数据库的方法
1.关闭oracle所有的服务.可以在windows的服务管理器中关闭: 2.打开注册表:regedit 打开路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlS ...
- oracle数据文件离线,oracle数据库的文件在哪里
Oracle体系结构 Oracle 服务器由Oracle实例与Oracle数据库组成 Oracle实例(instance),通过ORACLE_SID来引导(Oracle标识) 单实例情况下:Oracl ...
- oracle数据物理结构包括,Oracle数据库的物理结构介绍
Oracle数据库现以发展最为抢手,那么你对它的实际应用以及相关功能特性了解的又有多少呢?以下的文章主要是向你介绍Oracel的初步认识,你如果是Oracle数据库的疯狂一族的话,以下的文章,你一定不 ...
- oracle数据备份 full,oracle数据库备份 full
通过exp命令对Oracle数据库进行备份操作(提供两种情况的备份:备份本地,备份远程的数据库) 通过exp命令可以对Oracle数据库进行备份操作,其命令含义是:exp 用户名/密码@数据库所在ip ...
- Oracle数据二进制传输,Oracle数据库插入二进制字段数据
oracle数据库喜欢搞特殊,二进制字段数据不能直接插入,需先再该字段插入oracle函数返回的的初始数据,然后在查询更新该字段.下面以Blob字段类型为例: 1.插入初始数据 Class.forNa ...
- oracle数据插入覆盖,oracle数据库覆盖导入
oracle数据库备份(导入导出dmp)_IT/计算机_专业资料.包括远程连接 ... oracle数据库导入导出命令_计算机软件及应用_IT/计算机_专业资料.Oracle 数据导入导出 imp/e ...
- oracle数据库函数mod,oracle数据库常用函数
1.看当前数据库的名字 select name from v$database 2.查看当前数据库实例名 select instance_name from v$instance show param ...
- 修改oracle数据连接数据库,修改Oracle数据库的连接数
修改Oracle数据库的连接数 摘(一) 使用sys,以sysdba权限登录: SQL>conn / as sysdba 1. 查看processes和sessions参数 SQL> sh ...
- oracle数据文件编号,oracle中表空间与数据文件编号的连续性
ORACLE中表空间编号与数据文件编号都是连续的,不会断号.如果TS$中表空间出现了断号, oracle在启动时会进行数据字典和控制文件的校验,发现不一致时,数据库不能正常启动. 表空间被删除时ts$ ...
最新文章
- 网页版登录入口_企业微信网页版怎么登录?企业微信客户端和网页版有什么区别?...
- 行为型模式:状态模式
- 第九章 隐马尔科夫模型HMM
- 8.String、StringBuffer、enum枚举
- 每日一道算法题--leetcode 746--使用最小花费爬楼梯--python
- python3.6中内置函数变化
- 架构整洁之道:优秀设计或多余,有效设计最可取
- 单片机原理及应用姜志海pdf_单片机原理及应用.pdf
- linux添加源地址ping,Linux下指定源ip进行ping操作的方法
- 吉比特2018校招 走格子游戏
- 名词性短语和名词性从句
- 计算机开机连不上网,我家电脑有时候开机为什么连不上网,重启以后就好?
- 从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t。
- 20 行 Python 代码批量抓取免费高清图片!
- 单细胞测序流程(九)单细胞的GO圈图
- 国外问卷调查是真的么?
- SONiC Warm Reboot
- Audio Codec
- 关于5G时延的深度解读,非常详尽
- TCP FIN_WAIT2由来
热门文章
- 《Excel最强功能-数据透视表》 网课笔记
- php模型分页代码,ThinkPHP6.0模型关联分页
- InfluxData【付诸实践 01】SpringBoot 集成时序数据库 InfluxDB 应用分享(InfluxDB实例+Feign接口调用InfluxDB API)源码分享
- 【Linux环境】阿里云CPU使用率 100% ECS 同时连接数峰值 25k+ 问题排查无果(附阿里云重新初始化云盘详细步骤)
- 【多线程高并发】深入浅出原子性
- Windows10——荣耀笔记本任务栏图标显示异常且无显示/隐藏图标的箭头解决方案
- C#——实现IComparableT 接口,ArrayLIst调用ArrayLIst.Sort()抛出System.InvalidOperationException异常解决方案
- Superhero Transformation
- 最大公约数(Greatest_Common_Divisor)
- memcached+magent实现memcached集群