oracle数据库分区表清理,ORACLE--分区表数据清理

当Oracle分区表空间不足时,可通过查看表占用空间、检查分区和索引类型来清理旧数据。本地索引在删除分区时会自动删除,而全局索引需重建。清理步骤包括:查看大占用表、确定要清理的分区、检查索引类型、删除分区并重建全局索引,最后验证空间释放。
摘要由CSDN通过智能技术生成

由于分区表数据增加;没做清除操作;导致表空间告急。需要清理很久之前的数据;释放空间。步骤如下

一,查看哪个表占的空间

SELECT t.segment_name, SUM(t.bytes / 1024 / 1024)

FROM user_segments t

GROUP BY t.segment_name

ORDER BY SUM(t.bytes / 1024 / 1024) DESC

二、查看每个子分区的记录

SELECT a.table_name,a.partition_name FROM user_tab_partitions a WHERE a.table_name = 'TBL_SMSMT_AUTOACTIV_BILL_HIS';

三、检查分区表的索引是否LOCAL类型

--先查看该表的索引

SELECT * FROM User_Indexes a WHERE a.table_name = 'TBL_SMSMT_AUTOACTIV_BILL_HIS';

--在查看索引是否为local类型;若不存在;则为全局索引

select table_name,index_name,LOCALITY from user_part_indexes where table_name='TBL_SMSMT_AUTOACTIV_BILL_HIS' ;

四、如果都是LOCAL索引,直接清除表分区数据(如果是全局索引,清除完成后需要重建)

本地索引在你删除子分区表的时候会跟着删除;不会影响。

ALTER TABLE TBL_SMSMT_AUTOACTIV_BILL_HIS DROP PARTITION P201305;

ALTER TABLE TBL_SMSMT_AUTOACTIV_BILL_HIS DROP PARTITION P201306;

ALTER TABLE TBL_SMSMT_AUTOACTIV_BILL_HIS DROP PARTITION P201307;

ALTER TABLE TBL_SMSMT_AUTOACTIV_BILL_HIS DROP PARTITION P201308;

ALTER TABLE TBL_SMSMT_AUTOACTIV_BILL_HIS DROP PARTITION P201309;

ALTER TABLE TBL_SMSMT_AUTOACTIV_BILL_HIS DROP PARTITION P201310;

ALTER INDEX SYS_C00105590 REBUILD;

ALTER INDEX I_TBL_SMSMT_AUTOACTIV_BILL_HIS REBUILD; --其中SYS_C00105590,I_TBL_SMSMT_AUTOACTIV_BILL_HIS是全局索引

五, 验证是否释放空间;(可忽略)

再执行第一步;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值