首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Oracle 还原历史统计信息

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

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

    Oracle统计信息的那点事儿

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

    1.7K20

    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.7K50

    测试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');

    1K30

    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

    68550

    关于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

    1.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程序员面试笔试宝典》,作者:小麦苗

    1K20

    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.回退方案

    48810

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

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

    2.6K42

    【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来只针对数据有变动的分区做收集

    98630

    Presto统计信息

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

    2.6K30

    【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程序员面试笔试宝典

    57220

    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.2K50

    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.6K20

    【DB笔试面试628】Oracle统计信息包括哪几种类型?

    ♣ 题目部分 Oracle统计信息包括哪几种类型? ♣ 答案部分 Oracle数据库里的统计信息是一组存储在数据字典里,且从多个维度描述了数据库里对象的详细信息的一组数据。...(二)列的统计信息 列的统计信息用于描述Oracle数据库里列的详细信息,包含了列的DISTINCT值的数量、列的NULL值的数量、列的最小值、列的最大值等一些典型维度。...默认情况下(包括默认的自动统计信息收集作业在内),Oracle不会对X$系列表收集内部对象统计信息,所以默认情况下SYS.TAB_STATS$中没有任何记录。...即使相关的X$表没有内部对象统计信息Oracle也不会在访问这些X$表时使用动态采样。...因为X$表实际上就是内存结构,所以在RAC环境下收集内部对象统计信息时需要在每个节点都进行收集统计信息。 本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗

    73720
    领券