我有一个 oracle 数据库 (DB1),它通过到 DB2 的 db-link 使用预定的作业在每个午夜刷新物化视图。
MV 的刷新使用一个过程来运行,该过程遍历模式中的每个表名并逐个刷新每个表。
最近,DB2进驻的地方出现了电力问题。如果 DB2 在 DB1 开始其工作时处于脱机状态,那么 DB1 上的物化视图将变为空。如果没有连接,为什么刷新不会简单地失败?我怎样才能阻止这种情况发生?
提前致谢
我有一个 oracle 数据库 (DB1),它通过到 DB2 的 db-link 使用预定的作业在每个午夜刷新物化视图。
MV 的刷新使用一个过程来运行,该过程遍历模式中的每个表名并逐个刷新每个表。
最近,DB2进驻的地方出现了电力问题。如果 DB2 在 DB1 开始其工作时处于脱机状态,那么 DB1 上的物化视图将变为空。如果没有连接,为什么刷新不会简单地失败?我怎样才能阻止这种情况发生?
提前致谢
您确定刷新过程没有出错(在这种情况下,错误将写入警报日志)?
你在做完整的刷新吗?还是增量刷新?你在做原子刷新吗?还是非原子刷新?我的猜测是您正在执行完整的非原子刷新(在幕后,这意味着您正在执行TRUNCATE
and direct-path INSERT
),其中TRUNCATE
成功但直接路径INSERT
失败。您可以执行完整的原子刷新,而不是执行DELETE
and INSERT
。但是,当远程数据库可用时,这将比非原子刷新慢,并且会生成更多REDO
. 或者,您可能会改为执行增量刷新,但这至少需要在远程数据库上创建物化视图日志。