在Oracle 18c+中,是否可以将表闪回与参考分区表一起使用?

问题描述 投票:0回答:1

文档来看,我不太清楚参考分区表是否支持闪回:

闪回表的限制

本声明受以下限制:

  • 闪回表操作对于以下类型无效 对象:属于集群一部分的表、物化视图、 高级队列 (AQ) 表、静态数据字典表、系统 表、远程表、对象表、嵌套表或单独的表 表分区或子分区。

  • 以下 DDL 操作会更改表的结构,使得 您随后不能使用 TO SCN 或 TO TIMESTAMP 子句来刷新 该表返回到操作之前的时间:升级、移动、 或截断表;给表添加约束,添加表 到一个集群;修改或删除列;更改列 加密密钥;添加、删除、合并、拆分、合并或 截断分区或子分区(除了添加 范围划分)。

但是当我测试它时,它看起来很糟糕:

CREATE TABLE PARENT
(
    ID INT PRIMARY KEY
) PARTITION BY RANGE (ID)
(
    PARTITION P1 VALUES LESS THAN (MAXVALUE )
);

CREATE TABLE CHILD
(
    ID        INT PRIMARY KEY,
    PARENT_ID INT NOT NULL,
    CONSTRAINT FK_PARENT FOREIGN KEY (PARENT_ID) REFERENCES PARENT (ID)
) PARTITION BY REFERENCE (FK_PARENT);

ALTER TABLE CHILD
    ENABLE ROW MOVEMENT;

ALTER TABLE PARENT
    ENABLE ROW MOVEMENT;

FLASHBACK TABLE PARENT, CHILD TO RESTORE POINT BASE;

CHILD
失败:

ORA-08199 Flashback Table operation is not supported on this object.

所以答案似乎是明显的“否”,但话又说回来,从文档来看它并不是那么明显。还有其他我没有考虑过的方法吗?

背景:我想在自动化系统测试期间使用闪回快速重置容器化 Oracle 数据库中的所有表。

oracle database-partitioning flashback
1个回答
0
投票

是的,不支持;我正在努力更新文档。

如果您想重置所有表,您可以使用闪回数据库来解决这个问题。这会将整个数据库恢复到还原点。

假设您使用可插入数据库,请以

sysdba
用户身份连接到根容器并运行:

alter pluggable database <pdbname> close;
flashback pluggable database <pdbname> to restore point base;
alter pluggable database <pdbname> open resetlogs;
© www.soinside.com 2019 - 2024. All rights reserved.