oracle统计信息

  1. create table t2 as select * from dba_objects;

建索引:

create index idx_t2 on t2(object_id);

2.收集T2的表所有列和表上所有索引的统计信息:

exec dbms_stats.gather_table_stats(ownname=>‘SYS‘,tabname=>‘T2‘,estimate_percent=>100,cascade=>true,degree=>4);

degree表示并行度;

3.查看统计信息,脚本(soxi.txt)

Please enter Name of Table Owner (Null = SYS): SYS

Please enter Table Name to show Statistics for: T2

***********

Table Level

***********

Table Number       Empty Average Chain Average Global User    Sample Date

Name       of Rows Blocks       Blocks   Space Count Row Len Stats  Stats      Size MM-DD-YYYY

--------------- -------------- -------- ------------ ------- -------- ------- ------ ------ -------------- ----------

T2 87,361  1,246   0   0    0   98 YES    NO    87,361 07-07-2015

Column  Column       Distinct Number     Number Global User Sample Date

Name  Details Values Density Buckets      Nulls Stats  Stats   Size MM-DD-YYYY

------------------------- ------------------------ ------------ ------- ------- ---------- ------ ------ -------------- ----------

OWNER  VARCHAR2(30)     31       0       1 0 YES  NO 87,361 07-07-2015

OBJECT_NAME  VARCHAR2(128) 52,669       0       1 0 YES  NO 87,361 07-07-2015

SUBOBJECT_NAME  VARCHAR2(30)    194       0       1     86,760 YES  NO    601 07-07-2015

OBJECT_ID  NUMBER(22) 87,361       0       1 0 YES  NO 87,361 07-07-2015

DATA_OBJECT_ID  NUMBER(22)  9,348       0       1     77,945 YES  NO  9,416 07-07-2015

OBJECT_TYPE  VARCHAR2(19)     45       0       1 0 YES  NO 87,361 07-07-2015

CREATED  DATE  1,244       0       1 0 YES  NO 87,361 07-07-2015

LAST_DDL_TIME  DATE  1,365       0       1 0 YES  NO 87,361 07-07-2015

TIMESTAMP  VARCHAR2(19)  1,440       0       1 0 YES  NO 87,361 07-07-2015

STATUS  VARCHAR2(7)      2       1       1 0 YES  NO 87,361 07-07-2015

TEMPORARY  VARCHAR2(1)      2       1       1 0 YES  NO 87,361 07-07-2015

GENERATED  VARCHAR2(1)      2       1       1 0 YES  NO 87,361 07-07-2015

SECONDARY  VARCHAR2(1)      2       1       1 0 YES  NO 87,361 07-07-2015

NAMESPACE  NUMBER(22)     21       0       1 0 YES  NO 87,361 07-07-2015

EDITION_NAME  VARCHAR2(30)      0       0       0     87,361 YES  NO 07-07-2015

B       Average   Average

Index   Tree Leaf   Distinct    Number Leaf Blocks Data Blocks Cluster Global User      Sample Date

Name Unique  Level Blks       Keys   of Rows     Per Key   Per Key Factor Stats  Stats Size MM-DD-YYYY

--------------- --------- ----- ---- -------------- -------------- ----------- ----------- ------------ ------ ------ -------------- ----------

IDX_T2 NONUNIQUE     1  194     87,361    87,361     1 1  1,385 YES    NO      87,361 07-07-2015

Index Column   Col Column

Name Name   Pos Details

--------------- ------------------------- ---- ------------------------

IDX_T2 OBJECT_ID     1 NUMBER(22)

***************

Partition Level

***************

***************

SubPartition Level

***************

时间: 2024-10-19 13:50:21

oracle统计信息的相关文章

收集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统计信息不准(谓词越界)造成的性能问题

什么是谓词越界?谓词越界其实就是SQL语句的查询条件超出了数据库统计信息所记录的范围.谓词越界会导致Oracle优化器错误的选择SQL语句的执行计划,导致性能问题. 这里举一个简单的例子说明谓词越界导致优化器选择了错误的执行计划. create table t1 (col1 number); create index idx_t1 on t1(col1); begin for i in 1..10000 loop insert into t1 values (i); end loop; comm

Oracle 统计信息介绍

统计信息自动执行需要以下条件满足: dba_autotask_task 字段status值ENABLED dba_autotask_client 字段status值ENABLED dba_autotask_window_clients 字段AUTOTASK_STATUS值ENABLED OPTIMIZER_STATS值ENABLED WINDOW_ACTIVE值FALSE dba_scheduler_windows 字段ENABLED值TRUE 字段ACTIVE值FALSE 字段DURATION

【练习】ORACLE统计信息--直方图

①创建表tSQL> create table t as select * from dba_objects; Table created. --收集直方图 SQL> exec dbms_stats.gather_table_stats(user,'T'); PL/SQL procedure successfully completed. --此时数据库为表上的所有字段收集了缺省的统计信息,每个列两个Bucket: SQL> col column_name for a30 SQL>

Oracle 统计信息收集

统计信息收集 1:创建分析表 $ cd $ORACLE_HOME/rdbms/admin $ sqlplus / as sysdba > @utlxplan.sql 2:为了方便,可以创建一个同义表(默认情况下只有sys用户可以使用) SQL> create public synonym plan_tables for plan_table; 3:把这个表的权限给所有人,也可以给指定的人 SQL> grant all on plan_tables to public; 4:创建plust

oracle数据库优化之统计信息

1.统计信息简介 统计信息主要是描述数据库中表,索引的大小,规模,数据分布状况等的一类信息.比如,表的行数,块数,平均每行的大小,索引的leaf blocks,索引字段的行数,不同值的大小等,都属于统计信息.CBO正是根据这些统计信息数据,计算出不同访问路径下,不同join 方式下,各种计划的成本,最后选择出成本最小的计划. 在CBO(基于代价的优化器模式)条件下,SQL语句的执行计划由统计信息来决定,若没有统计信息则会采取动态采样的方式决定执行计划!可以说统计信息关乎sql的执行计划是否正确,

oracle表统计信息的使用

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

oracle之 v$sql_monitor 监视正在运行的SQL语句的统计信息

11g中引入了新的动态性能视图V$SQL_MONITOR,该视图用以显示Oracle监视的SQL语句信息.SQL监视会对那些并行执行或者消耗5秒以上cpu时间或I/O时间的SQL语句自动启动,同时在V$SQL_MONITOR视图中产生一条记录.当SQL语句正在执行,V$SQL_MONITOR视图中的统计信息将被实时刷新,频率为每秒1次.SQL语句执行完成后,监视信息将不会被立即删除,Oracle会保证相关记录保存一分钟(由参数_sqlmon_recycle_time所控制,默认为60s),最终这

Oracle里收集与查看统计信息的方法

Oracle数据库里的统计信息是这样的一组数据:它存储在数据字典里,且从多个维度描述了Oracle数据库里对象的详细信息.CBO会利用这些统计信息来计算目标SQL各种可能的.不同的执行路径的成本,并从中选择一条成本值最小的执行路径来作为目标SQL的执行计划. Oracle数据库里的统计信息可以分为如下6种类型: 表的统计信息 索引的统计信息 列的统计信息 系统统计信息 数据字典统计信息 内部对象统计信息 表的统计信息用于描述Oracle数据库里表的详细信息,它包含了一些典型的维度,如记录数.表块