#回收站管理
# 开启回收站
回收站的开关由配置参数RECYCLEBIN_ENABLED的取值控制,默认为ON,即开启回收站。
# 注意事项
在配置回收站开关的过程中,不建议并行DROP、TRUNCAKE等删除操作,可能会因回收站开启暂未生效而导致被删除对象直接被彻底清理。
在共享集群/分布式集群部署中,多个实例间不会自动同步该配置但建议配置保持一致,否则仅开启回收站的实例执行删除HEAP表操作时表数据才会进入回收站。如需调整回收站开关需分别连接不同实例执行相应操作。
在高可用部署中,主备之间不会自动同步该配置,且仅以主库(主集群)的配置生效。建议主备库(主备集群)配置保持一致,避免主备切换后引起配置生效结果变化。
# 操作步骤
以DBA用户连接并登录数据库。
$ yasql sales/********@192.168.1.2:1688 YashanDB SQL Enterprise Edition Release {version_number} x86_64 Connected to: YashanDB Server Enterprise Edition Release {version_number} x86_64 - Linux SQL>查看当前配置:
SHOW PARAMETER RECYCLEBIN_ENABLED; NAME VALUE --------------------------------------- ---------------------------------------- RECYCLEBIN_ENABLED ONRECYCLEBIN_ENABLED = ON,表示回收站已开启。
RECYCLEBIN_ENABLED = OFF,表示回收站未开启,可执行后续操作将其开启。
开启回收站,配置立即生效。
ALTER SYSTEM SET RECYCLEBIN_ENABLED='ON' scope=both;登录其他实例(或备库),重复上述操作完成相应配置调整,使全局保持一致。
# 查看回收站中的对象
通过DBA_RECYCLEBIN视图(或对应的USER_RECYCLEBIN、ALL_RECYCLEBIN视图)可以查看回收站中的对象。
-- 查看回收站中的所有对象
SELECT OWNER,OBJECT_NAME,ORIGINAL_NAME,OPERATION,TYPE FROM DBA_RECYCLEBIN;
OWNER OBJECT_NAME ORIGINAL_NAME OPERATION TYPE
------------------------- ------------------------- ------------------------- ------------------------- ------------------
SYS BIN$3042 EMPLOYEE_INFO DROP TABLE
SALES BIN$3031 FINANCE_INFO DROP TABLE
SALES BIN$3032 IDX_FINANCE_INFO_1 DROP INDEX
-- 查询各表空间回收站数据所占总容量(block数)
SELECT ts_name, SUM(block_count) AS total_recyclebin_blocks FROM DBA_RECYCLEBIN GROUP BY ts_name;
TS_NAME TOTAL_RECYCLEBIN_BLOCKS
---------------------------------------------------------------- -----------------------
USERS 16
# 清理回收站
回收站中的对象,实际仍存储于其原本所在的表空间,仍占用存储空间,备份时仍会备份回收站中的数据。这些数据可以等待数据库的自动清理机制自行处理,也可以按需手动执行PURGE语句进行清理,例如:
在确定回收站对象及相关数据无需再使用后,及时/定期进行手动清理释放空间。
在执行数据库/表空间备份之前,先检查回收站对象并清理不必要数据,减少待备份的数据量。
Caution:
被清理过的对象或子对象将无法再闪回恢复,例如清理了某个表的索引后再恢复该表,仅可以恢复表和其他子对象,无法恢复该索引。
清理表时会同时将其子对象一并清理。
# 自动清理
当某个表空间分配不出空闲空间时,数据库会尝试清理该表空间内的回收站对象,以腾出更多空闲位置。
# 手动清理
使用PURGE语句可以清理回收站:
清理回收站中的具体某个对象,例如表或索引
可以通过原对象名(ORIGINAL_NAME字段)指定,若同名对象(ORIGINAL_NAME字段)多次进入回收站(会生成不同的OBJECT_NAME字段),则每次清理操作只会逆序清理一次进入回收站的数据。
SELECT OBJECT_NAME,ORIGINAL_NAME,OPERATION,TYPE,RECYCLEBIN_TIME FROM DBA_RECYCLEBIN; OBJECT_NAME ORIGINAL_NAME OPERATION TYPE RECYCLEBIN_TIME ---------------------------------------------------------------- ---------------------------------------------------------------- ------------------------- ----------------------------------------- ----------------------------------------- BIN$3132 FINANCE_INFO DROP TABLE 2025-09-02:15:59:03 BIN$3133 IDX_FINANCE_INFO_1 DROP INDEX 2025-09-02:15:59:03 BIN$3134 FINANCE_INFO DROP TABLE 2025-09-02:16:01:33 BIN$3135 IDX_FINANCE_INFO_1 DROP INDEX 2025-09-02:16:01:33 -- 基于ORIGINAL_NAME清理索引 PURGE INDEX IDX_FINANCE_INFO_1; -- 基于ORIGINAL_NAME清理表 PURGE TABLE FINANCE_INFO; SELECT OBJECT_NAME,ORIGINAL_NAME,OPERATION,TYPE,RECYCLEBIN_TIME FROM DBA_RECYCLEBIN; OBJECT_NAME ORIGINAL_NAME OPERATION TYPE RECYCLEBIN_TIME ---------------------------------------------------------------- ---------------------------------------------------------------- ------------------------- ----------------------------------------- ----------------------------------------- BIN$3134 FINANCE_INFO DROP TABLE 2025-09-02:16:01:33 BIN$3135 IDX_FINANCE_INFO_1 DROP INDEX 2025-09-02:16:01:33可以通过进入回收站时系统生成的BIN开头对象名(OBJECT_NAME字段)指定。
-- 基于OBJECT_NAME清理索引 PURGE INDEX BIN$3135; SELECT OBJECT_NAME,ORIGINAL_NAME,OPERATION,TYPE,RECYCLEBIN_TIME FROM DBA_RECYCLEBIN; OBJECT_NAME ORIGINAL_NAME OPERATION TYPE RECYCLEBIN_TIME ---------------------------------------------------------------- ---------------------------------------------------------------- ------------------------- ----------------------------------------- ----------------------------------------- BIN$3134 FINANCE_INFO DROP TABLE 2025-09-02:16:01:33
清理某个表空间的回收站中具体某个用户的所有对象
PURGE TABLESPACE yashan sales;清空某个表空间的回收站
PURGE TABLESPACE yashan;清空当前数据库中所有回收站
PURGE DBA_RECYCLEBIN;
# 关闭回收站
关闭回收站后,删除HEAP表时将直接丢弃相应数据、释放所占数据空间。
# 注意事项
在共享集群/分布式集群部署中,多个实例间不会自动同步该配置但建议配置保持一致,否则仅开启回收站的实例执行删除HEAP表操作时表数据才会进入回收站。如需调整回收站开关需分别连接不同实例执行相应操作。
在高可用部署中,主备之间不会自动同步该配置,且仅以主库(主集群)的配置生效。建议主备库(主备集群)配置保持一致,避免主备切换后引起配置生效结果变化。
# 操作步骤
以DBA用户连接并登录数据库。
$ yasql sales/********@192.168.1.2:1688 YashanDB SQL Enterprise Edition Release {version_number} x86_64 Connected to: YashanDB Server Enterprise Edition Release {version_number} x86_64 - Linux SQL>查看当前配置:
SHOW PARAMETER RECYCLEBIN_ENABLED; NAME VALUE --------------------------------------- ---------------------------------------- RECYCLEBIN_ENABLED ONRECYCLEBIN_ENABLED = ON,表示回收站已开启,可执行后续操作将其关闭。
RECYCLEBIN_ENABLED = OFF,表示回收站未开启。
关闭回收站,配置立即生效。
ALTER SYSTEM SET RECYCLEBIN_ENABLED='OFF' scope=both;登录其他实例(或备库),重复上述操作完成相应配置调整,使全局保持一致。

