【问题标题】:How scn map to timestamp using sys.smon_scn_time in Oracle?scn 如何在 Oracle 中使用 sys.smon_scn_time 映射到时间戳?
【发布时间】:2018-01-15 18:30:48
【问题描述】:

在 Oracle DB 中,您可以通过使用了解上次更新表的时间

SELECT SCN_TO_TIMESTAMP(MAX(ora_rowscn)) from myTable; 

(see here)

ora_rowscn 列中的值以system change number (SCN) 格式存储。

Oracle 使用 sys.smon_scn_time 表知道什么时间戳对应于特定的 scn:

如您所见,此表中有 scn、time_dp 和其他一些列。 每 5 分钟(大约)在 sys.smon_scn_time 中添加记录。所以 scn 和 date 之间没有单值关系。但是 Oracle 知道每个 scn 的时间戳。

那么,sys.smon_scn_time 表是如何工作的?

以及Oracle如何将scn映射到时间戳,这种映射的准确性如何?

【问题讨论】:

    标签: sql oracle timestamp


    【解决方案1】:

    tim_scn_mapcolumn 是时间戳到 SCN 映射的数组。它的大小是 RAW(1200)。每个条目有 12 个字节。这使得每行有 100 个条目,这导致大约 3 秒的准确度,因为 SMON 进程每 300 秒创建一行。另请参阅scn_to_timestamp 函数的文档。

    tim_scn_map列中单个映射的结构为:

    • time_mp 4 个字节
    • scn_bas 为 4 个字节
    • scn_wrp 2 字节
    • 2 字节表示“未知”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-03
      • 1970-01-01
      • 2011-10-01
      相关资源
      最近更新 更多