如何搜索从某个时间点更改的Oracle DB条目?

问题描述

我正在尝试搜索在特定时间点之后为用户更改的安全特权。例如,我想为用户查找在01.03.2020之后发生的更改。

是否可以查看当前的安全特权,然后将其与2020年3月1日之前的特权进行比较?数据库表保存所有更改,并为每个安全特权更改提供一个版本号。但是,我不能仅将当前版本与以前的版本进行比较,而是需要查看特定时期,即2020年3月1日之后。该表包含以下列:

user_id
security_privilege_id
version_number
last_user_update_id
last_update

下面是我要搜索的示例。对于此user_id,我想将最新的安全特权(版本16)与2020年1月3日之前的安全特权进行比较。因此,在这种情况下,它将比较版本16和版本14。它需要确定所有版本之间安全特权都发生了更改的所有情况。

sample data

解决方法

这回答了对原始问题的合理解释。

否,这是不可能的。您的表仅包含最新数据以及update时间戳。

为了回答您的问题,您需要有关数据在特定时间点的外观的更多信息。实现此目的的三种常见方法是:

  • 2型表。该表的版本有效期和结束日期显示了给定时间点的值。
  • 审计表。该表显示了用于更新的数据的前后图片。
  • 快照表,用于隐藏表在特定时间点的外观。

您的表似乎没有此信息,因此不能用于回答问题。数据库中的其他表 do 可能具有该信息,但您的问题未提及它们。