物化视图日志大小> 0,当REFRESH设置为ON COMMIT时

时间:2013-07-01 09:27:53

标签: database oracle materialized-views

我有大约8个主表的直接物化视图。

create materialized view MV
REFRESH FAST ON COMMIT as
  SELECT...

我也在运行此查询以密切关注具体化的日志大小。

select segment_name, SUM ( (BYTES) / (1024 * 1024)) "Allocated(MB)" from dba_segments where (segment_name, owner) IN (
  select log_table, log_owner from dba_mview_logs where log_owner = 'XXX')
and segment_type = 'TABLE' GROUP BY segment_name;

由于我在提交时刷新,我不希望这些日志有机会增长。一旦我写入表格,我希望视图刷新并清除日志。

但是,我的大多数日志都是0.0625mb,其中一个是27mb,另一个是2mb。如何调查较大尺寸的原因?具有较大大小的日志的两个表都包含可能包含大量数据的blob列。但我不明白为什么这些日志是> 0

1 个答案:

答案 0 :(得分:1)

表数据段在从中删除数据时不会缩小,并且段大小也取决于它增长的大小增量(基于表空间设置)。

你看到的只是segmenbt增长的最大大小,而不是它所持有的数据量 - 当你查询它时它可能是空的。只计算MV日志表中的行数。

您可以查看依赖于表的所有MView,以查看它们的上次刷新时间,并与mview日志中的SNAPTIME $$集进行比较。如果在snaptime $$之后MView都清楚地刷新,请查看mview.purge_log以删除行。