xiaocainiao 发表于 2012-6-4 11:03:48

delete数据,回收表空间

9i的数据库,因系统中存在几个大表,使的表空间不足。 想使用DELETE 命令删除一些数据后, 使表变小, 从而回收表空间,使表空间的使用率下降,系统为7X24的,只能在线做。求解决办法,谢谢。

飘在网络 发表于 2012-6-4 14:41:26

delete数据不会释放表空间可以truncate

xiaocainiao 发表于 2012-6-4 16:22:06

数据表一直在使用,truncate了不可以吧

飘在网络 发表于 2012-6-4 17:53:50

利用truncate功能写个存储过程:
create procedure test is
begin
delete * from abb where ???;
commit;
execute immediate 'create tableaaa as select * from abb';
commit;
execute immediate 'truncate table abb';
commit;
insert into abb select * from aaa;
commit;
execute immediate 'drop table aaa purge';
commit;
end;

pjlcc1234 发表于 2012-8-10 08:52:19

还是申请停机时间吧,在线做不现实.

无是无非 发表于 2012-8-13 14:51:22

先delete需要删除的数据,再做表空间切换。

DELETE FROM xxx WHERE ....;
ALTER TABLE xxx MOVE TABLESPACE USERS;
页: [1]
查看完整版本: delete数据,回收表空间