DBAtlas · 数据库运维图谱

从 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。

在 DBAtlas 中打开 →

相关内容