--查看数据库中表空间详细使用情况
SELECT A.TABLESPACE_NAME "表空间名",
A.TOTAL_SPACE "总空间(M)",
NVL(B.FREE_SPACE, 0) "剩余空间(M)",
A.TOTAL_SPACE - NVL(B.FREE_SPACE, 0) "使用空间(M)",
trunc(NVL(B.FREE_SPACE, 0) / A.TOTAL_SPACE * 100, 2) "剩余百分比%"
FROM (SELECT TABLESPACE_NAME,
trunc(SUM(BYTES) / 1024 / 1024, 2) TOTAL_SPACE
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME) A,
(SELECT TABLESPACE_NAME,
trunc(SUM(BYTES / 1024 / 1024), 2) FREE_SPACE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) B
WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME(+)
ORDER BY 5;
--查看某一个表空间内表和分区表的使用情况:以BOSSNM_PERF_DATA表空间为例
select segment_name,segment_type,round(sum(bytes)/1024/1024/1024,4) from dba_segments
where tablespace_name =upper('BOSSNM_PERF_DATA')
group by segment_name,segment_type order by sum(bytes) desc
--查看某一个表空间内表和分区表的使用情况:以BOSSNM_INFO表空间为例
select segment_name,segment_type,round(sum(bytes)/1024/1024/1024,4) from dba_segments
where tablespace_name =upper('BOSSNM_INFO')
group by segment_name,segment_type order by sum(bytes) desc
利用pkp_tools_orz包 清理分区表
--查询BOSSNM_INFO表空间内 各表的使用情况
begin
pkp_tools_orz.AUTO_CLEAR_PARTITIONTABLES('BOSSNM_INFO',0);
end;
--查询结果在表使用情况结果存在CLEAR_SPACE_TEMP临时表内
select * from CLEAR_SPACE_TEMP
--清理表的语句在CLEAR_SPACE_TEMP表的clear_sql字段内复制下来,在command窗口下执行清理
--例下面3种不同清理格式分别是: 带有全局索引的分区表、带有局部索引的分区表、不带索引的表。
alter table NE_ALARM_MSG truncate partition PART_1311 update global indexes;
alter table CTNBC_TRAN_DATA_008 truncate partition PART_201610;
truncate table INFO_JT_SR_40200023
--查看该表的索引状态,在user_indexes 中的status字段内N/A表示局部 、VALID表示全局
--例查询表分区为CTNBC_TRAN_DATA_008_NEW的索引,及status.
select * from user_indexes where table_name='CTNBC_TRAN_DATA_008_NEW';
--清理结束,查询索引是否正常
--例查看索引名INFO_JT_MID_MSG_ALL_DTL_01的索引,表内status字段显示usable表示正常.
select * from Dba_ind_partitions where index_name='INFO_JT_MID_MSG_ALL_DTL_01' ;