---
title: github-fill
description: 回收站 回收站从原理上来说就是一个数据字典表，用于放置用户删除的数据库对象信息，包括数据库和表等信息。用户删除的信息被放入回收站后，其实仍然占据着物理空间，除非您手动清除（PURGE）或者对象定期被数据库系统删除。 回收站对象 在当前版本中，支持进入回收站的对象有索引、表、库和租户。由于当前仅 sys 租户可以删除租…
---
切换语言

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

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

# 回收站

更新时间：2026-04-16 00:11:36

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.2.1/zh-CN/700.reference/100.oceanbase-database-concepts/1000.high-data-reliability-and-availability/400.data-protection/400.recycle-bin.md)  

回收站从原理上来说就是一个数据字典表，用于放置用户删除的数据库对象信息，包括数据库和表等信息。用户删除的信息被放入回收站后，其实仍然占据着物理空间，除非您手动清除（PURGE）或者对象定期被数据库系统删除。

## 回收站对象

在当前版本中，支持进入回收站的对象有索引、表、库和租户。由于当前仅 `sys` 租户可以删除租户，故 MySQL 用户租户和 Oracle 用户租户被删除后，只能进入 `sys` 租户的回收站中。

- `sys` 租户支持管理的回收站对象包括数据库、表、索引及租户。
 - MySQL 用户租户支持管理的回收站对象包括数据库、表及索引。
 - Oracle 用户租户支持管理的回收站对象包括表和索引。

#### 注意

- 直接删除索引，该索引不会进入回收站。删除表时，表上的索引会随主表一起进入回收站。
 - 不能对回收站对象做任何查询和 DML 操作，DDL 操作中也仅支持 Purge 和 Flashback 操作。
 - 租户回收站的管理主要由 `sys` 租户来完成。

## 查看回收站

租户管理员可以通过如下命令，查看回收站中的对象：

```sql
obclient> SHOW RECYCLEBIN;

```

## 开关回收站

租户被创建后，默认回收站为关闭状态。如果开启了回收站，在对数据库对象进行 `DROP` 操作后，对象会进入回收站，控制回收站开启关闭的命令分为 Global 级别和 Session 级别：

- Global 级别的开启、关闭语句如下所示：

  ```sql
  obclient> SET GLOBAL recyclebin = ON/OFF;

  ```
 - Session 级别的开启、关闭语句如下所示：

  ```sql
  obclient> SET @@recyclebin = ON/OFF;

  ```

## 回收站恢复

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

下述示例语句展示了如何恢复回收站中的租户、数据库及表对象：

- 恢复租户

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

  ```
 - 恢复对象数据库

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

  ```
 - 恢复对象表

  ```sql
  obclient> FLASHBACK TABLE object_name TO BEFORE DROP [RENAME to table_name];

  ```

命令的使用限制如下：

- `FLASHBACK` 数据库对象的顺序需要符合从属关系，即：Database > Table。
 - 恢复表会连同索引一并恢复。
 - 通过 `PURGE` 命令可以单独删除索引，但是 `FLASHBACK` 命令不支持单独恢复索引。
 - 如果一张表在进回收站之前属于某个表组，则删除该表组后再恢复该表会导致它不属于任何一个表组。如果表组还在，则恢复后该表还在原表组中。

## 回收站清理

频繁删除数据库对象并重建，会在回收站产生大量数据，这些数据可以通过 `PURGE` 命令清理。需要注意的是，`PURGE` 操作会删除对象和从属于该对象的对象（Database > Table > Index ）。

执行 `PURGE` 命令后，在 OceanBase 数据库的回收站中将再也查不到对象的信息，真实数据也最终会被垃圾回收。当一个对象的上层对象被 Purge，则当前回收站中关联的下一层对象也会被 Purge。

下述示例展示了一些如何通过 `PURGE` 命令清理回收站中的数据：

- `sys` 租户从回收站把指定租户物理删除。

  ```sql
  obclient> PURGE TENANT tenant_name;

  ```
 - 从回收站把指定库物理删除。

  ```sql
  obclient> PURGE DATABASE object_name;

  ```
 - 从回收站中把指定表物理删除。

  ```sql
  obclient> PURGE TABLE object_name;

  ```
 - 从回收站中把指定索引表物理删除。

  ```sql
  obclient> PURGE INDEX object_name;

  ```
 - 清空整个回收站。

  ```sql
  obclient> PURGE RECYCLEBIN;

  ```

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