- 浏览: 74899 次
- 性别:
- 来自: 苏州
最新评论
作用:DBMS_STATS.GATHER_TABLE_STATS统计表,列,索引的统计信息.
DBMS_STATS.GATHER_TABLE_STATS的语法如下:
DBMS_STATS.GATHER_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2, partname VARCHAR2, estimate_percent NUMBER, block_sample BOOLEAN, method_opt VARCHAR2, degree NUMBER, granularity VARCHAR2, cascade BOOLEAN, stattab VARCHAR2, statid VARCHAR2, statown VARCHAR2, no_invalidate BOOLEAN, force BOOLEAN);
参数说明:
ownname:要分析表的拥有者
tabname:要分析的表名.
partname:分区的名字,只对分区表或分区索引有用.
estimate_percent:采样行的百分比,取值范围[0.000001,100],null为全部分析,不采样. 常量:DBMS_STATS.AUTO_SAMPLE_SIZE是默认值,由oracle决定最佳取采样值.
block_sapmple:是否用块采样代替行采样.
method_opt:决定histograms信息是怎样被统计的.method_opt的取值如下:
for all columns:统计所有列的histograms.
for all indexed columns:统计所有indexed列的histograms.
for all hidden columns:统计你看不到列的histograms
for columns <list> SIZE <N> | REPEAT | AUTO | SKEWONLY:统计指定列的histograms.N的取值范围[1,254]; REPEAT上次统计过的histograms;AUTO由oracle决定N的大小;SKEWONLY multiple end-points with the same value which is what we define by "there is skew in the data
degree:决定并行度.默认值为null.
granularity:Granularity of statistics to collect ,only pertinent if the table is partitioned.
cascace:是收集索引的信息.默认为falase.
stattab指定要存储统计信息的表,statid如果多个表的统计信息存储在同一个stattab中用于进行区分.statown存储统计信息表的拥有者.以上三个参数若不指定,统计信息会直接更新到数据字典.
no_invalidate: Does not invalidate the dependent cursors if set to TRUE. The procedure invalidates the dependent cursors immediately if set to FALSE.
force:即使表锁住了也收集统计信息.
例子:
execute dbms_stats.gather_table_stats(ownname => 'owner',tabname => 'table_name' ,estimate_percent => null ,method_opt => 'for all indexed columns' ,cascade => true);
------------------------------------------------------------------------------------------------------------------------
自从Oracle8.1.5引入dbms_stats包,Experts们便推荐使用dbms_stats取代analyze。 理由如下
dbms_stats可以并行分析
dbms_stats有自动分析的功能(alter table monitor )
analyze 分析统计信息的不准确some times
1,2好理解,且第2点实际上在VLDB中是最吸引人的;3以前比较模糊,看了metalink236935.1 解释,analyze在分析Partition表的时候,有时候会计算出不准确的Global statistics .
原因是,dbms_stats会实在的去分析表全局统计信息(当指定参数);而analyze是将表分区(局部)的statistics 汇总计算成表全局statistics ,可能导致误差。
如果想分析整个用户或数据库,还可以采用工具包,可以并行分析
Dbms_utility(8i以前的工具包)
Dbms_stats(8i以后提供的工具包)
如
dbms_stats.gather_schema_stats(User,estimate_percent=>100,cascade=> TRUE);
dbms_stats.gather_table_stats(User,TableName,degree => 4,cascade => true);
这是对命令与工具包的一些总结
1、对于分区表,建议使用DBMS_STATS,而不是使用Analyze语句。
a) 可以并行进行,对多个用户,多个Table
b) 可以得到整个分区表的数据和单个分区的数据。
c) 可以在不同级别上Compute Statistics:单个分区,子分区,全表,所有分区
d) 可以倒出统计信息
e) 可以用户自动收集统计信息
2、DBMS_STATS的缺点
a) 不能Validate Structure
b) 不能收集CHAINED ROWS, 不能收集CLUSTER TABLE的信息,这两个仍旧需要使用Analyze语句。
c) DBMS_STATS 默认不对索引进行Analyze,因为默认Cascade是False,需要手工指定为True
3、对于oracle 9里面的External Table,Analyze不能使用,只能使用DBMS_STATS来收集信息。
-----------------------------------------------------------------
10G的文档是这么说的:
Do not use the COMPUTE and ESTIMATE clauses of ANALYZE to collect optimizer statistics. These clauses are supported for backward compatibility. Instead, use the DBMS_STATS package, which lets you collect statistics in parallel, collect global statistics for partitioned objects, and fine tune your statistics collection in other ways. The cost-based optimizer, which depends upon statistics, will eventually use only statistics that have been collected by DBMS_STATS
analyze的功能已经明确:
Use the ANALYZE statement (rather than DBMS_STATS) for statistics collection not related to the cost-based optimizer :
To use the VALIDATE or LIST CHAINED ROWS clauses
To collect information on freelist blocks
http://kedron.blogbus.com/logs/41174252.html
发表评论
-
Oracle的schema、方案、模式、用户
2012-12-07 12:11 1039今天才对这几个概念 ... -
Oracle表连接操作——Merge Sort Join(合并排序连接)
2012-08-15 15:12 3294关系型数据库并不是最早出现的数据库表现形式,之前还存在层 ... -
Oracle表连接操作——Nest Loop Join(嵌套循环)
2012-08-15 15:12 7854关系型数据库并不是最 ... -
Oracle hash join
2012-08-15 15:13 986hash join是oracle里面一个 ... -
Oracle表连接操作——Hash Join(哈希连接)下
2012-08-15 15:13 1620Hash Join是Oracle CBO时代经常出现的一 ... -
Oracle表连接操作——Hash Join(哈希连接)上
2012-08-14 14:19 13892在Oracle中,确定连接操作类型是执行计划生成的重要方 ... -
oracle 递归查询,向上和向下遍历
2012-08-14 11:10 19240--查询全部资源信息 select * from urm_cl ... -
ORACLE中Like与Instr性能大比拼(转)
2012-08-14 11:09 919http://zhaolinjnu.blog.sohu.com ... -
SQL语句优化技术分析
2012-08-14 11:08 910一、操作符优化1、IN 操 ... -
CBO和RBO介绍
2012-08-14 11:08 855Rule Based Optimizer(RBO) ... -
Install Oracle10gXE on Ubuntu Server using apt
2012-03-19 17:22 796With Oracle Database XE in prod ... -
Merge into 详细介绍
2012-03-15 15:40 899/*Merge into 详细介绍 MERGE ... -
ora-12516 tns listener could not find available handler with matching protocol
2012-03-12 15:51 8664公司数据库安装的是 Oracle10g XE(Oracle D ... -
CUUG《Oracle 监听和TNS配置》- 笔记
2012-02-24 22:07 2164监听负责多个实例 相关文件:Listener.ora和 ... -
批处理备份oracle
2012-02-24 22:07 795@echo off @title Oracle简易数据备份工具 ... -
oracle-ORA的原理
2012-02-07 14:15 10061、在一个应用环境当中,所有的服务器使用和管理同一个数据库,目 ... -
Oracle的卸载过程
2012-02-07 12:15 855修改注册表,在开始运行中执行regedit命令,进入注册表, ... -
创建表空间文件
2012-02-07 12:12 2206--1 创建表空间文件 --1.1 创建ASIT 实体表空间 ... -
SQL触发器实例讲解
2012-02-07 12:10 809SQL触发器实例1 定义: ... -
oracle 10g 默认用户名密码及解锁
2012-02-07 12:04 9551. 安装时选择的自动安装,忘了用户名和密码,导致现在试了几个 ...
相关推荐
作用:DBMS_STATS.GATHER_TABLE_STATS统计表,列,索引的统计信息. DBMS_STATS.GATHER_TABLE_STATS的语法如下: DBMS_STATS.GATHER_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2, partname VARCHAR2, estimate_...
ORACLE数据库使用dbms_stats包手动收集关于表的、索引的统计信息。
Oracle统计分析-dbms_stats.pdf
简单的dbms_stats操作,简单的dbms_stats操作简单的dbms_stats操作
Oracle 18c bug 执行 DBMS_PDB.CHECK_PLUG_COMPATIBILITY报错_ITPUB博客.mhtml
NULL 博文链接:https://duqiangcise.iteye.com/blog/648491
How to Move from ANALYZE (using DBMS_UTILITY) to DBMS_STATS Is ANALYZE on the Data Dictionary Supported (TABLES OWNED BY SYS)?
支持ArcGIS10.2版本的PostgreSQL_DBMS_for_windows_922,ESRI官方原版资源。
dbms_comp_advisor.getratio 预估压缩比例的存储过程脚本 11gR2以前使用,11gR2后可以使用系统自带的存储。
oracle dbms_lob
以下是对Oracle中dbms_metadata.get_ddl的用法进行了详细的分析介绍,需要的朋友参考下
亲测有效 通过此版本可以把oracle时区版本调整到为最新版本,一般配合时区补丁使用 可以参考...脚本里有说明 先运行upg_tzv_check.sql再运行upg_tzv_apply.sql
EXECUTE dbms_logmnr.add_logfile(LogFileName=>'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ABC\REDO03.LOG',Options=>dbms_logmnr.new); 添加其它文件 EXECUTE dbms_logmnr.add_logfile(LogFileName=>'D:\ORACLE\...
oracle dbms_sql的使用方法,非常使用
Oracle SQL执行计划分析器功能的创建3步曲: 1 首先,编译XYG_ALD_SESS_PKG的Package头。 (XYG_ALD_SESS_PKG.sql) 2 接着要建立好下面的4个视图对象。因为XYG_ALD_SESS_PKG包体会用到。(View Create Script v...
使用C语言实现的数据库管理系统。 支持简单类 SQL语言。
where c.owner = upper('&table_owner') and c.table_name = upper('&table_name') and c.owner = cc.owner and c.constraint_name = cc.constraint_name order by cc.position; 8、存储函数和过程 查看函数...
一、dbms_job涉及到的知识点 1、创建job: variable jobno number; dbms_job.submit(:jobno, —-job号 'your_procedure;',—-执行的存储过程, ';'不能省略 next_date, —-下次执行时间 'interval' —-每次间隔...