oracle删除表,释放表空间,需要通过truncate table xx,然后drop table xxx 来释放,或者直接通过 drop table xxx purge;
示例如下:
1、创建测试表,
create table test_space(id number, name varchar2(20))
2、插入样例数据,
insert into test_space
select level, 'test_space_'||level
from dual
connect by level<100000
3、查看该表存储,占用3145728B大小,
select * from user_segments t where segment_name = upper('test_space')
4、truncate清空表数据,truncate table test_space,然后再次查询表存储,存储变为65536B,已释放;
truncate table test_space
select * from user_segments t
where segment_name = upper('test_space')
5、把表再次删除后,存储已释放;
drop table test_space
select bytes from user_segments t
where segment_name = upper('test_space')
oracle删除数据不删分区不会释放表空间。生产环境中,经常会遇到表由于数据不断插入,导致空间越来越大,由于前期配置问题,没有做分区或者其他优化,而且生产数据实时向表插入。要删除历史数据来释放空间。由于没有分区表,所以无法分块对表进行清理。我觉得还是概念不清析,问题不太明白呀。所果只是简单的清空表的话,还是很容易的。
drop table TABLE_NAME //连表结构都删了。
要是清空内容,留着表结构,就是:
truncate tablename// 就可以了。
如果是数据库表文件要删的话,就不和你说了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)