如何在物化视图刷新时关闭重做日志?

如何在物化视图刷新时关闭重做日志?

10gR2 数据库,在 Data Guard 配置中同时具有物理和逻辑备用。

我有一个物化视图,它会定期对远程数据库中的大约 40K 条记录进行完全刷新。多年来,它一直以每小时刷新一次的方式工作,没有出现问题。昨天,有人要求我将刷新频率提高很多,比如每 2 分钟一次。我照做了,没有出现明显问题,直到今天早上 4 点左右,存档日志目录已满。

我整天都在努力尝试关闭日志记录。我已经:

  • 在数据库中设置 NO FORCE LOGGING
  • 将物化视图和基表更改为 NOLOGGING
  • 将视图上的索引更改为 NOLOGGING

似乎没有什么可以降低日志生成率。在读取视图的过程启动之前,通过 dbms_refresh.refresh 在计划任务中刷新视图。

我知道我应该改进这个过程,可能每次作业运行时都会将数据吸入全局临时表,但这需要一段时间才能通过 QA 测试。您知道我在这里遗漏了什么吗?从我读到的内容来看,我应该能够做到这一点。这asktom 文章似乎支持这一点,但我似乎无法让它发挥作用。

非常感谢您抽出时间。

答案1

啊,我偶然发现了解决方案。不要使用 dbms_refresh,而是使用 dbms_mview,如下所示:

开始 dbms_mview.refresh('MYTABLE', method => 'C', atomic_refresh=>false); 结束;

我发现解决方案在这里

谢谢你的观看。

相关内容