联系我们
18591797788
hubin@rlctech.com
北京市海淀区中关村南大街乙12号院天作国际B座1708室
18681942657
lvyuan@rlctech.com
上海市浦东新区商城路660号乐凯大厦26c-1
18049488781
xieyi@rlctech.com
广州市越秀区东风东路华宫大厦808号1608房
029-81109312
service@rlctech.com
西安市高新区天谷七路996号西安国家数字出版基地C座501
OceanBase回收站功能仅用于恢复被DROP删除的数据库对象(如表、库、租户),无法恢复被DELETE删除的表内数据。
区分场景:
DELETE误删数据 → 使用闪回查询(Flashback Query)(AS OF TIMESTAMP)DROP TABLE误删表 → 使用本方案1. 确认回收站已开启
SHOW VARIABLES LIKE 'recyclebin'; -- 值为ON表示开启
SET GLOBAL recyclebin = ON;
> 注意:未开启回收站时,只能通过备份恢复租户再导出表,耗时较长。
2. 确认操作权限
root,Oracle模式为SYS)。sys)管理员账号。3. 确认磁盘空间
USE (ODC需在目标库下操作)。FLASHBACK 不支持直接将表恢复到其他数据库(如 RENAME TO db2.table 会报错)。1. 查找回收站对象
SHOW RECYCLEBIN;
ORIGINAL_NAME 为误删表名(如 t1)的记录。OBJECT_NAME(如 __recycle_$_1757091924_1777000065164040)。2. 切换到原属数据库
test2),执行:USE test2; -- ODC需在目标库界面操作
3. 执行恢复命令
FLASHBACK TABLE `__recycle_$_1757091924_1777000065164040` TO BEFORE DROP;
FLASHBACK TABLE `__recycle_$_1757091924_1777000065164040` TO BEFORE DROP RENAME TO t1_bak;
> 注意:RENAME TO 后只能写新表名(如 t1_bak),不可加库名。
1. 常见报错与解决方案
| 报错信息 | 原因分析 | 解决方案 |
|---|---|---|
ERROR 5270 (HY000): table 'xxx' is not in RECYCLE BIN |
未在原属数据库下操作 | 执行 USE 后重试 |
ERROR 1046 (3D000): No database selected |
未选择数据库 | 执行 USE |
ERROR 1050 (42S01): Table 'xxx' already exists |
原库存在同名表 | 使用 RENAME TO 新表名 改名恢复 |
2. 核心限制
recyclebin_object_expire_time 控制),超期后自动清除。PURGE 后对象永久丢失,无法恢复。ALTER DATABASE 等操作,恢复可能失败。3. 风险规避
SHOW RECYCLEBIN 中的对象归属,避免误操作。若回收站不可用(如对象已超期或被 PURGE):
1. 备份恢复表:
ALTER SYSTEM RECOVER TABLE db_name.original_table
TO TENANT target_tenant
UNTIL TIME='误删前时间点';
2. 租户级恢复:
重要建议
SET GLOBAL recyclebin = ON 并写入配置文件。PURGE RECYCLEBIN;)。DELETE 误删 → 闪回查询(undo_retention 窗口内)DROP 误删 → 回收站恢复(recyclebin 窗口内)