首页
学习
活动
专区
工具
TVP
发布

Oracle 还原历史统计信息

统计信息是个非常有用的东东,没有它,SQL优化器就好比巧妇难为无米之炊!良好高效的SQL执行计划依赖于真实的统计信息。...然而在有些情况下,比如对比生产环境与测试环境执行计划,需要使用生产环境的统计信息。而有时候呢则需要还原Oracle历史统计信息。...本文基于后者即如何还原历史统计信息来展开,同时描述了11g缺省情况下对于统计信息的调度。      ...有关统计信息的导入导出可以参考: dbms_stats 导入导出 schema 级别统计信息 dbms_stats 导入导出表统计信息 1、演示环境 sys@MMBO> select * from...(11g) 缺省情况下,Oracle为我们定义了收集统计信息的scheduler,下面列出来在Oracle 11g配置的关于自动收集统计信息的scheduler。

91510
您找到你想要的搜索结果了吗?
是的
没有找到

Oracle统计信息的那点事儿

引言 在Oracle的11g版本中,统计信息为自动收集功能,在部署安装11g Oracle软件过程中,其中有一个步骤便是提示是否启动这个功能(默认是启用这个功能);且有时候在生产环境中,还会对一些对象做手动统计信息的搜集...因平时接触此部分内容不是很频繁,但统计信息的搜集无疑又很重要,故本文对自动统计信息搜集及常规操作做下介绍。 大纲 1. 什么是统计信息 2. Oracle统计信息自动搜集策略 3....什么是统计信息统计信息前,先要说下Oracle的优化器。 Oracle数据库中的优化器又叫查询优化器(Query Optimizer)。...Oracle统计信息自动搜集策略 接下来讲一讲统计信息收集那点事。统计信息可分为自动收集和手动收集。...这个功能貌似带来了统计数据采集上的便捷,但是Oracle 11g自动收集统计信息的时间是22:00--2:00。 这个时间段往往是业务的高峰期,给本已紧张的系统带来更大的负担。

1.6K20

Oracle并发(CONCURREMT)收集统计信息

编辑手记:从11.2开始,可以通过CONCURRENT参数,启用表或分区的并行扫描,加快统计信息的收集速度。 作者简介:何剑敏 Oracle ACS华南区售后团队,首席技术工程师。...在oracle 11.2.0.2之后,就有了一个参数,可以并发扫描表(或者分区),这就是CONCURRENT参数。 可以通过以下语句看到你的数据库是否启用了CONCURRENT收集统计信息。...用concurrent收集统计信息,需要收集统计信息用户具有以下权限: CREATE JOB MANAGE SCHEDULER MANAGE ANY QUEUE 即使是该用户具有了dba角色,也还是需要显式授权上述权限...EBS系统应用是采用自己的并发管理器(FND_STATS)来收集统计信息,而收集统计信息用户往往是没有显式授权CREATE JOB、MANAGE SCHEDULER、MANAGE ANY QUEUE的。...EBS的安装文档中(Doc ID 396009.1),也是说将数据上收集统计信息的功能关闭的(_optimizer_autostats_job=false) 参考: https://blogs.oracle.com

1.6K50

测试Oracle统计信息的导出导入

背景:有时我们会希望可以对Oracle统计信息整体进行导出导入。...比如在数据库迁移前后,希望统计信息保持不变;又比如想对统计信息重新进行收集,但是担心重新收集的结果反而引发性能问题,想先保存当前的统计信息,这样即使重新收集后效果不好还可以导入之前的统计信息。...Oracle提供给我们一些方法,比较常用的粒度有两种: schema级别统计信息的导出导入 通过调用DBMS_STATS.EXPORT_SCHEMA_STATS和DBMS_STATS.IMPORT_SCHEMA_STATS...1.示例schema级别统计信息的导出导入 2.示例database级别统计信息的导出导入 3.验证统计信息导出导入效果 1.示例schema级别统计信息的导出导入 比如我将JINGYU这个schema...下所有的统计信息进行导出导入: --源端统计信息导出: begin DBMS_STATS.CREATE_STAT_TABLE('SYSTEM','JINGYU_STATS_20181217');

98230

Oracle的自动统计信息不收集直方图的信息

oracle9i中,默认的统计信息收集是不收集直方图信息的,也就是说默认的MOTHOD_OPT模式为FOR ALL COLUMNS SIZE 1 在10g开始,dbms_stats包中默认的METHOD_OPT...DBMS_STATS.GET_PARAM('METHOD_OPT') ——————————————————————– FOR ALL COLUMNS SIZE AUTO 这就说明,从10g开始,统计信息收集中的直方图部分...,收集与否是有oracle自从判断,从实际的使用来看,oracle的智能判断并不是100%正确, oracle往往会大量的收集一些并不是必须的直方图信息,而有些直方图信息又会对查询造成不必要的影响 由于我们简单的对直方图进行删除后...,oracle的自动统计信息又会重新收集,所以我们需要采取一些必要的方法,来规避这个问题 10g中: 解决方案 删除表的统计信息 手工收集标的统计信息,不收集直方图 lock表的统计信息 创建JOB手工收集统计信息...11g中 在11g中,oracle对dbms_stats包添加了新功能,提供给我们进行修改,可以使用dbms_stats.set_table_prefs包 删除直方图信息: dbms_stats.delete_column_stats

56450

关于Oracle开启自动收集统计信息的SPA测试

主题:关于Oracle开启自动收集统计信息的SPA测试 环境:Oracle RAC 11.2.0.4(Primary + Standby) 需求:生产Primary库由于历史原因关闭了自动统计信息的收集...,目前客户需求是想要重新开启统计信息的自动收集,虽然一般来说,有了更准确的统计信息,SQL会有更好的执行计划,但由于生产环境数据复杂,实际上还是需要评估哪些SQL会因为重新开启自动统计信息收集性能反而会下降...1.构造测试环境 检查自动统计信息的开启状态: select client_name,status from dba_autotask_client; 确认自动统计信息的收集是关闭的,对于“auto...: --光闭自动统计信息收集,(慎用,除非有其他手工收集统计信息的完整方案,否则不建议关闭) BEGIN DBMS_AUTO_TASK_ADMIN.disable( client_name...--检查自动统计信息的开启状态: select client_name,status from dba_autotask_client; --启动自动统计信息收集 BEGIN DBMS_AUTO_TASK_ADMIN.enable

1K20

Oracle 11G统计信息自动收集及调整

Oracle 11G开始,数据库统计信息的自动收集被整合到自动维护任务中,满足大多数情形下的运行需求。但对于在线商城,交易系统而言,可能需要调整其执行时间或者自行指定收集窗口。...一、缺省的统计信息相关状态查看 1、查看自动收集统计信息对应的task(也就是program的名称)及状态 --当前状态 SQL> select * from v$version...--统计信息收集的时间窗口 --如下查询周一至周五时间为22点,周六日为6点 --此外持续也不相同,周一至周五为4小时,周六日为20个小时...1、启用自动收集统计信息 BEGIN DBMS_AUTO_TASK_ADMIN.ENABLE ( client_name => '...', operation => NULL, window_name => NULL); END; 2、禁用自动收集统计信息

1.2K00

【DB笔试面试632】在Oracle中,如何锁住统计信息

♣ 题目部分 在Oracle中,如何锁住统计信息? ♣ 答案部分 Oracle会自动收集表的统计信息,大部分情况下,这种行为是有利的。...当不需要对某个表做收集的时候,可以采用锁定统计信息的方法,把不需要收集的表排除在外,这样可以使得此表上的统计信息不变,如下所示: EXEC DBMS_STATS.LOCK_TABLE_STATS();...--表 EXEC DBMS_STATS.LOCK_PARTITION_STATS(); --分区表 EXEC DBMS_STATS.LOCK_SCHEMA_STATS(); --锁定用户统计信息 EXEC...DBMS_STATS.UNLOCK_SCHEMA_STATS();--解锁用户统计信息 如果在锁定条件下收集统计信息,那么会出现如下报错: ERROR at line 1: ORA-20005:...若要保持统计信息不被覆盖,则必须利用DBMS_STATS包将统计信息锁住。 本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗

93520

Oracle 10g收集数据库统计信息

Oracle优化器(CBO)依赖数据库统计信息来计算目标SQL各种可能的执行路径的成本,并从中选择一条成本值最小的执行路径来作为目标SQL的执行计划。...如果统计信息不准确甚至是错误,会导致优化器选择错误SQL执行计划的概率大大增加。 目前计划对该数据库统计信息进行重新收集,因为生产环境的复杂性,不排除重新收集正确的统计信息后,整体性能反而下降的情况。...故而在收集之前需要对原有的统计信息做好备份,如发现收集后性能反而下降的极端情况,也可以快速回退到原有的统计信息。...2.实施步骤 **2.1备份当前数据库统计信息** 备份当前数据库的统计信息,建议备份后再导出一份留存: --备份当前数据库的统计信息: begin DBMS_STATS.CREATE_STAT_TABLE...如果数据库是11.2.0.2及以上版本,还可以通过DBMS_STATS.SET_GLOBAL_PREFS设置并发收集进一步提升收集效率,具体可参考: Oracle 11g快速收集全库统计信息 3.回退方案

44610

【DB笔试面试630】在Oracle中,怎样收集表的统计信息?怎样收集分区表的统计信息

♣ 题目部分 在Oracle中,怎样收集表的统计信息?怎样收集分区表的统计信息?...♣ 答案部分 主要采用DBMS_STATS.GATHER_TABLE_STATS包进行统计信息的收集,如下所示: DBMS_STATS.GATHER_TABLE_STATS(USER,'TB_NAME...DBMS_STATS.GATHER_TABLE_STATS(USER,'TB_NAME',PARTNAME=>'PT_PART_NAME',GRANULARITY=>'PARTITION',CASCADE=>TRUE);--针对分区表的单个分区进行收集统计信息...除此之外,还有一些其它的用法,如下所示: l EXEC DBMS_STATS.GATHER_DATABASE_STATS();--收集当前数据库下所有用户的统计信息 l EXEC DBMS_STATS.GATHER_SCHEMA_STATS...(USER);--收集用户下所有对象的统计信息 当系统的分区表数据量很大时,如果每次都收集全部的分区必然会导致统计信息的收集非常慢,在Oracle 11g之后可以通过设置INCREMENTAL来只针对数据有变动的分区做收集

94630

六千字带你了解 Oracle 统计信息和执行计划

一、统计信息 统计信息主要是描述数据库中表,索引的大小,规模,数据分布状况等的一类信息。...,如果分区表只会收集分区统计信息,然后再汇总出所有分区的统计信息,得到表一级的统计信息。...false:收集统计信息后,原有执行计划失效。 默认 DBMS_STATS.AUTO_INVALIDATE,Oracle 自行决定何时使执行计划失效。...字段数据分布不均衡时,建立柱状图(直方图): 柱状图统计信息:索引字段列值建立统计信息 多列统计信息:复合索引列建立统计信息 表达式统计信息:对函数索引键建立统计信息 柱状图统计信息: execdbms_stats.gather_table_stats...Oracle不建议使用此设置,因为它会禁用重要的 Oracle 数据库功能。 · TYPICAL:这是默认值,可确保收集所有主要统计信息,同时提供最佳的整体数据库性能。对于大多数环境,此设置应足够。

1.8K42

Presto统计信息

统计 Presto支持基于统计的查询优化。为了使查询能够利用这些优化,Presto必须具有该查询中表的统计信息。 表统计信息通过连接器提供给查询计划者。...当前,唯一支持统计信息的连接器是Hive连接器。 统计信息通过table layout显示给查询计划者。...Hive连接器还可以收集列级别的统计信息: ? image.png 写入时自动进行列级统计信息收集由collect-column-statistics-on-write会话属性控制。...例如,Hive连接器当前不提供有关数据大小的统计信息。 可以使用SHOW STATS for命令通过Presto SQL界面显示表统计信息。 ?...对于每个计划节点,您可以看到其他统计信息(如:每个节点实例的平均输入,相关计划节点的平均哈希碰撞数)。想要检测查询的数据异常(数据倾斜,异常哈希碰撞)时,此类统计非常有用。

2.4K30

【DB笔试面试644】在Oracle中,如何并发地收集统计信息

♣ 题目部分 在Oracle中,如何并发地收集统计信息? ♣ 答案部分 对于大表的统计信息收集可以通过DEGREE参数使得扫描大表的时候进行并行扫描,从而加快扫描速度,缩短了收集统计信息的时间。...在并发收集统计信息时,数据库生成的JOB数会根据具体情况来分配。...,对并发统计信息收集进行监视: DBA_OPTSTAT_OPERATION_TASKS:当前和历史的统计信息收集的执行任务 DBA_OPTSTAT_OPERATIONS:当前和历史的统计信息收集的执行操作...: (1)用CONCURRENT收集统计信息,需要收集统计信息的用户具有CREATE JOB、MANAGE SCHEDULER和MANAGE ANY QUEUE权限。...& 说明: 有关并发地收集统计信息的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2134312/ 本文选自《Oracle程序员面试笔试宝典

52820

Oracle 12c数据库优化器统计信息收集的最佳实践(三)|何时不需要收集统计信息

然而,在oracle 12c版本,现在可以实现每个使用全局临时表的会话拥有自己独立的统计信息。...exec dbms_stats.set_global_prefs('autostats_target','oracle') 内部对象统计信息oracle数据库12c开始,内部对象统计信息如果之前没有被收集过...总 结 为了使oracle优化器准确地确定执行计划的成本,那么sql语句中涉及到的全部对象(表和索引)必须有准确的统计信息,且必须有准确的系统统计信息。...参考文献 Oracle白皮书:Understanding Optimizer Statistics with Oracle Database 12c Release 2 Oracle白皮书:Optimizer...with Oracle Database 12c Release 2 Oracle白皮书:Database 12c Real Application Testing Overview

1.1K50

MySQL统计信息简介

查询优化器决定SQL如何执行,依赖于数据库的统计信息,下面我们介绍MySQL 5.7中innodb统计信息的相关内容。 MySQL统计信息的存储分为两种,非持久化和持久化统计信息。...一、非持久化统计信息 非持久化统计信息存储在内存里,如果数据库重启,统计信息将丢失。...,表1/16的数据被修改 非持久化统计信息的缺点显而易见,数据库重启后如果大量表开始更新统计信息,会对实例造成很大影响,所以目前都会使用持久化统计信息。...二、持久化统计信息 5.6.6开始,MySQL默认使用了持久化统计信息,即INNODB_STATS_PERSISTENT=ON,持久化统计信息保存在表mysql.innodb_table_stats和mysql.innodb_index_stats...三、统计信息不准确的处理 我们查看执行计划,发现未使用正确的索引,如果是innodb_index_stats中统计信息差别较大引起,可通过以下方式处理: 1、手动更新统计信息,注意执行过程中会加读锁:

2.5K20

MySQL 统计信息简介

查询优化器决定SQL如何执行,依赖于数据库的统计信息,下面我们介绍MySQL 5.7中innodb统计信息的相关内容。 MySQL统计信息的存储分为两种,非持久化和持久化统计信息。...一、非持久化统计信息 非持久化统计信息存储在内存里,如果数据库重启,统计信息将丢失。...,表1/16的数据被修改 非持久化统计信息的缺点显而易见,数据库重启后如果大量表开始更新统计信息,会对实例造成很大影响,所以目前都会使用持久化统计信息。...二、持久化统计信息 5.6.6开始,MySQL默认使用了持久化统计信息,即INNODB_STATS_PERSISTENT=ON,持久化统计信息保存在表mysql.innodb_table_stats和mysql.innodb_index_stats...三、统计信息不准确的处理 我们查看执行计划,发现未使用正确的索引,如果是innodb_index_stats中统计信息差别较大引起,可通过以下方式处理: 1、手动更新统计信息,注意执行过程中会加读锁:

2.1K10
领券