#回收站对象闪回

数据库回收站类似于操作系统回收站的机制,用于暂时存储被删除的表、索引等数据库对象。基于回收站,可以在删除数据库对象时避免永久丢失数据,在回收站被清理前随时可以快速高效地恢复误删除对象。

回收站仅适用于HEAP表,删除TAC表、LSC表以及外部表则始终表现为彻底删除。

回收站依附于表空间,回收站开启后,在不指定PURGE关键字删除某个表空间的HEAP表时,系统会将表对象及其数据放入该表空间的回收站中(表名称被修改为BIN开头的系统生成字符串)。

# 支持的对象

开启回收站后,支持进入回收站的对象为HEAP表、表上的部分子对象及其数据。

对象或数据的删除操作及其具体表现如下表所示。

目标对象 操作 表现
SYSTEM表空间中的HEAP表及其子对象 - 始终不进入回收站。
其他表空间中的HEAP表 DROP TABLE(未指定PURGE) 目标表及其分区、索引、基于该表的触发器均进入回收站。
TRUNCATE TABLE 目标表及其分区、索引、基于该表的触发器均进入回收站。
ALTER TABLE TRUNCATE PARTITION 若目标分区位于SYSTEM表空间,不进入回收站。
若目标分区位于其他表空间,进入回收站。

Note:

  • 使用DROP语句删除某个HEAP表的子对象(例如索引、触发器等),该子对象不会进入回收站。

  • 若执行上述操作时,表空间已满或临近满容量,目标对象及其数据即使进入回收站,也可能很快就会被清理。

# 回收站对象恢复规则

闪回恢复回收站对象时,规则如下:

  • 若待恢复对象为被DROP的表,需确认原表名是否被占用,若被占用则需在闪回的同时进行重命名,否则会报错。

  • 若待恢复对象已执行过多次DROP操作,每一次FLASHBACK只会逆序恢复一次DROP的数据,即首次FLASHBACK只恢复最后1次DROP操作。若前1次FLASHBACK恢复时未重命名(占用原表名),则后续FLASHBACK时则无法再继续使用原名称恢复。

  • 若待恢复对象已执行过多次TRUNCATE操作,每一次FLASHBACK只会逆序恢复一次TRUNCATE的数据,即首次FLASHBACK只恢复最后1次TRUNCATE操作。

  • 若TRUNCATE后表/分区中已插入新数据,闪回后该类新数据将会被放入回收站中。

  • 各类对象始终遵循从属关系:

    • 无法单独恢复通过TRUNCATE整个表进入回收站的分区,无法单独恢复通过TRUNCATE一级分区进入回收站的二级分区。

    • 无法单独恢复子对象(索引、触发器等),在恢复表/分区时,会自动恢复未被清理的相关子对象。

pdf-btn 下载文档 copy-btn 复制链接
edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流