YandexDirect

01 октября 2019

Нетривиальная задача, Standby на Standart edition

Добрый день уважаемые,
Я давно ничего не публиковал, на это были свои причины, материалов за это время накопилось много, но одной из самых интересных на мой взгляд, это создание Standby на Oracle Standart Edition. Как известно, Oracle Standart Edition полное говно не содержит полноценного функционала для создания Standby сервера. Однако сердобольные админы смогли найти выход из этой ситуации. Скрипты не мои, я просто их размещаю :-) , сразу вспомнился знаменитый пост о продаже мопеда, для тех кто не в курсе прошу сюда



Итак, начнем с описания серверов, у нас есть

primary 10.0.0.1
standby 10.0.0.2

Для того, чтобы standby работал, необходимо чтобы база данных работала в режиме archivelog. Предлагаю почитать о том как включить режим archivelog тут
Снимаем бекап с сервера primary и разворачиваем его на standby. После восстановления бекапа на standby запускаем standby в режиме mount.

На сервере standby в крон вешаем скрипт:


#!/bin/bash
. ~/.bash_profile
export ORACLE_SID=VALUE
date
# утилитой rsync идем на primary и забираем «разницу» архивлогов
rsync -av oracle@10.0.0.2:/u01/oradata/archlogs/ORCLSID/archivelog /u01/oradata/archlogs/ORCLSTB
# идем в sqlplus и даем команду перейти в режим восстановления полученными файлами логов
sqlplus / as sysdba <<SCRIPT
recover standby database;
AUTO
exit;
SCRIPT
##############################
# переходим в rman и удаляем логи старше 3х дней
rman target / <<SCRIPT
run
{
crosscheck archivelog all;
DELETE noprompt archivelog until time 'sysdate -3';
}
EXIT;
SCRIPT
date


Время запуска скрипта у меня установлено каждый час. Вот в принципе и все, теперь каждый час разница архивлогов с primary будут копироваться на standby командой rsync, далее в sqlplus будет запускаться команда recover standby database и последняя команда удаляет старые архивлоги, у меня прописано удалять старше 3-х дней. 

Комментариев нет:

Отправить комментарий

Общее·количество·просмотров·страницы