首页 文章

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

提问于
浏览
5

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

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

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

DBMS_SNAPSHOT.REFRESH( 'SNAP_TAB1', 'F' );

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

谢谢!

1 回答

  • 1

    我认为下面的行与预构建表一起使用:

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

    对于插入,您可以将它放在 default sysdate =>上,对于每个插入,您将拥有插入的时间戳 .

    对于更新,您可以使用触发器 . 由于该列未包含在物化视图中,因此使用触发器更新列不会有问题 .

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

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

相关问题