由于分区表数据增加;没做清除操作;导致表空间告急。需要清理很久之前的数据;释放空间。步骤如下 一,查看哪个表占的空间
1
2
3
4
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
二、查看每个子分区的记录
1
SELECT
a.table_name,a.partition_name
FROM
user_tab_partitions a
WHERE
a.table_name =
'TBL_SMSMT_AUTOACTIV_BILL_HIS'
;
三、检查分区表的索引是否LOCAL类型 --先查看该表的索引
1
SELECT
*
FROM
User_Indexes a
WHERE
a.table_name =
'TBL_SMSMT_AUTOACTIV_BILL_HIS'
;
--在查看索引是否为local类型;若不存在;则为全局索引
1
select
table_name,index_name,LOCALITY
from
user_part_indexes
where
table_name=
'TBL_SMSMT_AUTOACTIV_BILL_HIS'
;
四、如果都是LOCAL索引,直接清除表分区数据(如果是全局索引,清除完成后需要重建)
本地索引在你删除子分区表的时候会跟着删除;不会影响。
1
2
3
4
5
6
7
8
9
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是全局索引
五, 验证是否释放空间;(可忽略)
再执行第一步;