今天有个项目由于数据量太大,系统性能降低,要做数据归档,提高系统性能,在归档前先调查数据库中各个表数据量大小为数据归档做准备。
1、创建统计表
create table statistics_all_tables
(
table_name varchar2(100),
data_nums number(16),
table_size number(16,4)
)
2、填充表数据
1)获取表名称英文大写以及表记录数量
insert into statistics_all_tables
(table_name, data_nums, table_size)
select table_name,num_rows, 0 from user_tables;
注:重复统计时需要先删除统计表数据。
2)统计表空间大小
merge into statistics_all_tables t
using (select sum(bytes) / (1024 * 1024) table_size,segment_name
from user_segments
where segment_type = 'TABLE'
group by segment_name) s
on (s.segment_name = t.table_name)
when matched then
update set t.table_size = s.table_size;
注:表空间大小只能作为参考。