【问题标题】:Temporal tables in OracleOracle 中的时态表
【发布时间】:2014-01-15 14:00:41
【问题描述】:

Tom Kyte 描述了时间表here

时态表是可以返回存在于 一个时间点——你可以要求表返回答案 存在于昨晚的午夜,而不是存在的答案 现在

Oracle 中是否存在此类表?我找不到他们的文档。如何创建并使用它?他说它们存在于数据库中,尽管他没有说它们存在于 Oracle 或任何其他产品中。这是一个没有实现的概念吗?

【问题讨论】:

  • 几乎在每个 RDBMS 中都实现了它……您只需将记录创建日期的列添加到表中,将其用作主键的一部分,然后永远不要删除任何内容。 Oracle has added something to 12c though...
  • 11gR2 也有 Total Recall 选项,它允许一些相同的功能,尽管方式不太友好(我认为 - 从未使用过)。 More on both concepts here.

标签: oracle temporal-tables


【解决方案1】:

好吧,我相信您的意思是获取数据状态,因为它比现在早了一段时间。在这种情况下,Oracle 建议使用闪回查询:

SQL> select * from t where x in (1,2,3);

         X          Y                                                           
---------- ----------                                                           
         1          1                                                           
         2          2                                                           
         3          3                                                           

SQL> delete from t where x in (1,2,3);

SQL> commit;

SQL> select * from t where x in (1,2,3);

No rows selected

SQL> select * from t as of timestamp(systimestamp - interval '2' minute) where x in (1,2,3)
  2  /

         X          Y                                                           
---------- ----------                                                           
         1          1                                                           
         2          2                                                           
         3          3                                                           

Oracle 在那里描述了这个选项

http://docs.oracle.com/cd/B12037_01/appdev.101/b10795/adfns_fl.htm#1008580

关于临时表 - 请参阅此参考:

http://docs.oracle.com/cd/B28359_01/server.111/b28310/tables003.htm#ADMIN01503

【讨论】:

  • 需要注意的是,该闪回查询的成功直接取决于undo_retention初始化参数的值,默认为900秒,并且undo表空间有足够的空间。如果没有增加足够多,过去是不可能看够远的。
  • 是的,好品脱。另一个重要因素是撤消表空间自动扩展策略(它直接影响 udo 保留策略)。
  • @Nicholas Krasnov - 闪回查询直接取决于 UNDO 大小。 ~undo_retention~ 参数在大多数生产数据库中被忽略。 (当您有固定大小的 UNDO 时,Oracle 会忽略它 - AUTOEXTEND 为 OFF)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-17
  • 1970-01-01
  • 2016-08-03
  • 2012-10-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多