本文共 4281 字,大约阅读时间需要 14 分钟。
A, B 为两个Table
A, B 的数据分别放在 erp_data 表空间下A, B 的索引分别放在 erp_indx 表空间下那么我们使用下面的两个语句删除两个表中的数据Truncate table A drop storage ;Truncate table B reuse storage ;得到的结果将是:Truncate table A drop storage ;--data : 数据部分所在的extent 空间会被释放(释放回收到 minextents个extent),腾出来的空间可以供其它segment 使用 。--index : B表的index部分会数据删除,extent部分也被释放,剩下第一个extent--hwm : 会将HWM重新设置到第一个Block的位置(hwm会改变).Truncate table B reuse storage ;
--data : 数据部分所在的extent 空间不会被回收(仅仅数据会被删除),数据删除之后的freespace 空间只能供本表使用,不可以供其它 segment 使用 。--index : B表的index部分会数据删除,但是保留extent 部分--hwm : 会将HWM重新设置到第一个Block的位置(hwm会改变).1、开始,建两张表A,B及相应的索引inx_A,idx_BSQL> show userUSER is "QIUYB"SQL> create table A (col number);Table created.SQL> insert into A values(1);1 row created.SQL> insert into A select * from A;1 row created.SQL> /2 rows created.SQL> /4 rows created. SQL> / 8 rows created. SQL> / 16 rows created. SQL> / 32 rows created. SQL> / 64 rows created. SQL> / 128 rows created. SQL> / 256 rows created. SQL> / 512 rows created. SQL> / 1024 rows created. SQL> / 2048 rows created. SQL> / 4096 rows created. SQL> / 8192 rows created. SQL> / 16384 rows created. SQL> / 32768 rows created. SQL> / 65536 rows created. SQL> commit; Commit complete. SQL> create table B as select * from A; Table created. SQL> create index idx_A on A(col); Index created. SQL> create index idx_B on B(col); Index created. 2、查看一下这四个段对于extent的使用。 SQL> select segment_name,extent_id,bytes 2 from user_extents 3 where segment_name like '%A%' OR segment_name like '%B%' 4 order by 1, 5 / SEGMENT_NA EXTENT_ID BYTES ---------- ---------- ---------- A 0 65536 A 1 65536 A 2 65536 A 3 65536 A 4 65536 A 5 65536 A 6 65536 A 7 65536 A 8 65536 A 9 65536 A 10 65536 A 11 65536 A 12 65536 A 13 65536 A 14 65536 A 15 65536 A 16 1048576 B 0 65536 B 1 65536 B 2 65536 B 3 65536 B 4 65536 B 5 65536 B 6 65536 B 7 65536 B 8 6553 B 9 65536 B 10 65536 B 11 65536 B 12 65536 B 13 65536 B 14 65536 B 15 65536 B 16 1048576 IDX_A 0 65536 IDX_A 1 65536 IDX_A 2 65536 IDX_A 3 65536 IDX_A 4 65536 IDX_A 5 65536 IDX_A 6 65536 IDX_A 7 65536 IDX_A 8 65536 IDX_A 9 65536 IDX_A 10 65536 IDX_A 11 65536 IDX_A 12 65536 IDX_A 13 65536 IDX_A 14 65536 IDX_A 15 65536 IDX_A 16 1048576 IDX_A 17 1048576 IDX_B 0 65536 IDX_B 1 65536 IDX_B 2 65536 IDX_B 3 65536 IDX_B 4 65536 IDX_B 5 65536 IDX_B 6 65536 IDX_B 7 65536 IDX_B 8 65536 IDX_B 9 65536 IDX_B 10 65536 IDX_B 11 65536 IDX_B 12 65536 IDX_B 13 65536 IDX_B 14 65536 IDX_B 15 65536 IDX_B 16 1048576 IDX_B 17 1048576 70 rows selected.3、查看A,B表的HWM,计算公式HWM=total_blocks-empty_blocks,可以看到A,B的HWM分别为232,168SQL> analyze table A compute statistics;Table analyzed.SQL> analyze table B compute statistics;Table analyzed.SQL> col table_name format a10SQL> SELECT TABLE_NAME,blocks,empty_blocks,blocks-empty_blocks hwm2 FROM user_tables3 WHERE table_name IN ('A','B')4 /SQL> set pagesize 10SQL> /TABLE_NAME BLOCKS EMPTY_BLOCKS HWM---------- ---------- ------------ ----------A 244 12 232B 212 44 1684、以DROP STORAGE,REUSE STORAGE两种选项对A,B做不同的操作看差别
SQL> truncate table A DROP STORAGE;Table truncated.SQL> truncate table B REUSE STORAGE;Table truncated.SQL> SET PAGESIZE 300SQL> select segment_name,extent_id,bytesfrom user_extentswhere segment_name like '%A%' OR segment_name like '%B%'order by 1,2/SEGMENT_NA EXTENT_ID BYTES---------- ---------- ----------A 0 65536B 0 65536B 1 65536B 2 65536B 3 65536B 4 65536B 5 65536B 6 65536B 7 65536B 8 65536B 9 65536B 10 65536B 11 65536B 12 65536B 13 65536B 14 65536B 15 65536B 16 1048576IDX_A 0 65536IDX_B 0 65536IDX_B 1 65536IDX_B 2 65536IDX_B 3 65536IDX_B 4 65536IDX_B 5 65536IDX_B 6 65536IDX_B 7 65536IDX_B 8 65536IDX_B 9 65536IDX_B 10 65536IDX_B 11 65536IDX_B 12 65536IDX_B 13 65536IDX_B 14 65536IDX_B 15 65536IDX_B 16 1048576IDX_B 17 104857637 rows selected.
可以看到A表本身及其索引idx_A的extent都是释放的,都保留到第一个extent。
SQL> analyze table A compute statistics;Table analyzed.SQL> analyze table B compute statistics;Table analyzed.SQL> SELECT TABLE_NAME,blocks,empty_blocks,blocks-empty_blocks hwmFROM user_tablesWHERE table_name IN ('A','B') ;/TABLE_NAME BLOCKS EMPTY_BLOCKS HWM---------- ---------- ------------ ----------A 0 8 -8B 0 256 -256可以看到两个表的hwm都回到了第一个block。转载地址:http://qgfmi.baihongyu.com/