`
jayyanzhang2010
  • 浏览: 371710 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

DBMS_STATS分析表

阅读更多

作用: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);

 

例如:

在使用DBMS_STATS分析表的时候,我们经常要保存之前的分析,以防分析后导致系统性能低下然后进行快速恢复。

1、首先创建一个分析表,该表是用来保存之前的分析值:

SQL> begin
  2  dbms_stats.create_stat_table(ownname=>'TEST',stattab=>'STAT_TABLE');
  3  end;
  4  /

PL/SQL 过程已成功完成。

SQL> begin
  2  dbms_stats.gather_table_stats(ownname=>'TEST',tabname=>'T1');
  3  end;
  4  /

PL/SQL 过程已成功完成。


2、导出表分析信息到stat_table中

SQL> begin
  2  dbms_stats.export_table_stats(ownname=>'TEST',tabname=>'T1',stattab=>'STAT_TABLE');
  3  end;
  4  /

PL/SQL 过程已成功完成。

SQL> select count(*) from TEST.STAT_TABLE;

  COUNT(*)
----------
         4

EXPORT_COLUMN_STATS:导出列的分析信息
EXPORT_INDEX_STATS:导出索引分析信息
EXPORT_SYSTEM_STATS:导出系统分析信息
EXPORT_TABLE_STATS:导出表分析信息
EXPORT_SCHEMA_STATS:导出方案分析信息
EXPORT_DATABASE_STATS:导出数据库分析信息
IMPORT_COLUMN_STATS:导入列分析信息
IMPORT_INDEX_STATS:导入索引分析信息
IMPORT_SYSTEM_STATS:导入系统分析信息
IMPORT_TABLE_STATS:导入表分析信息
IMPORT_SCHEMA_STATS:导入方案分析信息
IMPORT_DATABASE_STATS:导入数据库分析信息
GATHER_INDEX_STATS:分析索引信息
GATHER_TABLE_STATS:分析表信息,当cascade为true时,分析表、列(索引)信息
GATHER_SCHEMA_STATS:分析方案信息
GATHER_DATABASE_STATS:分析数据库信息
GATHER_SYSTEM_STATS:分析系统信息

 

4、删除分析信息

SQL> begin
  2  dbms_stats.delete_table_stats(ownname=>'TEST',tabname=>'T1');
  3  end;
  4  /

PL/SQL 过程已成功完成。

SQL> SELECT num_rows,blocks,empty_blocks as empty, avg_space, chain_cnt, avg_row_len FROM dba_tables WHERE owner = 'TEST'
 AND table_name = 'T1';

  NUM_ROWS     BLOCKS      EMPTY  AVG_SPACE  CHAIN_CNT AVG_ROW_LEN
---------- ---------- ---------- ---------- ---------- -----------

没有查到分析数据


5、导入分析信息

SQL> begin
  2  dbms_stats.import_table_stats(ownname=>'TEST',tabname=>'T1',stattab=>'STAT_TABLE');
  3  end;
  4  /

PL/SQL 过程已成功完成。

SQL> SELECT num_rows,blocks,empty_blocks as empty, avg_space, chain_cnt, avg_row_len FROM dba_tables WHERE owner = 'TEST'
 AND table_name = 'T1';

  NUM_ROWS     BLOCKS      EMPTY  AVG_SPACE  CHAIN_CNT AVG_ROW_LEN
---------- ---------- ---------- ---------- ---------- -----------
      1000          5          0          0          0          16
可以查到分析数据

 

在使用DBMS_STATS分析表的时候,我们经常要保存之前的统计信息,以防分析后导致系统性能低下然后进行快速恢复。
首先创建一个备份表,该表是用来保存之前的统计信息

 

Sql代码  收藏代码
  1. BEGIN  
  2.   --创建统计信息备份表  
  3.   DBMS_STATS.CREATE_STAT_TABLE(OWNNAME => USER,  
  4.                                STATTAB => 'stat_carmot_develop');  
  5.   --导出统计信息到备份表  
  6.   DBMS_STATS.EXPORT_SCHEMA_STATS(OWNNAME => USER,  
  7.                                  STATTAB => 'stat_carmot_develop',  
  8.                                  STATOWN => USER);  
  9.   --删除统计信息  
  10.   DBMS_STATS.DELETE_SCHEMA_STATS(USER);  
  11.   --导入统计信息  
  12.   DBMS_STATS.IMPORT_SCHEMA_STATS(USER'stat_carmot_develop');  
  13.   --收集统计信息  
  14.   DBMS_STATS.GATHER_SCHEMA_STATS(USER);  
  15.   --恢复统计信息  
  16.   DBMS_STATS.RESTORE_SCHEMA_STATS(OWNNAME         => USER,  
  17.                                   AS_OF_TIMESTAMP => SYSTIMESTAMP - 0.5,  
  18.                                   FORCE           => TRUE);  
  19. END;  
分享到:
评论

相关推荐

    DBMS_STATS.GATHER_TABLE_STATS详解.pdf

    作用: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.pdf

    Oracle统计分析-dbms_stats.pdf

    orcale常用命令

    数据字典里存有用户信息、用户的权限信息、所有数据对象信息、表的约束条件、统计分析数据库的视图等。 我们不能手工修改数据字典里的信息。  很多时候,一般的ORACLE用户不知道如何有效地利用它。  dictionary...

    性能调优分析之:Oracle 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...

    Oracle数据库管理员技术指南

    8.9.3 使用 DBMS_STATS 收集性能统计 数据 8.10 优化环境 8.10.1 怎样优化 Net8/SQL*Net 8.10.2 监控并优化系统资源 8.11 回顾 第9章 Oracle8i 的新特性 9.1 新的性能优化特性 9.1.1 设计的稳定性和存储概要...

    统计分析信息拷贝

    数据库统计分析信息拷贝介绍 数据库统计分析简介 统计分析主要包括产生表及索引的统计... dbms_stats能良好地估计统计数据(尤其是针对较大的分区表),并能获得更好的统计结果,最终制定出速度更快的SQL执行计划。

    让Oracle跑得更快 Oracle 10g性能分析与优化思路.part2.rar

    7.2 dbms_stats包 147 7.3 动态采样 176 7.3.1 什么是动态采样 176 7.3.2 动态采样的级别 182 7.3.3 什么时候使用动态采样? 185 7.4 小结 185 第8章 并行执行 186 8.1 并行和olap系统 187 8.2 并行处理的机制 189 ...

    让Oracle跑得更快 Oracle 10g性能分析与优化思路.part1.rar

    7.2 dbms_stats包 147 7.3 动态采样 176 7.3.1 什么是动态采样 176 7.3.2 动态采样的级别 182 7.3.3 什么时候使用动态采样? 185 7.4 小结 185 第8章 并行执行 186 8.1 并行和olap系统 187 8.2 并行处理的机制 189 ...

    ORACLE重建索引总结

    2、在执行步骤1的session中查询index_stats表,不要到别的session去查询。 SQL&gt;select height,DEL_LF_ROWS/LF_ROWS from index_stats; 说明:当 查询出来的 height&gt;=4 或者 DEL_LF_ROWS/LF_ROWS&gt;0.2 的...

    ora分析脚本

    - smm [limited]: SQL memory manager stats for active workareas - onepass: Run an ora wplan on all one-pass cursors - mpass: Run an ora wplan on all multi-pass cursors - pga: tell how much pga ...

Global site tag (gtag.js) - Google Analytics