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; затем вспомогательный экземпляр удаляется.

Когда использовать

Чтобы восстановить данные одной таблицы, ошибочно удалённые/изменённые или удалённые через DROP с PURGE, за пределами того, что позволяет undo retention для Flashback Table/Query.

Внимание

AUXILIARY DESTINATION требует свободного места для SYSTEM, SYSAUX, UNDO и табличного пространства таблицы; операция может занять часы. Без REMAP TABLE операция завершится ошибкой, если таблица с таким же именем существует; всегда используйте REMAP или NOTABLEIMPORT, чтобы не перезаписать оригинал. Таблицы в схемах SYS/SYSTEM и в табличных пространствах SYSTEM/SYSAUX так восстановить нельзя. Требуется Enterprise Edition.

Открыть в DBAtlas →

Связанные материалы