scn如何使用Oracle中的sys.smon_scn_time映射到时间戳?

时间:2017-08-08 09:06:50

标签: sql oracle timestamp

在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: enter image description here

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

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

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

1 个答案:

答案 0 :(得分:1)

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

Exit Survey [hr.exitinterview], Certificate [hr.certificate], Recommendation Letter [hr.recommendation]列中单个映射的结构是:

  • 4个字节的time_mp
  • scn_bas
  • 的4个字节
  • scn_wrp的2个字节
  • “尚未知道”的2个字节