由於分區表數據增加;沒做清除操作;導致表空間告急。需要清理很久之前的數據;釋放空間。步驟如下
一,查看哪個表占的空間
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是全局索引
五, 驗證是否釋放空間;(可忽略)
再執行第一步;