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

Aur*_*oni 5 oracle replication materialized-views

假设您有两个Oracle数据库,DB_A和DB_B.DB_A中有一个名为TAB1的表,其中包含物化视图日志,以及在DB_B中创建的名为SNAP_TAB1的物化视图

CREATE SNAPSHOT SNAP_TAB1
REFRESH FAST
AS SELECT * FROM TAB1@DB_A;
Run Code Online (Sandbox Code Playgroud)

有没有办法在DB_B中查询每次调用快速刷新物化视图后对SNAP_TAB1所做的更改?

DBMS_SNAPSHOT.REFRESH( 'SNAP_TAB1', 'F' );
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

Flo*_*ita 1

我认为下面的行适用于预建表:

您可以在表中添加一列SNAP_TAB1

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

对于更新,您可以使用触发器。因为该列不涉及物化视图,所以用触发器更新该列不会有问题。

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

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