有没有办法查询Oracle中物化视图快速刷新所做的更改?
发布时间:2020-12-12 13:14:31 所属栏目:百科 来源:网络整理
导读:假设您有两个Oracle数据库,DB_A和DB_B. DB_A中有一个名为TAB1的表,其中包含物化视图日志,以及在DB_B中创建的名为SNAP_TAB1的物化视图 CREATE SNAPSHOT SNAP_TAB1REFRESH FASTAS SELECT * FROM TAB1@DB_A; 有没有办法在DB_B中查询每次调用快速刷新物化视图后
假设您有两个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中刷新. 谢谢! 解决方法我认为下面的行与预构建表一起使用:您可以在表SNAP_TAB1中添加一列. 对于插入,您可以将其置于默认的sysdate =>对于每个插入,您将拥有插入的时间戳. 对于更新,您可以使用触发器.由于该列未包含在物化视图中,因此使用触发器更新列不会有问题. Probaly更好,使用触发器,您可以使用唯一ID存储在该列中,在每次刷新之前递增.(获取唯一ID可能有不同的aproaches.) 显然,你不能用这个想法跟踪删除. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |