Oracle中表行的创建日期时间是什么时候?

Amr*_*awy 7 database oracle timestamp

昨天我的朋友-BI专家 - 向我解释了一个oracle问题:
有一个包含大量数据的oracle数据库,但它们没有为每个存储每个行的创建日期时间的表创建列.
那么在这种情况下,他如何获得每行的创建日期时间(时间戳)?

Cri*_*tiC 21

每行都有自己的系统变更编号(SCN).这恰好在数据库中确定了一个时刻.

首先找出SCN并基于它使用SCN_TO_TIMESTAMP来获取时间戳:

SELECT 
  SCN_TO_TIMESTAMP(ora_rowscn),
  MyTable.*
FROM 
  MyTable
Run Code Online (Sandbox Code Playgroud)

  • 此伪列也只存储"上次更新时间",而不是"创建时间" (7认同)
  • 另请注意,默认情况下,`ora_rowscn`记录在块级别(NOROWDEPENDENCIES是默认的CREATE TABLE选项).参见例如http://asktom.oracle.com/pls/apex/f?p=100:11:0::NO::P11_QUESTION_ID:517105100346104196 (5认同)
  • 值得注意的是,`SCN_TO_TIMESTAMP()`可能不适用于旧数据(但是,`ORA_ROWSCN`始终可用). (4认同)