问题标签 [flashback]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - SCN 保留的最大天数,用于查询归档数据
我有一个启用闪回的表。我想使用AS OF
以下子句查询数据:
闪回存档的保留期为 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的寿命到底是怎么计算的?它与创建闪回存档的时间有什么关系吗?
oracle - 什么是只读角色,赋予 Oracle 开发人员通过版本查询查看闪回数据
我已经创建了 Oracle FDA 及其跟踪表上的 DMLS,但我可以知道是否可以授予用户使用 VERSIONS BETWEEN 查询查看数据的特定角色
GRANT FLASHBACK ANY TABLE 或 GRAN FLASHBACK on tblname 似乎也可以访问表。有没有办法让用户只使用查询来查看数据
oracle - 无法删除 Oracle 闪回数据归档
想要对 Flashback Data Archive 进行干净测试,因此必须删除现有的。
我在所有启用的表上禁用了 FDA 并删除了 FDA。
但我仍然看到 DBA_FLASHBACK_ARCHIVE 和 DBA_FLASHBACK_ARCHIVE_TS 中的记录
如果我尝试删除表空间,我会得到“ora-55641 无法删除闪回数据存档使用的表空间”。当我放弃 FDA 时,它成功并且没有错误。
我尝试了alter flashback data archive purge,但仍然无法删除TS
然后我尝试更改 FDA 并查看是否可以断开链接 - 更改闪回存档 fla1 删除表空间 tbs2;我收到错误“ORA-55626:无法删除闪回存档的主表空间”
我能知道是否需要清理任何内部表吗?
sql - 如何排除闪回查询结果集中未更改的字段?
是否可以排除闪回查询结果集中未更改的字段?
考虑我有下表
如果表在版本化查询之后有非常频繁的更新(例如在notebook
字段上)
即使它是相同的,也会为每一行提取大量的 userpic 值。
我可以以某种方式避免这种情况,而是为未更改的值获取 NULL 吗?
java - 将 ORACLE 闪回与 QueryDSL 结合使用
我们正在使用 QueryDSL 通过 SpringBoot 应用程序从 Oracle 数据库中批量读取数据。
生成以下可以成功执行的 SQL 查询:
左连接也是如此:
结果是
但是,由于我们需要在某些时间点查询这些数据,我们需要利用 Oracle 的 Flashback 特性。基本上,为此需要在表名和别名之间添加以下 SQL:
IE
我没有成功尝试使用.addFlag()
and.addJoinFlag()
命令使用 QueryDSL。
创建
具体来说,问题在于闪回字符串是在别名之后而不是在表名和别名之间添加的。
使用连接时,情况会变得更糟:
生产
结果.addJoinFlag()
添加在表名之前,.addFlag()
内容添加 - 毫不奇怪 - 就在where
.
将其更改为
这也好不到哪里去。
我玩过各种可能的方法,但没有找到将要插入的字符串放置在正确位置的方法。
我是否错过了在查询的某些位置注入 SQL 的另一种方法?
如果做不到这一点,我可以使用 QueryDSL 生成 SQL 字符串,然后使用正则表达式自己修改它。有没有办法将这样的字符串传递给 QueryDSL 以便执行查询?
整合接受的答案
Jan-Willem Gmellig Meyling给出的答案是有效的,我只想将它从上面完全集成到我的示例中:
我创建了一个辅助方法:
使用它,我现在可以创建任意闪回路径,以与from()
和一起使用addJoin()
:
产生
这正是我想要的。
oracle - 版本化视图上的 Oracle 闪回查询
示例场景:我有一个名为 DEPARTMENT 的表,它启用了闪回数据存档。启用闪回数据存档后,我可以运行以下查询:
现在,我们已经升级到基于版本的重定义(EBR),我们将旧表 DEPARTMENT 重命名为 DEPARTMENT_。在基表 DEPARTMENT_ 之上,有一个编辑视图 DEPARTMENT。
现在,当我运行查询时:
上面的查询将为versions_* 列产生无效标识符错误。如果我删除 versions_* 列并运行以下查询:
上面的查询显示了所有日志,但没有版本信息,结果集对我没有用。
c# - 如何将 Oracle 闪回列添加到受影响实体上的 .Net Core Entity Framework EDMX?
在开发 .Net Core EF 应用程序期间,DBA 实施了 Oracle 闪回,通过寻址被审计的表而不是手动连接到另一个表来进行查询。如何将这些列添加到 EDMX 文件中,以便应用程序可以查询它们并显示结果?简单地刷新 EDMX 不会引入闪回信息。
oracle - 如何正确使用 Oracle Flashback 来审计包含用户信息的表更改?
我的组织选择使用 Oracle 闪回来替换手动创建的审计表。但是,DBA 将这些TUNED_AUTORETENTION
值设置UNDO_RETENTION
为仅 14400 秒。不幸的是,我们必须将这些数据的审计值保留 7 年。有没有办法查询“过期”版本数据,以便可以按时间跨度审核特定更改,或者是否需要UNDO_RETENTION
将各个TUNED_AUTORETENTION
值设置为 220800000?我查看了flashback_transaction_query
,但它只显示交易一般数据,而不是更改了哪些列值。
有问题的数据库当前将其表空间文件设置为在逻辑驱动器上自动分配更多物理层空间。
oracle19c - 如何从回收站恢复早期版本的表?
我正在练习从 Oralce 19 中的 recyclebin 恢复表。我已经知道 FLASHBACK TABLE 语句。但是,它只恢复表的最后一个版本。
如果我想恢复我的表的早期状态怎么办?这是我已经找到并尝试过的:
通过这个查询,我得到了我的表的已删除实例的名称以及这些被删除的时间。
然后我将我需要的实例的 object_name 复制到我的闪回语句中:
这句话给了我 ORA-00905:缺少关键字。
有没有办法纠正最后一条语句或整个方法不起作用?
oracle - Oracle Dataguard 将备用数据库回滚到主数据库
我已将 Primary 设置为 mound 模式,关闭 Standby 并 'set state="APPLY-OFF"' 然后在 Primary 上通过 RMAN 运行 revert
然后在初级
现在主要 SCN - 003,备用 SCN - 009(例如)
当我尝试将待机闪回到主要 - 在待机闪回到 SCN(RESETLOGS_CHANGE# - 2
我得到了 - ORA-38729:没有足够的闪回数据库日志数据来执行闪回。
如何进行同步(将备用回滚到主要的时间状态)?
今天用谷歌搜索了一整天,没有任何方法成功。