首批通过分布式安全可靠测评,为关键业务系统打造
清理回收站
更新时间:2026-06-10 17:55:36
频繁删除数据库对象并重建,会在回收站产生大量的数据,您可以通过清理回收站的方式来清理这些数据。
清理回收站主要有手动和自动两种方式。系统租户(sys 租户)可以清理的回收站对象包括 INDEX、TABLE、DATABASE 和 TENANT 四种类型,MySQL 用户租户可以清理的回收站对象包括 INDEX、TABLE 和 DATABASE 等三种类型;Oracle 用户租户可以清理的回收站对象包括 INDEX 和 TABLE 两种类型。
手动清理回收站
您可以通过 PURGE 命令手动清理回收站。
注意事项
Purge 操作会删除对象和从属于该对象的对象(即 Database -> Table -> Index)。例如,在 MySQL 模式中,Purge 数据库会删除数据库和从属于该数据库的表和表索引。
当一个对象的上层对象被 Purge,那么当前回收站中关联的下一层对象也会被 Purge。
执行 Purge 操作前,建议您通过回收站对待删除的对象进行确认。执行 Purge 操作后,在 OceanBase 数据库的回收站中将再也查询不到对象的信息,真实数据也最终会被作为垃圾回收。
操作步骤
sys租户或用户租户的租户管理员登录到数据库。说明
- MySQL 租户的管理员用户为
root用户,Oracle 租户的管理员用户为SYS用户。 - 如果需要清理租户回收站对象,则需要使用
sys租户登录数据库。
连接示例如下,连接数据库时请以实际环境为准。
obclient -h10.xx.xx.xx -P2883 -uroot@sys#obdemo -p***** -A有关更加详细的连接数据库的操作指引,参见 连接数据库概述(MySQL 模式) 和 连接数据库概述(Oracle 模式)。
- MySQL 租户的管理员用户为
执行
SHOW RECYCLEBIN语句,获取回收站中对象的名称。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根据业务需要,选择合适的场景,清理回收站。
将租户从回收站中彻底清除
将租户从回收站中彻底清除时,租户下的所有对象也会一并被清除。仅
sys租户支持清理租户回收站对象。语句如下:
obclient [(none)]> PURGE TENANT tenant_name;其中,
tenant_name表示回收站中的名称,也可以使用原始名称。使用原始名称时,如果回收站中当前有相同的多个原始名称,则清除的是最早进入回收站中的租户。示例如下:
obclient [(none)]> PURGE TENANT oracle001; obclient [(none)]> PURGE TENANT RECYCLE_$_100017_1672050541224936;从回收站中物理清理指定的数据库
仅
sys租户和 MySQL 用户租户支持清理回收站中的数据库对象。obclient> PURGE DATABASE object_name;object_name表示该 Schema 对象在回收站中的名称。不支持使用原始名称。示例如下:
obclient [(none)]> PURGE DATABASE __recycle_$_100017_1673854707660504;从回收站中物理清理指定的表
obclient> PURGE TABLE object_name;object_name表示该 Schema 对象在回收站中的名称,也可以使用原始名称。使用原始名称时,如果回收站中当前有相同的多个原始名称,则清除的是最早进入回收站中的表。示例如下:
obclient [(none)]> PURGE TABLE __recycle_$_100017_1673426335331800;从回收站中物理清理指定的索引表
obclient> PURGE INDEX object_name;object_name表示该 Schema 对象在回收站中的名称。不支持使用原始名称。示例如下:
obclient [(none)]> PURGE INDEX __recycle_$_100017_1673426335319344;将所有对象从回收站中彻底清除
obclient [(none)]> PURGE RECYCLEBIN;
命令执行成功后,可以再次执行
SHOW RECYCLEBIN语句,确认回收站中的对象是否成功清理。obclient [(none)]> SHOW RECYCLEBIN;
自动清理回收站
OceanBase 数据库当前支持通过集群级配置项 recyclebin_object_expire_time 自动清理收站中过期的 Schema 对象,其默认值为 0s。其中:
值为
0s时,表示关闭自动 Purge 回收站功能。值为非
0s时,表示 Purge 一段时间前进入回收站的对象。
有关集群级配置项 recyclebin_object_expire_time 的更多信息,请参见 recyclebin_object_expire_time。
使用
root用户登录数据库的sys租户。连接示例如下,连接数据库时请以实际环境为准。
obclient -h10.xx.xx.xx -P2883 -uroot@sys#obdemo -p***** -A有关更加详细的连接数据库的操作指引,请参见 连接数据库。
执行以下语句,查看回收站的自动清理策略。
obclient [(none)]> SHOW PARAMETERS LIKE 'recyclebin_object_expire_time';查询结果如下:
+-------+----------+----------------+----------+-------------------------------+-----------+-------+--------------------------------------------------------------------------------------------------+--------------+---------+---------+-------------------+---------------+-----------+ | zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level | default_value | isdefault | +-------+----------+----------------+----------+-------------------------------+-----------+-------+--------------------------------------------------------------------------------------------------+--------------+---------+---------+-------------------+---------------+-----------+ | zone1 | observer | 172.xx.xxx.xxx | 2882 | recyclebin_object_expire_time | TIME | 0s | recyclebin object expire time, default 0 that means auto purge recyclebin off. Range: [0s, +∞) | ROOT_SERVICE | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | 0s | 1 | +-------+----------+----------------+----------+-------------------------------+-----------+-------+--------------------------------------------------------------------------------------------------+--------------+---------+---------+-------------------+---------------+-----------+ 1 row in set执行以下语句,开启自动清理回收站的功能并指定清理多少时间前进入回收站的对象。
开启自动清理回收站功能,并回收 7 天前进入回收站的 Schema 对象,示例语句如下:
obclient [(none)]> ALTER SYSTEM SET recyclebin_object_expire_time = '7d';(可选)完成后,可以执行以下语句,确认回收站中符合条件的对象是否被清理。
obclient [(none)]> SHOW RECYCLEBIN;
相关文档
更多回收站相关的内容,请参见以下信息: