Nic*_*int 6 oracle transactions materialized-views
我最近注意到调用dbms_mview.refresh(...)来刷新Oracle中的物化视图,它有一个隐式提交.
任何想法 - 除了"因为它确实" - 为什么这个动作有一个隐含的提交?
根据您的 Oracle 版本和/或您提供的参数,dbms_mview.refresh 可能会执行 TRUNCATE,然后直接加载。TRUNCATE 是一个 DDL 命令,因此发出隐式提交。直接加载不需要提交。
如果您使用的是更新版本的 Oracle(我认为是 10.2+),您可以将atomic_refresh 参数设置为 TRUE,它将使用标准 DELETE / INSERT 在单个事务中刷新。不过,这种方法可能会慢一些。