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 檢查分區表索引的狀態