当前位置:  数据库>oracle

更新Oracle表的统计信息 GATHER_TABLE_STATS

    来源: 互联网  发布时间:2017-05-14

    本文导语: 需要用到dbms_stats这个包的GATHER_TABLE_STATS过程,其中拥有者和表名必须填。 PROCEDURE GATHER_TABLE_STATS Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- VARCHAR...

需要用到dbms_stats这个包的GATHER_TABLE_STATS过程,其中拥有者和表名必须填。

PROCEDURE GATHER_TABLE_STATS
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
VARCHAR2 IN
VARCHAR2 IN
PARTNAME VARCHAR2 IN DEFAULT
ESTIMATE_PERCENT NUMBER IN DEFAULT
BLOCK_SAMPLE BOOLEAN IN DEFAULT
METHOD_OPT VARCHAR2 IN DEFAULT
DEGREE NUMBER IN DEFAULT
GRANULARITY VARCHAR2 IN DEFAULT
CASCADE BOOLEAN IN DEFAULT
STATTAB VARCHAR2 IN DEFAULT
STATID VARCHAR2 IN DEFAULT
STATOWN VARCHAR2 IN DEFAULT
NO_INVALIDATE BOOLEAN IN DEFAULT
STATTYPE VARCHAR2 IN DEFAULT
FORCE BOOLEAN IN DEFAULT

exec dbms_stats.gather_table_stats('SCOTT','D');

 

表的统计信息不是实时取的。所以有时候刚刚delete掉表中数据,并不能实时从user_tables中的num_rows反应出来。这时候收集下表的统计信息即可。

 

SQL> select table_name ,num_rows from user_tables where table_name='D';

TABLE_NAME NUM_ROWS
--------------- ----------
D

SQL> select * from d;

DEPTNO DNAME
---------- ----------------------------
10 ACCOUNTING
20 RESEARCH
30 SALES
40 OPERATIONS

SQL> delete from d where deptno=30;

1 row deleted.

SQL> commit;

Commit complete.

SQL> select * from d;

DEPTNO DNAME
---------- ----------------------------
10 ACCOUNTING
20 RESEARCH
40 OPERATIONS

SQL> select table_name ,num_rows from user_tables where table_name='D';

TABLE_NAME NUM_ROWS
--------------- ----------
D

这时候行数还是4。我们收集下统计信息。

SQL> exec dbms_stats.gather_table_stats('SCOTT','D');

PL/SQL procedure successfully completed.

SQL> select table_name ,num_rows from user_tables where table_name='D';

TABLE_NAME NUM_ROWS
--------------- ----------
D

 

==============================================================================================

还原刚才删掉的数据……

 

SQL> alter session set nls_date_format ='yyyy-mm-dd hh24:mi:ss';


Session altered.

SQL> SQL>
SQL> select sysdate from dual;

SYSDATE
-------------------
2012-02-28 05:01:49

SQL> select * from d as of timestamp to_timestamp('2012-02-28 04:50:00','yyyy-mm-dd hh24:mi:ss') where deptno=30;

DEPTNO DNAME
---------- ----------------------------
30 SALES

SQL> insert into d select * from d as of timestamp to_timestamp('2012-02-28 04:50:00','yyyy-mm-dd hh24:mi:ss') where deptno=30;

1 row created.

SQL> select * from d;

DEPTNO DNAME
---------- ----------------------------
10 ACCOUNTING
20 RESEARCH
40 OPERATIONS
30 SALES

SQL> commit;

Commit complete.


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 国内哪里可以下载oracle8.1.7或更新版本
  • Oracle 2010年4月更新修复Oracle协作套件安全漏洞
  • Oracle 2010年7月更新修复Oracle Fusion中间件安全漏洞
  • oracle更新xml节点问题的一些细节
  • Oracle 2010年7月更新修复多个Oracle Database安全漏洞
  • Oracle 2010年7月更新修复Transportation Manager安全漏洞
  • Oracle 2010年7月更新修复Enterprise Manager Grid Control安全漏洞
  • jsp如何选择更新oracle的date字段
  • Oracle 2010年7月更新修复多个PeopleSoft安全漏洞
  • Oracle 2010年7月更新修复多个E-Business Suite安全漏洞
  • Oracle 2010年4月更新修复多个E-Business Suite安全漏洞
  • Oracle多表级联更新详解
  • ORACLE学习笔记-添加更新数据函数篇
  • 如何用不算很熟练的jsp,oracle,javascript,html,css等建设动态网站,要网页打开速度快、易于日常维护更新?
  • 利用可更新ResultSet的updateBinaryStream()可以把图片存到mySql数据库,却不能存到Oracle数据库,怎么办?
  • 批量更新关联表(oracle、sql server)
  • 为什么我用javabean更新不了数据库?javabean,oracle高手请进!!!!!高分相赠!!!在线等待中。。。
  • c#多线程更新窗口(winform)GUI的数据
  • Fedora 的更新包有必要更新么?
  • Windows7 更新操作步骤
  • ubuntu 更新信息存放位置?
  • Android 自动更新Demo
  • Cheney程序更新管理器
  • 怎么才能够更新数据库?
  • 关于linux 的项目更新问题??
  • Java 应用自动更新框架 Jupidator
  • jdbc可更新数据集问题,困扰我两日!!
  • 内存数据更新问题
  • centos5 今天的新的更新有必要吗?
  • Google自动更新程序 Omaha
  • 关于JTable自动更新数据的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,