Oracle CDB/PDB恢复表空间后表不存在问题求助
问题根源
你执行的recover tablespace会默认应用备份生成后所有的归档日志,其中包含了删除table1的操作记录,因此恢复完成后表依然不存在。要找回被删除的表,必须将表空间恢复到删除表操作发生之前的时间点。
解决步骤
定位删除表的时间点
通过以下SQL查询删除表的具体时间(需开启审计或有归档日志支持):SELECT timestamp FROM dba_audit_trail WHERE action_name = 'DROP TABLE' AND obj_name = 'TABLE1' AND con_id = (SELECT con_id FROM v$pdbs WHERE name = '你的PDB名称');若开启了闪回功能,也可通过闪回日志定位:
SELECT scn, timestamp FROM v$flashback_database_log ORDER BY timestamp DESC;执行基于时间点的表空间恢复
登录PDB的RMAN,执行以下命令(替换时间为删除表前的时刻):ALTER TABLESPACE mytablespace OFFLINE; RESTORE TABLESPACE mytablespace UNTIL TIME "TO_DATE('2024-05-20 09:50:00','YYYY-MM-DD HH24:MI:SS')"; RECOVER TABLESPACE mytablespace UNTIL TIME "TO_DATE('2024-05-20 09:50:00','YYYY-MM-DD HH24:MI:SS')"; ALTER TABLESPACE mytablespace ONLINE;验证表恢复状态
登录目标PDB,执行查询确认:SELECT * FROM table1;
补充说明
- 若删除表时使用了
PURGE参数,FLASHBACK TABLE TO BEFORE DROP命令无法恢复表,只能依赖基于时间点的恢复。 - 若没有删除表前的归档日志或闪回日志,需使用更早的全库备份,恢复到删除表之前的时间点。
内容的提问来源于stack exchange,提问作者Tariq Hajeer
相关产品推荐
相关产品推荐

