Oracle之统计信息

1、有关OPTIMIZER_USE_PENDING_STATISTICS的问题。

[email protected]> SELECTDBMS_STATS.GET_PREFS(‘PUBLISH‘) PUBLISH FROM DUAL;

PUBLISH
----------------------------------------------------------------------------------------------------
TRUE

返回为true或者false。True表示新的统计信息收集后即发布,也就是说优化器会使用新的统计信息来生查询计划,False表示收集的统计信息会被放入USER_TAB_PENDING_STATS和 USER_IND_PENDING_STATS,并且不会立刻被优化器使用,为待定状态。

可以使用下面的包来改变各个级别(global,schema,table)的默认publish选项。
Global
exec Dbms_stats.set_global_prefs(pname =>‘PUBLISH‘ ,pvalue=> ‘FALSE‘) ;

Schema
exec dbms_stats.set_schema_prefs(ownname => ‘DEXTER‘,pname=>‘PUBLISH‘ ,pvalue => ‘TRUE‘) ;

table
Exec dbms_stats.set_table_prefs(‘DEXTER‘, ‘PUBLISH_TEST‘,‘PUBLISH‘, ‘false‘);

原文地址:https://www.cnblogs.com/dayu-liu/p/11073789.html

时间: 2024-10-10 23:04:19

Oracle之统计信息的相关文章

验证Oracle收集统计信息参数granularity数据分析的力度

最近在学习Oracle的统计信息这一块,收集统计信息的方法如下: DBMS_STATS.GATHER_TABLE_STATS ( ownname VARCHAR2, ---所有者名字 tabname VARCHAR2, ---表名 partname VARCHAR2 DEFAULT NULL, ---要分析的分区名 estimate_percent NUMBER DEFAULT NULL, ---采样的比例 block_sample BOOLEAN DEFAULT FALSE, ---是否块分析

ORACLE 收集统计信息

原文链接:http://blog.itpub.net/2317695/viewspace-1226138/ 今天网上看到一篇关于收集统计信息的文章,还不错,特转载下来. 1.     理解什么是统计信息 优化器统计信息就是一个更加详细描述数据库和数据库对象的集合,这些统计信息被用于查询优化器,让其为每条SQL语句选择最佳的执行计划.优化器统计信息包括: ·         表的统计信息 o   行数 o   Block数 o   行平均长度 ·         列的统计信息 o   列中不同值的

Oracle Mysql 统计信息

我们知道Oracle的统计信息将严重影响CBO对执行计划的选择,针对不同大小的表制定收集规则并且定期执行是非常重要的.Oracle通过如下脚本即可收集统计信息: BEGIN DBMS_STATS.GATHER_TABLE_STATS(ownname =>'ZBDBA', tabname =>'TEST', estimate_percent =>30, method_opt =>'for all columns size repeat', no_invalidate =>FAL

oracle学习----统计信息

1.收集统计信息的方式 for all columns size skewonly BEGIN  DBMS_STATS.GATHER_TABLE_STATS(ownname          => 'SCOTT',                                tabname          => 'TEST',                                estimate_percent => 100,                        

Oracle自动统计信息的收集原理及实验

[日期:2014-11-21]来源:Linux社区  作者:stevendbaguo[字体:大 中 小] 从Oracle Database 10g开始,Oracle在建库后就默认创建了一个名为GATHER_STATS_JOB的定时任务,用于自动收集CBO的统计信息.这个自动任务默认情况下在工作日晚上10:00-6:00和周末全天开启. 调用DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC收集统计信息.该过程首先检测统计信息缺失和陈旧的对象.然后确定优先级,再开始

oracle表统计信息的使用

最近开发处理ECIF相关的项目,使用存储过程跑批处理数据.定期跑批数据,每次存储过程跑批使用临时表进行数据整理,再join这张临时表将数据放入目标表,最后清空临时表. 问题:在join处理这步中执行较慢,有时半天不出结果集. 解决方案:更新数据库表统计信息 + 使用多进程执行 多进程在此不多讲.每次往临时表插入数据,数据达到几百万条,存储过程结束之后又清除表,这样会让数据库误以为该临时表数据一致为0,因数据库表统计信息并非实时.更新表统计信息能良好地估计统计数据(尤其是针对较大的分区表),并能获

Oracle 判断 并 手动收集 统计信息 脚本

CREATE OR REPLACE PROCEDURE SchameB.PRC_GATHER_STATS AUTHID CURRENT_USER IS BEGIN SYS.DBMS_STATS.GATHER_TABLE_STATS('SchName', 'TableName', CASCADE => TRUE); END; / select owner,table_name,last_analyzed,num_rows from dba_tables where owner='SYSTEM' a

收集oracle统计信息

优化器统计范围: 表统计: --行数,块数,行平均长度:all_tables:NUM_ROWS,BLOCKS,AVG_ROW_LEN:列统计: --列中唯一值的数量(NDV),NULL值的数量,数据分布:             --DBA_TAB_COLUMNS:NUM_DISTINCT,NUM_NULLS,HISTOGRAM:索引统计:--叶块数量,等级,聚簇因子:             --DBA_INDEXES:LEAF_BLOCKS,CLUSTERING_FACTOR,BLEVEL:

Oracle 分区表的统计信息实例

ORACLE的统计信息在执行SQL的过程中扮演着非常重要的作用,而且ORACLE在表的各个层次都会有不同的统计信息,通过这些统计信息来描述表的,列的各种各样的统计信息.下面通过一个复合分区表来说明一些常见的和不常见的统计信息. 搭建测试用例 --创建表. SQL> create table test partition by range(object_id) subpartition by hash(object_type) subpartitions 4 (partition p1 value