oracle数据库全库压缩操作步骤


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 检查分区表索引的状态


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM