delete数据,回收表空间

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

写了 10 篇文章,拥有财富 385,被 3 人关注

转播转播 分享分享 分享淘帖
回复

使用道具

P4 | 发表于 2012-6-4 14:41:26
delete数据不会释放表空间  可以truncate
回复

使用道具

P4 | 发表于 2012-6-4 16:22:06
数据表一直在使用,truncate了不可以吧
回复

使用道具

P4 | 发表于 2012-6-4 17:53:50
利用truncate功能写个存储过程:
create procedure test is
begin
delete * from abb where ???;
commit;
execute immediate 'create table  aaa 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;
回复

使用道具

P3 | 发表于 2012-8-10 08:52:19
还是申请停机时间吧,在线做不现实.
回复

使用道具

P4 | 发表于 2012-8-13 14:51:22
先delete需要删除的数据,再做表空间切换。

DELETE FROM xxx WHERE ....;
ALTER TABLE xxx MOVE TABLESPACE USERS;
回复

使用道具

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈