首页 > 解决方案 > 是否可以知道过去几天每天数据库表大小的变化?

问题描述

我需要知道上周特定表每天的大小增长了多少?SQL 开发人员中是否有任何查询或统计工具可以做到这一点。RDBMS 是一个 Oracle 11g Rac

标签: sqldatabaseoracle11goracle-sqldeveloper

解决方案


Oracle 使用 MMON 后台进程来收集 AWR 统计信息。假设它没有被禁用(显示参数 statistics_level 应该返回 TYPICAL 或 ALL,因为 BASIC 不收集建议或统计信息),您可以使用视图 dba_hist_seg_stat 和 dba_hist_snapshot,如下所示。相应地替换表名 (your_table_name) 和日期 (21-JAN-2019 / 28-JAN-2019):

select   obj.owner, obj.object_name, 
         to_char(sn.BEGIN_INTERVAL_TIME,'RRRR-MON-DD') start_day,
         sum(a.SPACE_USED_DELTA) block_increase_bytes
from     dba_hist_seg_stat a,
         dba_hist_snapshot sn,
         dba_objects obj
where    sn.snap_id = a.snap_id
and      obj.object_id = a.obj#
and      object_name = 'your_table_name'
and      end_interval_time between to_timestamp('21-JAN-2019','DD-MON-RRRR') 
         and to_timestamp('28-JAN-2019','DD-MON-RRRR')
group by obj.owner, obj.object_name, 
         to_char(sn.BEGIN_INTERVAL_TIME,'RRRR-MON-DD')
order by obj.owner, obj.object_name, start_day
/

注意:block_increase_bytes 中的负数表示表中的行数据已被删除或清除。


推荐阅读