gpt4 book ai didi

sql - FLASHBACK_TRANSACTION_QUERY Oracle 12c 中的 View 不返回任何行

转载 作者:行者123 更新时间:2023-12-04 22:03:44 26 4
gpt4 key购买 nike

我正在学习 Oracle 12c 中的闪回事务查询。我执行了一些 DDL 和 DML 语句。最后,我在 FLASHBACK_TRANSACTION_QUERY View 上执行了一条选择语句以查看 UNDO_SQL 值,但它没有返回任何行。我很想知道为什么它没有给我排行。我研究并发现必须首先启用补充日志记录 (SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;)。此值为 YES。

查询如下:-

CREATE TABLE TestAgain
(
Fld1 VARCHAR2(3),
Fld2 NUMBER(3)
);

INSERT INTO TestAgain values ('XYZ', 1);
INSERT INTO TestAgain VALUES ('PQR', 2);

COMMIT;

DELETE FROM TestAgain;

SELECT UNDO_SQL FROM FLASHBACK_TRANSACTION_QUERY
WHERE XID = (SELECT DISTINCT(RAWTOHEX(VERSIONS_XID))
FROM TestAgain VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE);

最后一个查询没有返回任何行。请帮我弄清楚我在这里缺少什么。P.S.: 我只是一个新手 SQL 学习者。

最佳答案

将您的查询分解为以下内容,这将为您提供遇到问题的痛点。如果您在开始交易之前和开始交易之后尝试使用以下 sqls。

SQL> select current_scn,systimestamp from v$database;

这将为您提供 SCN。用它来获取XID的值

 select descr,versions_xid from TestAgain
versions between scn pre and post;

在 flashback_transaction_query 中使用 XID 的这个值

 select xid, undo_sql from flashback_transaction_query
where xid = hextoraw('03000100EE0A0000');

关于sql - FLASHBACK_TRANSACTION_QUERY Oracle 12c 中的 View 不返回任何行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52689125/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com