首页 > 解决方案 > SCN 保留的最大天数,用于查询归档数据

问题描述

我有一个启用闪回的表。我想使用AS OF以下子句查询数据:

SELECT * 
FROM employees AS OF TIMESTAMP TO_TIMESTAMP('2019-09-11 00:00:00', 'YYYY-MM-DD HH24:MI:SS');

闪回存档的保留期为 14 天。

截至今天,在 2019 年 10 月 16 日,我可以回到 2019 年 9 月 11 日。如果我通过了 9 月 10 日,即2019-09-10 00:00:00进入TO_TIMESTAMP上述查询,我​​得到ORA-08180: no snapshot found based on specified time

那么,我怎样才能找到保留 SCN 的确切时间呢?我浏览了 OraDocs,发现了以下信息:

生成 SCN 时,SCN 和时间戳之间的关联会被数据库记住一段有限的时间。如果数据库在自动撤消管理模式下运行,此期限是自动调整的撤消保留期的最大值,以及数据库中所有闪回存档的保留时间,但不少于 120 小时。

我查询了UNDO_RETENTION参数,它设置为默认 900 秒。并且只有一个闪回存档,RETENTION_DAYS设置为 14 天。所以,根据文档,SCN 的生命周期必须是 14 天。但是我怎么能回到一个月前呢?

PS:我正在检查另一个数据库,其中UNDO_RETENTION参数设置为默认值 2700(45 分钟)并且只有一个RETENTION_DAYS设置为 14 的闪回存档。在这种情况下,我最多只能查询 6 天。SCN的寿命到底是怎么计算的?它与创建闪回存档的时间有什么关系吗?

标签: sqldatabaseoracleoracle12cflashback

解决方案


推荐阅读