DROP TABLE TEST_TABLE; Table dro-6ren">
gpt4 book ai didi

oracle - "table definition changed"尽管在表创建/更改后创建了还原点

转载 作者:行者123 更新时间:2023-12-03 23:54:10 24 4
gpt4 key购买 nike

FLASHBACK TABLE在表更改后立即创建还原点时,到还原点失败。以下代码仅在某些步骤之间存在 sleep 时才有效。

SQL> DROP TABLE TEST_TABLE;

Table dropped.

SQL> CREATE TABLE TEST_TABLE AS SELECT 1 A FROM DUAL;

Table created.

SQL> ALTER TABLE TEST_TABLE ENABLE ROW MOVEMENT;

Table altered.

SQL> --Sleep required here to prevent error on flashback.
SQL> DROP RESTORE POINT TEST_RESTORE_POINT;

Restore point dropped.

SQL> CREATE RESTORE POINT TEST_RESTORE_POINT;

Restore point created.

SQL> FLASHBACK TABLE TEST_TABLE TO RESTORE POINT TEST_RESTORE_POINT;
FLASHBACK TABLE TEST_TABLE TO RESTORE POINT TEST_RESTORE_POINT
*
ERROR at line 1:
ORA-01466: unable to read data - table definition has changed

为什么需要延迟,有没有办法消除它?

最佳答案

这种奇怪的现象可能是由 SMON 引起的负责跟踪闪回查询所依赖的 SCN 和时间戳的进程。有一个映射表SYS.SMON_SCN_TIME每 5 分钟插入一条新记录 SMON .

内部期间FLASHBACK TABLE执行命令 INSERT /*+ APPEND */ into SYS_TEMP_FBT SELECT /*+ FBTSCAN FULL(S) PARALLEL(S, DEFAULT) */ :1, :2, :3, rowid, SYS_FBT_INSDEL FROM "<schema>."TEST_TABLE" as of SCN :4 S (注意一个表 SYS_TEMP_FBT 是在同一个模式中创建的)它使用这个映射。

在 Oracle 10.2 之前,您需要等待整整 5 分钟才能成功对新/更改的对象执行 FLASHBACK 查询。在 11.1 中 TIM_SCN_MAP引入了 column 以使映射更细粒度。最多 100 个映射存储在一个值中,这使得时间戳到 SCN 映射的精度大约为 3 秒。

我尝试了很多事情,但我认为您对此无能为力,但请等待大约 3 秒钟以避免错误,因为这是由后台进程异步处理的,没有任何用户控制。

关于oracle - "table definition changed"尽管在表创建/更改后创建了还原点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34047160/

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