暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 闪回版本查询过滤

ASKTOM 2020-07-13
302

问题描述

大家好,

我对闪回版本查询功能感到兴奋,并有一个问题

我想跟踪某些表的更改,它使闪回版本查询具有此功能。

例如,我可以存储最后处理的SCN,(从v $ 数据库t中选择t.CURRENT_SCN) 并使选择如下:
select versions_startscn,
       versions_starttime,
       versions_endscn,
       versions_endtime,
       versions_xid,
       versions_operation,
       contract_id
  from noffer.contract_status_change versions BETWEEN SCN 12477243880505 and 12477244180201

我们有3小时间隔的存档日志记录。但是我需要每秒更改一次曲目,也许每秒更改4-5次。

并且它会过滤SCN之间的更改。但它似乎不是过滤,而是给所有行。然后我这样写 “where子句”:
select versions_startscn,
       versions_starttime,
       versions_endscn,
       versions_endtime,
       versions_xid,
       versions_operation,
       contract_id
  from noffer.contract_status_change versions BETWEEN SCN 12477243880505 and 12477244180201
  where versions_startscn is not null or versions_endscn is not null

收到了我需要的结果
但是它可以进行全扫描,并且非常慢,可以进行全扫描


有什么技巧可以轻松做到这一点。我只需要知道给定时间段 (或此示例SCN) 的哪些行 (对于此示例contract_id更改-插入,更新或删除)。我们有一些表,每天有30-40 M

或者我需要编写用于跟踪数据更改的触发器?

非常感谢
最佳
迪米特里·甘克里利泽

专家解答

闪回查询 * 确实 * 显示更改,但请注意 * 显示这些更改正在做什么。它正在浏览每行的撤消段,以撤消影响该行的任何事务。

那可能是很多工作。我会看看测试闪回数据档案 (FDA),它会坚持磁盘的变化,从而减少工作量,但同样,它的主要意图是 “事后” 分析 (如审计跟踪),不一定能够潜入该跟踪接近实时。

另外,根据您的数量/要求,它将查看更改通知或查询通知

例如https://docs.oracle.com/database/121/ADFNS/adfns_cqn.htm#ADFNS018


如果FDA或上述其他产品不能满足您的需求,那么您可能会进入介绍触发器
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论