从 RMAN 备份将单个表恢复到过去某个时间点(RECOVER TABLE)
OracleRMAN命令
# Restore under a new name (the original table is not touched):
RECOVER TABLE hr.employees
UNTIL TIME "TO_DATE('2026-01-15 03:00:00','YYYY-MM-DD HH24:MI:SS')"
AUXILIARY DESTINATION '/u03/aux'
REMAP TABLE hr.employees:employees_rec;
# Multitenant: a table inside a PDB
RECOVER TABLE hr.employees OF PLUGGABLE DATABASE <pdb>
UNTIL SCN 12345678
AUXILIARY DESTINATION '/u03/aux'
REMAP TABLE hr.employees:employees_rec;
# Only produce a Data Pump dump, do not import:
RECOVER TABLE hr.employees
UNTIL SCN 12345678
AUXILIARY DESTINATION '/u03/aux'
DATAPUMP DESTINATION '/u03/dump'
DUMP FILE 'employees_rec.dmp'
NOTABLEIMPORT;作用
RMAN 将自动创建的辅助实例恢复到指定时间,用 Data Pump 导出该表(或分区),并通过 REMAP 以不同名称导入目标数据库;之后删除辅助实例。
适用场景
用于恢复误删除/误更新或用 PURGE 删除的单个表的数据,且超出了 Flashback Table/Query 的 undo 保留范围时。
注意
AUXILIARY DESTINATION 需要足够容纳 SYSTEM、SYSAUX、UNDO 和该表所在表空间的空闲空间;操作可能耗时数小时。不使用 REMAP TABLE 时,如果存在同名表则操作失败;始终使用 REMAP 或 NOTABLEIMPORT 以避免覆盖原表。SYS/SYSTEM schema 中以及 SYSTEM/SYSAUX 表空间中的表无法用这种方式恢复。需要 Enterprise Edition。