oracle 在删除表,表空间,用户时 如何释放磁盘空间

oracle 在删除表,表空间,用户时 如何释放磁盘空间,第1张

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// 就可以了。

如果是数据库表文件要删的话,就不和你说了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9938389.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存