ITPub博客

首页 > 数据库 > Oracle > 回收表的HWM-10G新功能

回收表的HWM-10G新功能

原创 Oracle 作者:jolly10 时间:2008-07-08 09:52:57 0 删除 编辑

发现perfstats表空间已满面了,STATS$SQL_SUMMARY和其索引占用的空间最大,用delete删掉一些STATS的信息后表所占的空间不会释放。

10G已可以用shrink space来回收HWM了,9i是不行的。

下面是9i的测试。

[@more@]


1.删除STATS的信息.

SQL> delete stats$snapshot where snap_id<29;

28 rows deleted.

SQL> commit;

2.分析一下,看表的实际情况是怎样
SQL> ANALYZE TABLE perfstat.stats$sql_summary COMPUTE STATISTICS;

Table analyzed.

SQL> SELECT segment_name,segment_type,blocks
2 From dba_segments where segment_name='STATS$SQL_SUMMARY';

SEGMENT_NAME SEGMENT_TYPE BLOCKS
-------------------- -------------------
STATS$SQL_SUMMARY TABLE 5760

占用了5760个blocks.

SQL> SELECT table_name,num_rows,blocks,empty_blocks
2 from dba_tables where table_name='STATS$SQL_SUMMARY';

TABLE_NAME NUM_ROWS BLOCKS EMPTY_BLOCKS
------------ -------------- ------- -------------
STATS$SQL_SUMMARY 310729 5759 0

注意:BLOCKS + EMPTY_BLOCKS (5759+0)比DBA_SEGMENTS.BLOCKS少个数据库块,这是因为有一个数

据库块被保留用作segment header。DBA_SEGMENTS.BLOCKS 表示分配给这个表的所有的数据库块的数

目。USER_TABLES.BLOCKS表示已经使用过的数据库块的数目。

因为上面已删除掉一些资料,5759个blocks应该有空的才对,通过下面的语句查看实际占用了多少

block.
SQL> SELECT COUNT (DISTINCT DBMS_ROWID.ROWID_BLOCK_NUMBER(rowid)||

DBMS_ROWID.ROWID_RELATIVE_FNO(rowid)) "Used"
2 FROM perfstat.stats$sql_summary;

Used
----------
5254

实际只有了5254个,空闲的有5760-5254=506.通过DBMS_SPACE也可以直观的查看.

SQL> set serveroutput on;
SQL> exec show_space('STATS$SQL_SUMMARY','PERFSTAT');
Free Blocks............................. 506
Total Blocks............................ 5,760
Total Bytes............................. 47,185,920
Total MBytes............................ 45
Unused Blocks........................... 0
Unused Bytes............................ 0
Last Used Ext FileId.................... 53
Last Used Ext BlockId................... 25,097
Last Used Block......................... 128

PL/SQL procedure successfully completed.

3.由于版本是9.0.0.1的,不支持shrink操作.
SQL> alter table perfstat.STATS$SQL_SUMMARY enable row movement;

Table altered.

SQL> alter table perfstat.STATS$SQL_SUMMARY shrink space;
alter table perfstat.STATS$SQL_SUMMARY shrink space
*
ERROR at line 1:
ORA-01735: invalid ALTER TABLE option

真郁闷,有机会到10g上测试一下,再发上来.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/271283/viewspace-1006929/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: RMAN异地恢复实战
请登录后发表评论 登录
全部评论

注册时间:2008-02-20

  • 博文量
    263
  • 访问量
    826745