查看数据增长的sql
想知道数据库最近一段时间哪个对象的数据增量比较大,可以用以下sql
column owner format a16
column object_name format a36
column start_day format a11
column block_increase format 9999999999
select obj.owner,
obj.object_name,
to_char(sn.BEGIN_INTERVAL_TIME, 'yyyy-mm-dd') start_day,
sum(a.db_block_changes_delta) block_increase
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 obj.owner not in ('SYS', 'SYSTEM')
and sn.end_interval_time between to_timestamp('2021-06-20', 'yyyy-mm-dd') and
to_timestamp('2021-06-24', 'yyyy-mm-dd')
group by obj.owner,
obj.object_name,
to_char(sn.BEGIN_INTERVAL_TIME, 'yyyy-mm-dd')
order by obj.owner, obj.object_name;
解析一下:
这个sql的核心表为dba_hist_seg_stat,就是从这个表中统计中每个snap时间段中所有对象的增量,即db_block_changes_delta(Delta value for db block changes),注意不能使用DB_BLOCK_CHANGES_TOTAL,因为我们考虑的是增量,而不是变化量。
其他两个表就是起辅助作用了,dba_hist_snapshot 表用来过滤时间段的,dba_objects表用来显示对象名称的。

浙公网安备 33010602011771号