sql - 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的寿命到底是怎么计算的?它与创建闪回存档的时间有什么关系吗?
解决方案
推荐阅读
- azure - 用于容器的 Azure 监视器 v/s 应用程序见解
- python - Python中的SSL模块不可用 - QGIS
- python - 使用循环自动解包和生成变量名
- python - 在python中使用oauth登录facebook?
- python - 过滤具有特定阵营的图表
- angular - 将动态数据传递给嵌套组件
- nativescript-vue - Nativescript Vue图像拉伸aspectFill不起作用
- android - 更改 TextInputEditText 中底线的空格
- redis - 在 Redis 中存储复杂的数据结构(JSON 数组)
- sql - SQL - 划分聚合字段,对 SQL 来说非常新