跟踪 Oracle 中物化视图的更改
跟踪 Oracle 中物化视图更改的最佳方法是什么?我知道,触发器是可用的,并且 CDC 似乎不适用于物化视图。有什么巧妙的解决办法吗?
感谢您的帮助
约翰内斯
what is the best way to track changes of a materialized views in Oracle. I know, that triggers are available and CDC does not seem to work with materialized views. Are there any clever solutions?
Thanks for your help
Johannes
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以查询 MV 日志本身(如果存在):
http://www.sqlsnippets。 com/en/topic-12878.html
You could probably query the MV log itself, if present:
http://www.sqlsnippets.com/en/topic-12878.html
我假设您正在谈论识别增量刷新的物化视图中发生的更改。如果 MV 与基础表位于同一数据库中,您可以在存储 sysdate 或 systimestamp 值的结果集中定义一个额外的列,例如 LAST_UPDATED。如果 MV 位于不同的数据库中,您就会遇到问题。
实际上,我刚刚收到来自 Oracle 的补丁,该补丁修复了一个错误,允许将 ROWSCN(以及 ROWSCN 时间戳)持久保存到远程 MV 中,因此这应该是分布式 MV 的一个选项。 rowscn 时间戳存在 +/- 3 秒的模糊性,因此如果您需要更高的精度,您可以考虑滚动自己的解决方案。
I assume you are talking about identifying the changes that happen in incrementally-refreshed materialized views. If the MV is in the same database as the underlying tables you can define an extra column, say LAST_UPDATED, in the result set that stores the value of sysdate or systimestamp. If the MV is in a different database you'll have a problem.
I actually just received a patch from Oracle that fixes a bug to allow persisting ROWSCN (and therefore the ROWSCN timestamp) into the remote MV, so this should be an option for distributed MV's. There's a fuzziness of +/- 3 seconds in rowscn timestamps so if you need greater precision you're looking at rolling your own solution.