---
title: "闪回回收站对象 | OceanBase 文档中心"
description: 闪回回收站对象 本节主要介绍如何从回收站中闪回数据库、表及租户。 使用限制 在恢复表时，Flashback 对象的顺序需要符合从属关系，即先 Flashback 数据库，再 Flashback 表。 通过 FLASHBACK 语句恢复表时，表上的索引也会恢复。 通过 PURGE 命令可以单独清除索引，但是 FLASH…
---
切换语言

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

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

# 闪回回收站对象

更新时间：2026-07-05 16:03:05

本节主要介绍如何从回收站中闪回数据库、表及租户。

## 使用限制

- 在恢复表时，Flashback 对象的顺序需要符合从属关系，即先 Flashback 数据库，再 Flashback 表。
 - 通过 `FLASHBACK` 语句恢复表时，表上的索引也会恢复。
 - 通过 `PURGE` 命令可以单独清除索引，但是 `FLASHBACK` 命令不支持单独恢复索引。
 - 如果一张表在进入回收站前属于某个表组，通过闪回恢复后该表默认会恢复到该表组中；如果表组已经被删除，则该表恢复后会不属于任何一个表组。

## MySQL 模式下恢复数据库和表

使用 `FLASHBACK` 命令可恢复回收站中的数据库和表对象，只有租户管理员用户才可以使用该命令。恢复时可修改对象的名称，但是不能和已有对象重名。

### 从回收站中恢复数据库

语句如下：

- 从回收站中恢复数据库

  ```sql
  obclient> FLASHBACK DATABASE object_name TO BEFORE DROP;

  ```

  语句中的 `object_name` 表示数据库对象在回收站中的名称，可以通过 `SHOW RECYCLEBIN` 语句获取该名称，有关查询回收站的操作，请参见 [数据库、表和索引回收站](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000881504)。

  执行该语句后，恢复后的数据库名为进入回收站前的名称。
 - 从回收站中恢复数据库并重命名

  ```sql
  obclient> FLASHBACK DATABASE object_name TO BEFORE DROP RENAME TO database_name;

  ```

  其中：

     - `object_name` 表示数据库对象在回收站中的名称。
     - `database_name`：表示从回收站中恢复后数据库的名称。

### 从回收站中恢复表

从回收站中闪回表前，如果该表从属的数据库已删除，则需要先恢复数据库再恢复表。

从回收站中恢复表的语句如下：

- 从回收站中恢复表。

  ```sql
  obclient> FLASHBACK TABLE object_name TO BEFORE DROP;

  ```

  执行该语句后，恢复后的表名为进入回收站前的名称，且该表从属的数据库仍为表删除前从属的数据库。
 - 从回收站中恢复表并重命名。

  ```sql
  obclient> FLASHBACK TABLE object_name TO BEFORE DROP RENAME to new_table_name;

  ```

  执行该语句后，恢复后的表名为重命名的表名，且该表从属的数据库仍为表删除前从属的数据库。
 - 从回收站中将表恢复到指定的数据库并重命名。

  ```sql
  obclient> FLASHBACK TABLE object_name TO BEFORE DROP RENAME to database_name.new_table_name;

  ```

  执行该语句后，恢复后的表名为重命名的表名，且该表从属的数据库为指定的数据库。

上述 SQL 语句中：

- `object_name` 表示表对象在回收站中的名称，可以通过 `SHOW RECYCLEBIN` 语句获取该名称，有关查询回收站的操作，请参见 [数据库、表和索引回收站](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000881504)。
 - `new_table_name` 表示表恢复后重命名的表名。
 - `user_name.new_table_name` 表示表恢复后重命名的表名及其从属的数据库。

## Oracle 模式下恢复表

OceanBase 数据库的 Oracle 模式仅支持从回收站中恢复被删除的表。

  ```

  执行该语句后，恢复后的表名为进入回收站前的名称，且该表从属的 Schema 对象仍为表删除前从属的 Schema 对象。
 - 从回收站中恢复表并重命名。

  ```

  执行该语句后，恢复后的表名为重命名的表名，且该表从属的 Schema 对象仍为表删除前从属的 Schema 对象。
 - 从回收站中恢复表并指定表恢复后从属的 Schema 对象。

  ```sql
  obclient> FLASHBACK TABLE object_name TO BEFORE DROP RENAME to user_name.new_table_name;

  ```

  执行该语句后，恢复后的表名为重命名的表名，且该表从属的 Schema 对象为指定的 Schema 对象。

- `object_name` 表示表对象在回收站中的名称，可以通过 `SHOW RECYCLEBIN` 语句获取该名称，有关查询回收站的操作，请参见 [数据库、表和索引回收站](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000881504)。
 - `new_table_name` 表示表恢复后重命名的表名。
 - `user_name.new_table_name` 表示表恢复后重命名的表名及其从属的 Schema 对象。

## 恢复租户

在 OceanBase 数据库中仅系统租户（`sys` 租户）支持租户回收站功能。

当 `sys` 租户的回收站功能开启时，执行 `DROP TENANT` 操作后，相应的租户默认会进入回收站。`sys` 租户的管理员（即 `root` 用户）可以使用 `FLASHBACK` 语句将回收站内的租户恢复为正常租户。

### 恢复语句

语句如下：

- 将系统租户回收站中的租户闪回为正常租户。

  ```sql
  obclient> FLASHBACK TENANT tenant_name TO BEFORE DROP;

  ```
 - 将系统租户回收站中的 `tenant_name` 闪回为正常租户，并重命名 `new_tenant_name`。

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

  ```

其中：

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

### 恢复示例

假设当前回收站中有一个 `Oracle1` 租户，现在需要将该租户恢复为正常租户并重命名为 `Oracle2`。

1. 使用 `root` 用户登录 `sys` 租户。
 2. 查看回收站中的对象。

   ```sql
   obclient> SHOW RECYCLEBIN;
   +-----------------------------------+---------------+--------+----------------------------+
   | OBJECT_NAME                       | ORIGINAL_NAME | TYPE   | CREATETIME                 |
   +-----------------------------------+---------------+--------+----------------------------+
   | RECYCLE_$_100017_1637551598530048 | Oracle1       | TENANT | 2021-11-22 11:27:14.548125 |
   +-----------------------------------+---------------+--------+----------------------------+
   1 row in set

   ```
 3. 执行以下语句，闪回租户 `Oracle1` 并重命名为 `Oracle2`。

   ```sql
   obclient> FLASHBACK TENANT Oracle1 TO BEFORE DROP RENAME TO Oracle2;

   ```
 4. 执行以下语句，确认租户已恢复。

   ```sql
   obclient>  SELECT * FROM oceanbase.DBA_OB_TENANTS;

   obclient>  SHOW RECYCLEBIN;
   Empty set

   ```

更多 `FLASHBACK` 语句的说明信息，请参见 MySQL 模式中的 [FLASHBACK](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000885007) 和 Oracle 模式中的 [FLASHBACK TABLE BEFORE DROP](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000886754)。

 上一篇 下一篇 ![有帮助](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) 咨询热线
