恢复回收站对象
被删除的对象进入回收站后,可以使用 FLASHBACK 语句恢复回收站对象。
注意事项
-
在恢复表时,Flashback 对象的顺序需要符合从属关系,即先 Flashback 数据库,再 Flashback 表。
-
不支持直接恢复索引。在通过
FLASHBACK语句恢复表时,表上的索引也会被恢复。 -
恢复回收站对象时可修改待恢复对象的名称,但是不能与已有对象重名,否则系统会报错。
-
从回收站中恢复表前,如果该表从属的数据库已删除,则需要先恢复数据库再恢复表。
恢复数据库
恢复时可修改数据库名称,但不能与已有数据库重名,否则系统会报错。
-
管理员
root登录到 seekdb。连接示例如下,连接数据库时请以实际环境为准。
mysql -h127.0.0.1 -uroot -P2881 -
执行
SHOW RECYCLEBIN语句,获取回收站中对象的名称。SHOW RECYCLEBIN;+--------------------------------+---------------+----------+----------------------------+
| OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME |
+--------------------------------+---------------+----------+----------------------------+
| __recycle_$_1_1765784426825016 | test_db | DATABASE | 2025-12-15 15:40:26.825340 |
+--------------------------------+---------------+----------+----------------------------+
1 row in set (0.003 sec) -
根据业务需要,选择合适的场景,恢复回收站中的数据库。
-
从回收站中恢复数据库,恢复后的数据库名为进入回收站前的名称。
FLASHBACK DATABASE object_name TO BEFORE DROP;其中,
object_name表示数据库对象在回收站中的名称,不支持使用原始名称。执行该语句后,如果待恢复的数据库与已有数据库重名,系统会报错。
示例如下:
FLASHBACK DATABASE __recycle_$_1_1765784426825016 TO BEFORE DROP; -
从回收站中恢复数据库并重命名。
FLASHBACK DATABASE object_name TO BEFORE DROP RENAME TO new_database_name;其中:
-
object_name表示数据库对象在回收站中的名称,不支持使用原始名称。 -
new_database_name:表示从回收站中恢复后数据库的名称。
示例如下:
FLASHBACK DATABASE __recycle_$_1_1765784426825016 TO BEFORE DROP RENAME TO new_infotest; -
-
恢复表
恢复时可修改表的名称,但是不能与已有表重名,否则系统会报错。
-
管理员
root登录到 seekdb。连接示例如下,连接数据库时请以实际环境为准。
mysql -h127.0.0.1 -uroot -P2881 -
执行
SHOW RECYCLEBIN语句,获取回收站中对象的名称。SHOW RECYCLEBIN;+--------------------------------+---------------+-------+----------------------------+
| OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME |
+--------------------------------+---------------+-------+----------------------------+
| __recycle_$_1_1765785669490408 | tbl1 | TABLE | 2025-12-15 16:01:09.491488 |
+--------------------------------+---------------+-------+----------------------------+
1 row in set (0.002 sec) -
根据业务需要,选择合适的场景,恢复回收站中的表。
-
从回收站中恢复表,恢复后的表名为进入回收站前的表名。
FLASHBACK TABLE object_name TO BEFORE DROP;其中,
object_name表示表对象在回收站中的名称。也可以使用原始名称,由于回收站中的名称全局唯一,建议使用回收站中的名称。示例如下:
FLASHBACK TABLE __recycle_$_1_1765785669490408 TO BEFORE DROP;执行该语句后,恢复后的表名为进入回收站前的名称,且该表从属的数据库或 Schema 对象仍为表删除前从属的数据库或 Schema 对象。如果该表进入回收站前的名称与已有表重名,则系统会报错。
-
从回收站中恢复表并重命名。
FLASHBACK TABLE object_name TO BEFORE DROP RENAME To new_table_name;其中,
object_name表示表对象在回收站中的名称,也可以使用原始名称,由于回收站中的名称全局唯一,建议使用回收站中的名称;new_table_name表示表恢复后重命名的表名。示例如下:
FLASHBACK TABLE __recycle_$_1_1765785669490408 TO BEFORE DROP RENAME To infotable;执行该语句后,恢复后的表名为重命名的表名,且该表从属的数据库或 Schema 对象仍为表删除前从属的数据库或 Schema 对象。如果重命名的表名与已有表重名,则系统会报错。
-
从回收站中将表恢复到指定的数据库或 Schema 对象并重命名。
FLASHBACK TABLE object_name TO BEFORE DROP RENAME To database_name.new_table_name;其中,
object_name表示表对象在回收站中的名称,也可以使用原始名称,由于回收站中的名称全局唯一,建议使用回收站中的名称;database_name.new_table_name表示表恢复后重命名的表名及其从属的数据库或 Schema 对象。示例如下:
FLASHBACK TABLE __recycle_$_1_1765785669490408 TO BEFORE DROP RENAME To test.infotable;执行该语句后,恢复后的表名为重命名的表名,且该表从属的数据库或 Schema 对象为指定的数据库或 Schema 对象。如果重命名的表名与已有表重名,则系统会报错。
-
相关文档
更多回收站相关的内容,请参见以下信息: