1、概述

作用:用于搜集,查看,修改数据库对象的优化统计信息.

2、包的组成

1)、get_column_stats
作用:用于取得列的统计信息
语法:dbms_stats.get_column_stats(ownname
varchar2,tabname varchar2,colname varchar2,partname varchar2 default
null,stattab varchar2 default null,
statid varchar2 default
null,distcnt out number,density out number,nullcnt out number,srec out
statrec,avgclen out number,statown varchar2 default null);
其中ownname指定方案名,tabname指定表名,colname指定列名,partname指定分区名,stattab指定用户统计表名,statid指定与统计相关的标识符,distcnt返回不同值的个数,
density返回列的密度,nullcnt返回列的null个数,srec返回列的最大、最小和直方图值,avgclen返回列的平均长度,statown指定包含stattab的方案名。

2)、get_index_stats
作用:用于取得索引的统计信息
语法:dbms_stats.get_index_stats(ownnane varchar2,indname varchar2,
partname varchar2 default null,stattab varchar2 default null,
statid varchar2 default null,numrows out number,
numlblks out number,numdist out number,
avglblk out number,avgdblk out number,clstfct out number,
indlevel out number,statown varchar2 default null);
其中ownnane指定索引所有者名,indname指定索引名,partname指定索引分区名,
stattab指定统计表名,statid指定统计表相关的标识符,numrows返回索引行数,
numlblks返回索引块个数,numdist返回索引不同键值个数,
avglblk返回每个键值占用的平均叶块个数,avgdblk返回每个键值对应表行所占用的平均数据块个数,
clstfct返回索引的聚簇因子,indlevel返回索引层数,statown指定统计表所有者。

3)、get_system_stats
作用:用于从统计表或数据字典中取得系统统计信息
语法:dbms_stats.get_system_stats(status out varchar2,dstart out date,dstop out date,
pname
varchar2,pvalue out number,stattab in varchar2 default null,statid in
varchar2 default null,statown in varchar2 default null);
其中status返回状态信息(completed,autogathering,manualgathering),dstat返回起始搜集日期,dstop返回结束搜集日期,
pname指定要取得的参数名(sreadtim,mreadtim,cpuspeed,mbrc,maxthr,slavethr),pvalue返回参数值。

4)、get_table_stats
作用:用于取得表的统计信息
语法:dbms_stats.get_table_stats(owname varchar2,tabname varchar2,
partname varchar2 default null,stattab varchar2 default null,
statid varchar2 default null,numrows out number,numblks out number,
avgrlen out number,statown varchar2 default null);
其中avgrlen返回表行的平均长度。

5)、delete_column_stats
作用:用于删除列的统计信息。
语法:dbms_stats.delete_column_stats(ownname varchar2,tabname varchar2,colname varchar2,
partname varchar2 default null,stattab varchar2 default null,statid varchar2 default null,
cascade_parts boolean default true,statown varchar2 default null,no_invalidate boolean default false);
其中cascade_parts指定是否要级联删除分区统计,no_invalidate指定是否要使相关游标无效。
例子:dbms_stats.delete_column_stats('scott','emp','ename');

6)、delete_index_stat
作用:用于删除索引统计信息
语法:dbms_stats.delete_index_stats(ownname varchar2,indname varchar2,
partname varchar2 default null,stattab varchar2 default null,
statid varchar2 default null,cascade_parts boolean default true,
statown varchar2 default null,no_invalidate boolean default false);
例子:exec dbms_stats.delete_index_stats('scott','pk_emp');

7)、delete_system_stats
作用:用于删除系统统计信息
语法:dbms_state.delete_system_stats(stattab varchar2 default null,
statid varchar2 default null,statown varchar2 default null);

8)、delete_table_stats
作用:用于删除表的统计信息
语法:dbms_stats.delete_table_stats(ownname varchar2,tabname varchar2,
partname varchar2 default null,stattab varchar2 default null,
statid varchar2 default null,cascade_parts boolean default true,
cascade_columns boolean default true,cascade_indexes boolean default true,
statown varchar2 default null,no_invalidate boolean default false);
其中cascade_columns指定是否级联删除列统计,cascade_indexes指定是否级联删除索引统计。
例子:exec dbms_stats.delete_table_stats('scott','emp');

9)、delete_schema_stats
作用:用于删除特定方案的统计信息
语法:dbms_stats.delete_schema_stats(ownname varchar2,stattab varchar2 default null,
statid varchar2 default null,statown varchar2 default null,no_invalidate boolean default false);
例子:exec dbms_stats.delete_schema_stats('scott');

10)、delete_database_stats
作用:用于删除整个数据库的统计信息
语法:dbms_stats.delete_database_stats(stattab varchar2 default null,statid varchar2 default null,
statown varchar2 default null,no_invalidate boolean default false);
例子:exec dbms_stats.delete_database_stats

11)、create_stat_table
作用:用于在特定方案建立统计表
语法:dbms_stats.create_stat_table(ownname varchar2,stattab varchar2,tblspace varchar2 default null);
其中tblspace指定统计表所在表空间。
例子:exec dbms_stats.create_stat_table('scott','stattab');

12)、drop_stat_table
作用:用于删除特定方案的统计表
语法:dbms_stats.drop_stat_table(ownnanme varchar2,stattab varchar2);
例子:exec dbms_stats.drop_stat_table('scott','stattab');

13)、export_column_stats
作用:用于导出列统计并存储到统计表中。
语法:dbms_stats.export_column_stats(ownname varchar2,tabname varchar2,colname varchar2,
partname varchar2 default null,stattab varchar2,
statid varchar2 default null,statown varchar2 default null);
例子:exec dbms_stats.export_column_stats('scott','emp','ename',stattab=>'stattab');

14)、export_index_stats
作用:导出索引统计信息,并存储到统计表中
语法:dbms_stats.export_index_stats(owname varchar2,indname varchar2,
partname varchar2 default null,stattab varchar2,
statid varchar2 default null,statown varchar2 default null,
statown varchar2 default null);
例子:exec dbms_stats.export_index_stats('scott','pk_emp',stattab=>'stattab');

15)、export_system_stats
作用:用于导出系统统计信息,并存储到统计表中。
语法:dbms_stats.export_system_stats(stattab varchar2,statid varchar2 default null,statown varchar2 default null);

16)、export_table_stats
作用:用于导出表的统计信息,并将其存储到统计表中
语法:dbms_stats.export_table_stats(ownname varchar2,tabname varchar2,partname varchar2 default null,stattab varchar2,
statid varchar2 default null,cascade boolean default true,statown varchar2 default null);
例子:exec dbms_stats.export_table_stats('scott','emp',stattab=>'stattab');

17)、export_schema_stats
作用:用于导出方案的统计信息,并将其存储到统计表中。
语法:dbms_stats.export_schema_stats(ownname varchar2,stattab varchar2,
statid varchar2 default null,statown varchar2 default null);
例子:exec dbms_stats.export_shcema_stats('scott',stattab=>'stattab');

18)、export_database_stats
作用:用于导出数据库的所有统计信息,并存储到统计表中。
语法:dbms_stats.export_database_stats(stattab varchar2,statid varchar2 default null,statown varchar2 default null);
例子:exec dbms_stats.export_database_stats(stattab=>'stattab',statown=>'scott');

19)、import_column_stats
作用:用于从统计表取得列统计,并将其存储到数据字典中。
语法:dbms_stats.import_column_stats(ownname varchar2,tabname varchar2,colname varchar2,
partname
varchar2 default null,stattab varchar2,statid varchar2 default
null,statown varchar2 default null,no_invalidate boolean default false);
例子:exec dbms_stats.import_column_stats('scott','emp','ename',stattab=>'stattab',statown=>'scott');

20)、import_index_stats
作用:用于从统计表中取得索引统计,并将其存储到数据字典中。
语法:dbms_stats.import_index_stats(ownname varchar2,indname varchar2,
partname varchar2 default null,stattab varchar2,statid varchar2 default null,
statown varchar2 default null,no_invalidate boolean default false);
例子:exec dbms_stats.import_index_stats('scott','pk_emp',stattab=>'stattab',statown=>'scott');

21)、import_system_stats
作用:用于从统计表中取得系统统计,并将其存储到数据字典中。
语法:dbms_stats.import_system_stats(stattab varchar2,statid varchar2 default null,statown varchar2 default null);

22)、import_table_stats
作用:用于从统计表中取得表统计,并将去存储到数据字段中。
语法:dbms_stats.import_table_stats(ownname varchar2,tabname varchar2,partname varchar2 default null,
stattab varchar2,statid varchar2 default null,cascade boolean default true,
statown varchar2 default null,no_invalidate boolean default false);
例子:exec dbms_stats.import_table_stats('scott','emp',stattab=>'stattab',statown=>'scott');

23)、import_schema_stats
作用:用于从统计表中取得方案统计,并将去存储到数据字典中。
语法:dbms_stats.import_schema_stats(owname varchar2,stattab varchar2,
statid varchar2 default null,statown varchar2 default null,no_invalidate boolean default flase);
例子:exec dbms_stats.import_schema_stats('scott',stattab=>'stattab',statown=>'scott');

24)、import_database_stats
作用:用于从统计表中取得数据库所有对象的统计,并将其存储到数据字典中。
语法:dbms_stats.import_database_stats(stattab varchar2,statid varchar2 default null,
statown varchar2 default null,no_invalidate boolean default false);
例子:exec dbms_stats.import_database_stats(stattab=>'stattab',statown=>'scott');

25)、gather_index_stats
作用:用于搜集索引统计
语法:dbms_stats.gather_index_stats(ownname varchar2,indname varchar2,
partname varchar2 default null,estimate_percent number default null,
stattab varchar2 default null,statid varchar2 default null,
statown varchar2 default null,degree number default null,
granularity varchar2 default 'default',no_invalidate boolean default false);
其中ownname指定方案名,indname指定索引名,partname指定分区名,estimate_percent指定要预估的行百分比,
stattab指定用户统计表名,statid指定与统计相关的标识符,statown指定包含STATTAB的方案名,degree指定并行度,
granularity指定要搜集索引的粒度(default,subpartition,partition,global,all),no_invalidate指定是否要使用相关游标无效。
例子:exec dbms_stats.gather_index_stats('scott','pk_emp');

26)、gather_table_stats
作用:用于搜集表统计
语法:dbms_stats.gather_table_stats(ownname varchar2,tabname varchar2,
partname varchar2 default null,estimate_percent number default null,
block_sample boolean default false,method_opt varchar2 default 'FOR ALL COLUMNS SIZE 1',
degree number default null,granularity varchar2 default 'default',cascade boolean default false,
stattab varchar2 default null,statid varchar2 default null,statown varchar2 default null,
no_invalidate boolean default false);
其中block_sample指定是否使用随机采样的块个数取代行百分比,method_opt指定列统计的搜集方法,cascade指定是否要级联搜集索引统计。
例子:exec dbms_stats.gather table_stats('scott','emp');

27)、gather_schema_stats
作用:用于搜集特定方案所有对象的统计
语法:dbms_stats.gather_schema_stats(ownname varchar2,
estimate_percent number default null,block_sample boolean default false,
method_opt varchar2 default 'FOR ALL COLUMNS SIZE 1',
degree number default null,granularity varchar2 default 'default',
cascade boolean default false,stattab varchar2 default null,
statid varchar2 default null,option varchar2 default 'GATHER',
objlist out ObjectTab,statown varchar2 default null,
no_invalidate boolean default false,gather_temp boolean default false);
其中option指定统计搜集选项(GATHER,GATHER AUTO,GATHER STALE,GATHER EMPTY,LIST AUTO,LIST STALE,LIST EMPTY);
objlist返回旧对象或空对象,gather_temp指定是否要搜集临时表统计。
例子:exec dbms_stats.gather_schema_stats('scott');

28)、gather_database_stats
作用:用于搜集数据库所有对象的统计。
语法:dbms_stats.gather_database_stats(
estimate_percnet number default null,block_sample boolean default false,
method_opt varchar2 default 'FOR ALL COLUMNS SIZE 1',
degree number default null,granularity varchar2 default 'default',
cascade boolean default false,stattab varchar2 default null,
statid varchar2 default null,options varchar2 default 'gather',
objlist out ObjectTab,statown varchar2 default null,
gather_sys boolean default false,no_invalidate boolean default false,
gather_temp boolean default false);
其中estimate_percent指定要预估的行百分比,block_sample指定是否使用随机采样的块个数取代行百分比,
method_opt指定列统计的搜集方法,degree指定并行度,
granularity指定要搜集索引的粒度(default,subpartition,partition,global,all),
cascade指定是否要级联搜集索引统计,stattab指定用户统计表名,statid指定与统计相关的标识符,
option指定统计搜集选项(GATHER,GATHER AUTO,GATHER STALE,GATHER EMPTY,LIST AUTO,LIST STALE,LIST EMPTY),
objlist返回旧对象或空对象,statown指定包含STATTAB的方案名,garher_sys指定是否要搜集sys用户对象的统计,
no_invalidate指定是否要使用相关游标无效,gather_temp指定是否要搜集临时表统计。
例子:exec dbms_stats.gather_database_stats.

29)、oather_system_stats
作用:用于搜集系统统计
语法:dbms_stats.gather_system_stats(
gathering_mode varchar2 default 'NOWORKLOAD',
interval integer default null,stattab varchar2 default null,
statid varchar2 default null,statown varchar2 default null);
其中gathering_mode用于指定搜集模式值(noworkload,interval,start|stop),
interval用于指定搜集统计的时间间隔(只适用interval模式)
例子:exec dbms_stats.gather_system_stats.

30)、UNLOCK_TABLE_STATS
作用:专治ORA-38029,解锁对象统计信息。
例子:DBMS_STATS.UNLOCK_TABLE_STATS('MID_SC','DM_OLD_FEATURE_VALUE')

3、综合示例

declare
dist_count number;
density number;
null_count number;
srec dbms_stats.statrec;
avg_col_len number;
numrows number;
numlblks number;
numdist number;
avglblk number;
avgdblk number;
clstfct number;
indlevel number;
avgrlen numer;
begin
--get_column_stats
dbms_stats.get_column_stats('scott','emp','job',distcnt=>dist_count,density=>density,nullcnt=>null_count,srec=>srec,avgclen=>avg_col_len);
dbms_output.put_line('不同列值个数'||dist_count);
dbms_output.put_line('列平均长度'||avg_col_len);
--get_index_stats
dbmns_stats.get_index_stats('scott','PK_EMP',numrows=>numrows,numlblks=>numlblks,
numdist=>numdist,avglblk=>avglblk,avgdblk=>avgdblk,clstfct=>clstfct,indlevel=>indlevel);
dbms_output.put_line('叶块个数'||numlblks);
dbms_output.put_line('索引层次'||indlevel);
--get_table_stats
dbms_stats.get_table_stats('scott','emp',numrows=>numrows,numlblks=>numlblks,avgrlen=>avgrlen);
dbms_output.put_line('表的总计行数'||numrows);
dbms_output.put_line('表所占有的块个数'||numlblks);
dbms_output.put_line('表行的平均水平'||avgrlen);
end;

二十、dbms_stats(用于搜集,查看,修改数据库对象的优化统计信息)的更多相关文章

  1. SQL Server修改数据库对象所有者(Owner)浅析

    在SQL Server数据库中如何修改数据库对象(表.视图.存储过程..)的所有者(Owner)呢?一般我们可以使用系统提供的系统存储过程sp_changeobjectowner来修改. 我们先看看s ...

  2. dbms_stats包更新、导出、导入、锁定统计信息

    dbms_stats包问世以后,我们可通过一种新的方式来为CBO收集统计数据.目前,已经不再推荐使用老式的Analyze分析表和dbms_utility方法来生成CBO统计数据.dbms_stats能 ...

  3. 14.6.11 Configuring Optimizer Statistics for InnoDB 配置优化统计信息用于InnoDB

    14.6.11 Configuring Optimizer Statistics for InnoDB 配置优化统计信息用于InnoDB 14.6.11.1 Configuring Persisten ...

  4. Python学习(二十五)—— Python连接MySql数据库

    转载自http://www.cnblogs.com/liwenzhou/p/8032238.html 一.Python3连接MySQL PyMySQL 是在 Python3.x 版本中用于连接 MyS ...

  5. 二十六、Nodejs 操作 MongoDb 数据库

    一. 在 Nodejs 中使用 Mongodb 前面的课程我们讲了用命令操作 MongoDB,这里我们看下如何用 nodejs 来操作数据库需要引包: npm install mongodb --sa ...

  6. Spring Boot教程(二十九)使用JdbcTemplate操作数据库

    使用JdbcTemplate操作数据库 Spring的JdbcTemplate是自动配置的,你可以直接使用@Autowired来注入到你自己的bean中来使用. 举例:我们在创建User表,包含属性n ...

  7. Python之路【第十九章】:Django 数据库对象关系映射

    Django ORM基本配置 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去 ...

  8. [Python爬虫] 之二十八:Selenium +phantomjs 利用 pyquery抓取网站排名信息

    一.介绍 本例子用Selenium +phantomjs爬取中文网站总排名(http://top.chinaz.com/all/index.html,http://top.chinaz.com/han ...

  9. javaweb学习总结二十四(servlet经常用到的对象)

    一:ServletConfig对象 1:用来封装数据初始化参数,在服务器web.xml配置文件中可以使用<init-param>标签配置初始化参数. 2:实例演示 web.xml文件中配置 ...

随机推荐

  1. 【转载】IDEA:放置型塔防备忘录

    下周开始做原型了,我需要再次细细的整理一遍设计思路,确保每一个设计都能为了我所追求的玩家体验添砖加瓦,而不是互相打架.同时本文还能提供最原始的VISION,待到将来开发万一陷入泥淖,翻出此文来可以起到 ...

  2. mycat实战之性能测试

    1.安装性能监控工具 1.1 nmon 安装nmon de >#下载地址 http://nmon.sourceforge.net/pmwiki.php?n=Site.Download nmon1 ...

  3. java synchronized关键字的底层实现

    每个对象都有一个锁(Monitor,监视器锁),class对象也有锁,如果synchronized关键字修饰同步代码块,通过反编译可以看到,其实是有个monitorenter和monitorexit指 ...

  4. java5引入的并发编程库

    java5之后引入了java.util.concurrent包,专门用于解决java多线程问题.   AtomicInteger用于解决原子性操作(i++,i--的问题): AtomicInteger ...

  5. STM32 HAL库详解 及 手动移植

    源: STM32 HAL库详解 及 手动移植

  6. elasticsearch 5.x集群安装

    1. 下载 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1.tar.gz 2. 解压 为便于 ...

  7. 20145312 《Java程序设计》第三周学习总结

    20145312 <Java程序设计>第三周学习总结 学习笔记 Chapter 4 4.1类与对象 4.1.1 定义类 1.以服饰设计为例,类定义用class关键词,建立衣服实例要用new ...

  8. 试编hello world

    这里是一些vim的使用方法: 这时不知道怎么编译了  看了上面的知识 也问了志伟,我就知道了.是要“./hello”就可以了 自己敲了代码,今后也会多试运行,编译,得尽快安装虚拟机了.

  9. 记一次redis key丢失的问题排查

    最近测试环境的redis经常性发生某些key丢失的问题,最终的找到的问题让人大吃一惊. 复盘一下步骤: 1.发现问题 不知道从某天开始,后台经常报错,原因是某些key丢失,一开始不在意,以为是小bug ...

  10. svn checkout 提示“由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。”解决方法

    安装好之后再windows上checkout项目,一直出错:“由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败”:在尝试了很多次之后找到了最后的问题所在.  在网上找的方法试过了, ...