1、查看当前用户下数据库对象大小
select sum(bytes)/1024/1024/1024 from user_segments ;
SUM(BYTES)/1024/1024/1024
-------------------------
301.600098
2、查看当前用户下表的大小
select sum(bytes)/1024/1024/1024 from user_segments where segment_type like 'TABLE%';
SUM(BYTES)/1024/1024/1024
-------------------------
170.064697
3、查看当前用户下有哪些索引
select index_name from user_indexes;
4、查看当前用户下索引状态
1)非分区索引
select index_name,status from user_indexes where status<>'N/A';
2)分区索引
select distinct i.index_name,i.status,ip.status
from user_indexes i
left join user_ind_partitions ip
on i.index_name=ip.index_name
where i.status='N/A'
;
5、查看每个对象大小
select segment_name, sum(bytes)/1024/1024/1024 from user_segments where segment_type like 'TABLE%' group by segment_name order by 2 desc;
6、生成表压缩语句
set pagesize 0
set long 999999
set long 600
1) 生成非分区表的压缩语句
select 'alter table ' ||segment_name||' move compress;', sum(bytes)/1024/1024/1024 from user_segments where segment_type ='TABLE' group by segment_name order by 2 desc;
2)分区表(本库中只有一级分区)的压缩语句
select segment_name, sum(bytes)/1024/1024/1024 from user_segments where segment_type ='TABLE PARTITION' group by segment_name order by 2 desc;
i)一个分区表一个分区表的压缩:--有位图索引的会压缩失败
select 'alter table '||table_name||' move partition '||partition_name ||' compress for all operations;' from USER_TAB_PARTITIONS
where table_name in (select segment_name from user_segments where segment_type ='TABLE PARTITION' )
and compression='DISABLED'
and min_extent>=1
order by partition_name
;
7 重建索引
select 'alter index '||index_name||' rebuild parallel 4;' from user_indexes where status='UNUSABLE';
8 检查分区表索引的状态