1 truncate后表还占空间
多数情况下是因为表定义里面的initial_extent设的大。当然,也可能本身tablespace设置的uniform. size很大。
2 如何回收
如果是表定义里面的initial_extent设的大,那么,需要用alter table .. move storage(initial 64K) 的方式来降低。
如果本身tablespace设置的uniform. size很大,alter table .. move storage是没用的,只能通过新建tablespace并把该table move到新tablespace底下才行。
3 没有记录,truncate时间还挺长,什么原因
可能是在回收free space. 特别常见于字典管理的,extent特多的table.
解决方法就是先:
truncate table .. reuse storage
然后慢慢的alter table .. deallocate storage keep ..
12:16:31 SQL> select segment_name ,sum(bytes) s from dba_segments where wner='OO'group by segment_name having sum(bytes)>2*1024*
SEGMENT_NAME S
--------------------------------------------------------------------------------- ----------
V_8600000002008030607000002 65011712
N_8600000002008030607000002 2993750016
V_8600000002008030607000005 900726784
V_8600000002008030607000001 3156213760
已用时间: 00: 00: 00.09
已用时间: 00: 00: 00.01
12:17:12 SQL> alter table V_8600000002008030607000002 move partition P8611 storage(initial 64k);
表已更改。
已用时间: 00: 00: 00.01
12:17:22 SQL> select segment_name ,sum(bytes) s from dba_segments where wner='OO'group by segment_name having sum(bytes)>2*1024*
SEGMENT_NAME S
--------------------------------------------------------------------------------- ----------
V_8600000002008030607000002 62980096
N_8600000002008030607000002 2993750016
V_8600000002008030607000005 900726784
V_8600000002008030607000001 3156213760
已用时间: 00: 00: 00.10
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13165828/viewspace-607678/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/13165828/viewspace-607678/