scn如何使用sys.smon映射到时间戳

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

SELECT SCN_TO_TIMESTAMP(MAX(ora_rowscn)) from myTable; 

(看这里)

ora_rowscn列中的值以系统更改编号(SCN)格式存储。

Oracle知道什么时间戳与使用sys.smon_scn_time表的特定scn相对应: 在这里输入图像描述

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

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

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


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

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

  • time_mp有4个字节
  • 用于scn_bas的4个字节
  • 2个字节用于scn_wrp
  • 2个字节表示“尚未知道”
  • 链接地址: http://www.djcxy.com/p/36947.html

    上一篇: How scn map to timestamp using sys.smon

    下一篇: EF6 Oracle TimeStamp & Date