ORACLE--分區表數據清理


由於分區表數據增加;沒做清除操作;導致表空間告急。需要清理很久之前的數據;釋放空間。步驟如下

一,查看哪個表占的空間

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是全局索引

 五, 驗證是否釋放空間;(可忽略)

  再執行第一步;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM