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

标签 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 映射到时间戳以及这种映射的准确性如何?

最佳答案

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

  • 4 个字节用于 time_mp
  • 4 个字节用于 scn_bas
  • scn_wrp 的 2 个字节
  • “未知”的 2 个字节
  • 关于sql - scn 如何在 Oracle 中使用 sys.smon_scn_time 映射到时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45564047/

    相关文章:

    mysql - 左连接返回非所有行

    sql - 如何使用正则表达式选择字母数字字符

    java - 带有 SequenceGenerator 和 generatedValue 的 JPA

    javascript - 将普通日期转换为时间戳 JavaScript

    sql - PostgreSQL 中多个数组的交集

    mysql - 如何在 SQL 中设置日期格式?

    MySQL 自动增量不适用于 INT(12)

    java - 通过JdbcTemplate检索oracle数据库中删除的行

    python - 删除第二个数据帧间隔内的数据帧时间戳

    python - 在python中将本地时间戳转换为unix纪元时间戳