Восстановить старый primary как standby после failover (REINSTATE)
OracleData GuardКоманда
# 1) Bring the old primary to MOUNT (sqlplus / as sysdba):
# SQL> STARTUP MOUNT;
# (RAC: srvctl start database -db <old_primary_db_unique_name> -startoption mount)
# 2) From DGMGRL connected to the new primary:
dgmgrl sys@<new_primary_db_unique_name>
REINSTATE DATABASE '<old_primary_db_unique_name>';
# 3) Verify:
SHOW CONFIGURATION;
SHOW DATABASE '<old_primary_db_unique_name>';Что делает
Откатывает старый primary с помощью flashback database к моменту до SCN failover, преобразует его в физический standby и начинает приём redo от нового primary; пересоздавать standby с нуля не нужно.
Когда использовать
После failover, когда сервер/хранилище старого primary снова доступны; после автоматического failover FSFO (observer обычно выполняет reinstate сам).
Внимание
Flashback должен быть включён на старом primary ДО failover, а flashback logs должны покрывать SCN failover (db_flashback_retention_target, размер FRA); иначе reinstate завершится ошибкой и standby придётся пересоздавать через RMAN duplicate. Данные, записанные в старый primary после failover, теряются безвозвратно.
Связанные материалы
- Показать конфигурацию брокера Data Guard и состояние баз данных (DGMGRL)
- Проверить роль primary/standby и готовность к switchover через SQL
- Измерить задержку transport/apply, скорость apply и процессы Data Guard на standby
- Проверить standby через брокер перед switchover/failover (VALIDATE DATABASE)
- Выполнить плановый switchover (DGMGRL, смена роли без потери данных)
- Выполнить failover после потери primary (DGMGRL)