oracle - 有没有办法查询Oracle中物化 View 快速刷新所做的更改?

标签 oracle replication materialized-views

假设您有两个 Oracle 数据库,DB_A 和 DB_B。 DB_A 中有一个名为 TAB1 的表,有一个物化 View 日志,DB_B 中有一个名为 SNAP_TAB1 的物化 View ,它是用

CREATE SNAPSHOT SNAP_TAB1
REFRESH FAST
AS SELECT * FROM TAB1@DB_A;

有没有办法在每次调用快速刷新物化 View 后在 DB_B 中查询对 SNAP_TAB1 所做的更改?
DBMS_SNAPSHOT.REFRESH( 'SNAP_TAB1', 'F' );

在 DB_A 中,在刷新之前,您可以查询物化 View 日志表 MLOG$_TAB1,以查看 TAB1 中哪些行已更改。我正在寻找一种在每次刷新后在 DB_B 中查询的方法,即在 SNAP_TAB1 中刷新了哪些行。

谢谢!

最佳答案

我认为以下几行适用于预建表:

您可以在表中添加一列 SNAP_TAB1 .

用于 Blade 您可以将其放在 default sysdate 上=> 对于每个插入,您都将获得插入的时间戳。

对于更新,您可以使用触发器。因为列不涉及实体化 View ,所以用触发器更新列不会有问题。

可能更好,使用触发器,您可以使用唯一 id 存储在该列中,在每次新刷新之前递增。(获取唯一 id 可能有不同的方法。)

显然,你不能用这个想法来跟踪删除。

关于oracle - 有没有办法查询Oracle中物化 View 快速刷新所做的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9002752/

相关文章:

postgresql - PostgreSQL 9.2 中,流复制是否需要归档?

database - 将 postgres 服务器扩展到多个服务器

oracle - 提交实例化 View 时快速刷新

mysql - ORACLE同表两列值匹配时更新语句

oracle - 我如何从特定项目实例中获取值(value)?

php - 使用 PHP 运行查询并将其放入 JavaScript 对象中

MySQL 复制卡住

django - PostgreSQL 9.3 的 REFRESH MATERIALIZED VIEW 命令仅持续 Django 连接的长度

postgresql - 刷新物化 View : Concurrency, 事务行为

oracle - Oracle NoSQL 数据库适合哪里?