需要用到dbms_stats这个包的GATHER_TABLE_STATS过程,其中拥有者和表名必须填。PROCEDURE GATHER_TABLE_STATS
Argument NameTypeIn/Out Default?
------------------------------ ----------------------- ------ --------
OWNNAMEVARCHAR2IN
TABNAMEVARCHAR2IN
PARTNAME VARCHAR2IN DEFAULT
ESTIMATE_PERCENT NUMBERIN DEFAULT
BLOCK_SAMPLE BOOLEAN IN DEFAULT
METHOD_OPT VARCHAR2IN DEFAULT
DEGREE NUMBERIN DEFAULT
GRANULARITYVARCHAR2IN DEFAULT
CASCADEBOOLEAN IN DEFAULT
STATTABVARCHAR2IN DEFAULT
STATID VARCHAR2IN DEFAULT
STATOWNVARCHAR2IN DEFAULT
NO_INVALIDATEBOOLEAN IN DEFAULT
STATTYPE VARCHAR2IN DEFAULT
FORCEBOOLEAN IN DEFAULTexec 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_NAMENUM_ROWS
--------------- ----------
D4SQL> select * from d; DEPTNO DNAME
---------- ----------------------------
10 ACCOUNTING
20 RESEARCH
30 SALES
40 OPERATIONSSQL> delete from d where deptno=30;1 row deleted.SQL> commit;Commit complete.SQL> select * from d; DEPTNO DNAME
---------- ----------------------------
10 ACCOUNTING
20 RESEARCH
40 OPERATIONSSQL>select table_name ,num_rows from user_tables where table_name="D";TABLE_NAMENUM_ROWS
--------------- ----------
D4这时候行数还是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_NAMENUM_ROWS
--------------- ----------
D3 ==============================================================================================还原刚才删掉的数据…… 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:49SQL> select * from das of timestamp to_timestamp("2012-02-28 04:50:00","yyyy-mm-dd hh24:mi:ss") where deptno=30; DEPTNO DNAME
---------- ----------------------------
30 SALESSQL> insert into d select * from das 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 SALESSQL> commit;Commit complete.Oracle conn 协议适配器错误解决CentOS上MySQL安装配置操作说明相关资讯 Oracle入门基础教程 GATHER_TABLE_STATS
- Linux x86 and x86-64 系统中的 (08/05/2014 10:12:29)
- Oracle系统繁忙时,快速定位 (02/18/2013 19:31:55)
- Oracle手工建库笔记 (12/28/2012 11:45:03)
| - Oracle 中极易混淆的几个 NAME 的 (07/29/2014 21:04:17)
- Oracle数据库用SQL实现快速分页 (12/29/2012 14:02:30)
- Oracle自治事务引起的死锁 (12/27/2012 18:30:46)
|
本文评论 查看全部评论 (0)