---
title: "恢复回收站对象 - OceanBase 数据库 V4.3.1 | OceanBase 文档中心"
description: 恢复回收站对象 被删除的对象进入回收站后，可以使用 FLASHBACK 语句恢复回收站对象。 注意事项 在恢复表时，Flashback 对象的顺序需要符合从属关系，即先 Flashback 数据库，再 Flashback 表。 不支持直接恢复索引。在通过 FLASHBACK 语句恢复表时，表上的索引也会被恢复。 恢复…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.1

# 恢复回收站对象

更新时间：2026-04-10 11:58:01

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.1/zh-CN/600.manage/400.high-availability/500.recyclebin-management/400.restore-the-recyclebin-objects.md)  

被删除的对象进入回收站后，可以使用 `FLASHBACK` 语句恢复回收站对象。

## 注意事项

- 在恢复表时，Flashback 对象的顺序需要符合从属关系，即先 Flashback 数据库，再 Flashback 表。
 - 不支持直接恢复索引。在通过 `FLASHBACK` 语句恢复表时，表上的索引也会被恢复。
 - 恢复回收站对象时可修改待恢复对象的名称，但是不能与已有对象重名，否则系统会报错。
 - 对于 MySQL 租户，从回收站中恢复表前，如果该表从属的数据库已删除，则需要先恢复数据库再恢复表。
 - 如果一张表在进入回收站前属于某个表组，从回收站中恢复后该表默认会恢复到原表组中；如果原表组已经被删除，则该表恢复后会不属于任何一个表组。

## 恢复租户

由于当前仅 `sys` 租户可以删除租户，故仅 `sys` 租户可以将回收站中的租户恢复为正常租户。恢复时可修改租户名称，但不能与已有租户重名，否则系统会报错。

1. `sys` 租户登录到数据库。

   连接示例如下，连接数据库时请以实际环境为准。

   ```shell
   obclient -h10.xx.xx.xx -P2883 -uroot@sys#obdemo -p***** -A

   ```

   有关更加详细的连接数据库的操作指引，参见 [连接数据库概述（MySQL 模式）](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000818874) 和 [连接数据库概述（Oracle 模式）](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000818830)。
 2. 执行 `SHOW RECYCLEBIN` 语句，获取回收站中对象的名称。

   ```shell
   obclient [(none)]> SHOW RECYCLEBIN;
   +-------------------------------------+-------------------+----------+----------------------------+
   | OBJECT_NAME                         | ORIGINAL_NAME     | TYPE     | CREATETIME                 |
   +-------------------------------------+-------------------+----------+----------------------------+
   | RECYCLE_$_100017_1672050541224936   | oracle001         | TENANT   | 2023-01-16 11:01:40.258000 |
   | __recycle_$_100017_1673426335319344 | __idx_500788_idx1 | INDEX    | 2023-01-11 16:38:55.318878 |
   | __recycle_$_100017_1673426335331800 | t1                | TABLE    | 2023-01-11 16:38:55.331481 |
   | __recycle_$_100017_1673854707660504 | infotest          | DATABASE | 2023-01-16 15:38:27.660436 |
   +-------------------------------------+-------------------+----------+----------------------------+
   4 rows in set

   ```
 3. 根据业务需要，选择合适的场景，恢复回收站中的租户。

      - 将回收站中的租户恢复为正常租户，且恢复后的租户名为进入回收站前的租户名。

       语句如下：

       ```sql
       FLASHBACK TENANT tenant_name TO BEFORE DROP;

       ```

       其中，`tenant_name` 可以使用回收站中的名称，也可以使用租户原始的名称。由于回收站中的名称全局唯一，因此使用回收站中的名称可以明确恢复的是哪个租户，建议使用回收站中的名称恢复租户。如果使用原始名称，当回收站中的多个租户存在相同的原始名称时，此时恢复的租户是这些租户中最后进入回收站中的租户。

       示例如下：

       ```shell
       obclient [(none)]> FLASHBACK TENANT RECYCLE_$_100017_1672050541224936 TO BEFORE DROP;
       Query OK, 0 rows affected

       ```
      - 将回收站中的租户恢复为正常租户并重命名。

       ```sql
       FLASHBACK TENANT tenant_name TO BEFORE DROP RENAME TO new_tenant_name;

       ```

       相关参数说明如下：

            - `tenant_name` 可以使用回收站中的名称，也可以使用租户原始的名称。由于回收站中的名称全局唯一，因此使用回收站中的名称可以明确恢复的是哪个租户，建议使用回收站中的名称恢复租户。如果使用原始名称，当回收站中的多个租户存在相同的原始名称时，此时恢复的租户是这些租户中最后进入回收站中的租户。
            - `new_tenant_name` 表示重命名的租户名，即该租户从回收站中恢复后的名称。

       示例如下：

       ```shell
       obclient [(none)]> FLASHBACK TENANT RECYCLE_$_100017_1672050541224936 TO BEFORE DROP RENAME TO new_oracle;
       Query OK, 0 rows affected

       ```

## 恢复数据库

`sys` 租户或 MySQL 用户租户可以从回收站中恢复数据库。恢复时可修改数据库名称，但不能与已有数据库重名，否则系统会报错。

1. `sys` 租户或 MySQL 用户租户的租户管理员登录到数据库。

   #### 说明

   默认 MySQL 租户的管理员用户为 `root` 用户。

   ```

   ```shell
   obclient [(none)]> SHOW RECYCLEBIN;
   +-------------------------------------+-------------------+----------+----------------------------+
   | OBJECT_NAME                         | ORIGINAL_NAME     | TYPE     | CREATETIME                 |
   +-------------------------------------+-------------------+----------+----------------------------+
   | __recycle_$_100017_1673426335319344 | __idx_500788_idx1 | INDEX    | 2023-01-11 16:38:55.318878 |
   | __recycle_$_100017_1673426335331800 | t1                | TABLE    | 2023-01-11 16:38:55.331481 |
   | __recycle_$_100017_1673854707660504 | infotest          | DATABASE | 2023-01-16 15:38:27.660436 |
   +-------------------------------------+-------------------+----------+----------------------------+
   3 rows in set

   ```
 3. 根据业务需要，选择合适的场景，恢复回收站中的数据库。

      - 从回收站中恢复数据库，恢复后的数据库名为进入回收站前的名称。

       ```sql
       FLASHBACK DATABASE object_name TO BEFORE DROP;

       ```

       其中，`object_name` 表示数据库对象在回收站中的名称，不支持使用原始名称。

       示例如下：

       ```shell
       obclient [(none)]> FLASHBACK DATABASE __recycle_$_100017_1673854707660504 TO BEFORE DROP;
       Query OK, 0 rows affected

       ```

       执行该语句后，如果待恢复的数据库与租户的已有数据库重名，系统会报错。

       ```shell
       obclient [(none)]> FLASHBACK DATABASE __recycle_$_100017_1673854707660504 TO BEFORE DROP;
       ERROR 1007 (HY000): Can't create database 'infotest'; database exists

       ```
      - 从回收站中恢复数据库并重命名。

       ```sql
       FLASHBACK DATABASE object_name TO BEFORE DROP RENAME TO new_database_name;

       ```

       其中：

            - `object_name` 表示数据库对象在回收站中的名称，不支持使用原始名称。
            - `new_database_name`：表示从回收站中恢复后数据库的名称。

       示例如下：

       ```shell
       obclient [(none)]> FLASHBACK DATABASE __recycle_$_100017_1673854707660504 TO BEFORE DROP RENAME TO new_infotest;
       Query OK, 0 rows affected

       ```

## 恢复表

`sys` 租户、 MySQL 用户租户和 Oracle 用户租户均可以从回收站中恢复表。恢复时可修改表的名称，但是不能与已有表重名，否则系统会报错。

1. `sys` 租户或用户租户的租户管理员登录到数据库。

   #### 说明

   默认 MySQL 租户的管理员用户为 `root` 用户，Oracle 租户的管理员用户为 `SYS` 用户。

   ```

   ```
 3. 根据业务需要，选择合适的场景，恢复回收站中的表。

      - 从回收站中恢复表，恢复后的表名为进入回收站前的表名。

       ```sql
       FLASHBACK TABLE object_name TO BEFORE DROP;

       ```

       其中，`object_name` 表示表对象在回收站中的名称。也可以使用原始名称，由于回收站中的名称全局唯一，建议使用回收站中的名称。

       示例如下：

       ```shell
       obclient [(none)]> FLASHBACK TABLE __recycle_$_100017_1673426335331800 TO BEFORE DROP;
       Query OK, 0 rows affected

       ```

       执行该语句后，恢复后的表名为进入回收站前的名称，且该表从属的数据库或 Schema 对象仍为表删除前从属的数据库或 Schema 对象。如果该表进入回收站前的名称与已有表重名，则系统会报错。
      - 从回收站中恢复表并重命名。

       ```sql
       FLASHBACK TABLE object_name TO BEFORE DROP RENAME To new_table_name;

       ```

       其中，`object_name` 表示表对象在回收站中的名称，也可以使用原始名称，由于回收站中的名称全局唯一，建议使用回收站中的名称；`new_table_name` 表示表恢复后重命名的表名。

       示例如下：

       ```shell
       obclient [(none)]> FLASHBACK TABLE __recycle_$_100017_1673426335331800 TO BEFORE DROP RENAME To infotable;
       Query OK, 0 rows affected

       ```

       执行该语句后，恢复后的表名为重命名的表名，且该表从属的数据库或 Schema 对象仍为表删除前从属的数据库或 Schema 对象。如果重命名的表名与已有表重名，则系统会报错。
      - 从回收站中将表恢复到指定的数据库或 Schema 对象并重命名。

       ```sql
       FLASHBACK TABLE object_name TO BEFORE DROP RENAME To database_name.new_table_name;

       ```

       其中，`object_name` 表示表对象在回收站中的名称，也可以使用原始名称，由于回收站中的名称全局唯一，建议使用回收站中的名称；`database_name.new_table_name` 表示表恢复后重命名的表名及其从属的数据库或 Schema 对象。Oracle 租户的 Schema 对象名与用户名同名。

       示例如下：

       ```shell
       obclient [(none)]> FLASHBACK TABLE __recycle_$_100017_1673426335331800 TO BEFORE DROP RENAME To test.infotable;
       Query OK, 0 rows affected

       ```

       执行该语句后，恢复后的表名为重命名的表名，且该表从属的数据库或 Schema 对象为指定的数据库或 Schema 对象。如果重命名的表名与已有表重名，则系统会报错。

## 相关文档

更多回收站相关的内容，请参见以下信息：

- [回收站概述](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000818698)
 - [开启或关闭回收站](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000818697)
 - [查看回收站对象](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000818696)
 - [清理回收站](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000818699)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
