sql - 从 SCN_TO_TIMESTAMP(ORA_ROWSCN) 中提取日期
问题描述
我有一个问题,我应该为每一行提取行创建日期并成为大型报告的一部分。使用 SCN_TO_TIMESTAMP(ORA_ROWSCN) 我可以查看记录创建日期,但我无法转换、提取该数据并在其他地方使用它。我收到一条错误消息,上面写着“ORA-08181: specified number is not a valid system change number
ORA-06512: at "SYS.SCN_TO_TIMESTAMP", line 1"
我写的查询如下:
*insert into MEMBER_CREATION_DATE(NATIONAL_ID,CHECKNO,CREATION_DATE)
select NATIONAL_ID,CHECKNO,trunc(scn_to_timestamp(ora_rowscn)) from MEMBER*
解决方案
你的线索是ORA-08181: specified number is not a valid system change number
这意味着SCN_TO_TIMESTAMP
无法获得,ORA_ROWSCN
因为记录不再是UNDO
数据的一部分。与该SCN_TO_TIMESTAMP
系统更改编号关联的时间戳太旧,因此您会收到错误消息。
您可以通过以下查询检查数据库中最旧的可用SCN
号码:
select min(SCN) min_scn from sys.smon_scn_time;
正如甲骨文所说:
SCN
生成时的时间戳和时间戳之间的关联会SCN
被数据库记住一段有限的时间。如果数据库在自动撤消管理模式下运行,此期限是自动调整的撤消保留期的最大值,以及数据库中所有闪回存档的保留时间,但不少于 120 小时。仅当数据库打开时,关联才会过时。如果SCN
为参数指定的 toSCN_TO_TIMESTAMP
太旧,则返回错误。
推荐阅读
- oracle - 当我更改文本字体时,Oracle 报告 10g 崩溃
- c++ - 具有特征成员变量排序和赋值错误的c ++类
- html - 使用 mat-paginator 时出现“this.container is undefined”错误
- android - 对齐小部件内部在颤动中展开成行
- xaml - WebView GestureRecognition 在 Xamarin 表单中不起作用
- javascript - Angular:无法返回值
- excel - 应用宏时程序错误太大。我怎样才能让它变小?
- java - 如何在 Java 中将 YUV 转换为 JPG
- html - 如何在 ionic 3 中使用 inc 和 dec 函数更改输入值
- apache-spark - Nifi:无法在 ExecuteScript 处理器中导入 pyspark