Oracle 数据库处于开启noarchivelog模式,并tablespace配置了nologging选项,保持不会出现恢复任何数据的情况。
ETL过程中发生了以下场景:
我想知道为什么在这种情况下会生成如此大量的重做。
考虑以下过度重做的上下文:
NOLOGGING无论如何不适用于由MERGE语句产生的任何 UPDATE 操作。/*+ APPEND */插入语句的提示来绕过日志记录,即使 nologging 选项在表/表空间级别处于活动状态也是如此。问题:
1, 2 and 3除了生成如此大容量的 REDO之外,任何人都可以看到任何其他考虑因素吗?非常感谢对上述问题和考虑的任何建设性答案,以便如果我错了,我可以纠正自己。
我有一个从 Oracle(11.2.0.4) 物化视图获取数据的应用程序,当关联表上发生任何 DML 操作或关联对象无效时,物化视图的预期行为将变为无效。
我的物化视图选项如下所列,并确认关联对象始终有效。
CREATE materialized VIEW mv_emp_test1
NOLOGGING COMPRESS build IMMEDIATE
REFRESH FORCE
START WITH (SYSDATE) NEXT (SYSDATE+5/1024)
as
......
Run Code Online (Sandbox Code Playgroud)
当物化视图每 5 分钟刷新一次时,它会进入 INVALID 状态,并且如果应用以下任何方法,则变为有效状态:
alter materialized view mv_emp_test1 recompile;
or
exec dbms_mview.refresh('mv_emp_test1');
Run Code Online (Sandbox Code Playgroud)
另外,检查了相关文档和错误,metalink中的Doc ID 264036.1已经包含了确切的场景,但没有找到适当的解决方法,以便每5分钟自动刷新一次。