Восстановление отвалившегося standby | OTUS
🔥 Начинаем BLACK FRIDAY!
Максимальная скидка -25% на всё. Успейте начать обучение по самой выгодной цене.
Выбрать курс

Курсы

Программирование
iOS Developer. Basic
-25%
Python Developer. Professional
-25%
Разработчик на Spring Framework
-25%
Golang Developer. Professional
-25%
Python Developer. Basic
-25%
iOS Developer. Professional
-25%
Highload Architect
-25%
JavaScript Developer. Basic
-25%
Kotlin Backend Developer
-25%
JavaScript Developer. Professional
-25%
Android Developer. Basic
-25%
Unity Game Developer. Basic
-25%
Разработчик C#
-25%
Программист С Web-разработчик на Python Алгоритмы и структуры данных Framework Laravel PostgreSQL Reverse-Engineering. Professional CI/CD Vue.js разработчик VOIP инженер Программист 1С Flutter Mobile Developer Супер - интенсив по Kubernetes Symfony Framework Advanced Fullstack JavaScript developer Супер-интенсив "Azure для разработчиков"
Инфраструктура
Мониторинг и логирование: Zabbix, Prometheus, ELK
-25%
DevOps практики и инструменты
-25%
Архитектор сетей
-25%
Инфраструктурная платформа на основе Kubernetes
-25%
Супер-интенсив «ELK»
-16%
Супер-интенсив «IaC Ansible»
-16%
Супер-интенсив "SQL для анализа данных"
-16%
Базы данных Сетевой инженер AWS для разработчиков Cloud Solution Architecture Разработчик голосовых ассистентов и чат-ботов Внедрение и работа в DevSecOps Администратор Linux. Виртуализация и кластеризация Нереляционные базы данных Супер-практикум по использованию и настройке GIT IoT-разработчик Супер-интенсив «СУБД в высоконагруженных системах»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Восстановление отвалившегося standby

SUBD_Deep_18.12_site-5020-5738e0.png

Иногда вследствие сбоев сети и определённых настроек удаления архивлогов возникает ситуация, что стэндбай перестаёт накатываться, часть логов утеряна, и просто догнать его не получается.

Как я писал, для 12-й версии возможна накатка по сети с помощью recover from service. Для 11-й версии тоже есть выход — сделать инкрементальный бэкап с момента последнего SCN на standby.

Выясняем, какой SCN на STANDBY:

SQL>SELECT CURRENT_SCN FROM V$DATABASE;

Снимаем бэкап на primary:

RMAN>BACKUP INCREMENTAL FROM SCN <standby_scn> DATABASE FORMAT '/nfs/ForStandby_%U' tag 'FORSTANDBY';

Добавляем бэкап в каталог STANDBY:

RMAN>CATALOG START WITH '/nfs/ForStandby'; 

Делаем восстановление:

RMAN>RECOVER DATABASE NOREDO; 

Теперь нужно, чтоб версия контролфайла совпадала с версиями датафайлов, поэтому снимаем копию с праймари:

RMAN>BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/nfs/standby_ctl.bac';

и восстанавливаем на стэндбае:

RMAN> SHUTDOWN IMMEDIATE ;
RMAN> STARTUP NOMOUNT; 
RMAN> RESTORE STANDBY CONTROLFILE FROM '/nfs/standby_ctl.bac';

Остаётся последний важный важный момент, особенно, если у вас файлы на ASМ: после восстановления контролфайла все пути к файлам там теперь такие же, как на праймари.

И тут есть 2 варианта: 1) делать руками rename; 2) воспользоваться более автоматизированной процедурой:

SQL> SHUTDOWN; 
SQL> STARTUP MOUNT;
RMAN> CATALOG START WITH '+ASMDATA/datafile/'; 
RMAN> SWITCH DATABASE TO COPY; 

После этого не забудьте зачистить ваши логфайлы:

ALTER DATABASE CLEAR LOGFILE GROUP [group number];

и можете вновь запускать ваш стэндбай в режиме подкачки.

Вот и всё на сегодня. Чтобы узнать больше, записывайтесь на курс «Реляционные СУБД»!

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
🎁 Максимальная скидка!
Черная пятница уже в OTUS! Скидка -25% на всё!