|
Хорошо общая теория процесса изложена в
статье металинк Oracle
8i standby database. Есть также пошаговая
инструкция с примерами в том числе и для
windows NT для создания и управления процессом в
полуручном режиме.
Предварительные требования
- Основная БД должна быть в режиме archivelog. Читать
как его включить.
- Нужно иметь backup БД. Можно использовать
горячий или холодный backup. Отличия здесь
такие - если используется горячий backup, то
нет необходимости в online redo, если холодный
- то они также необходимы. Читать как
получить горячий backup вручную.
Создание standby с помощью rman неинтересно :))
посколько используется команда duplicate target
database for standby. В этом документе
приводится даже полный синтаксис скриптов.
Создание standby
Общая идея: нам понадобятся копии всех
файлов данных (горячих или холодных),
init.ora, специальный controlfile и redo logs (если backup
был холодный). Полезные запросы:
select file_name from dba_data_files; -- Файлы
данных
select member from v$logfile; -- redo
select name from v$controlfile; -- control
| На основной БД создаем копию controlfile но не
простого |
ALTER DATABASE CREATE STANDBY CONTROLFILE AS <Path and Controlfilename>;
|
| Далее перетаскиваем файлы из backup на
машину с standby db. Правим init.ora |
log_archive_dest_1='LOCATION=<Path Standby
Archive Logs are stored>'
log_archive_dest_state_1=enable
log_archive_format=%t_%s.dbf (MUST be the same as
on Primiary !!)
log_archive_start=true
standby_archive_dest=<Path Standby Archive
Logs are stored>
|
| Стартуем standby DB |
Windows NT only: C:\>ORADIM -NEW -SID <Standby-SD>
-INTPWD <Internal Password> -MAXUSERS n SQL>startup nomount
pfile=/path/initCLONE.ora;
SQL>alter database mount standby database; |
| Переводим standby в Managed Recovery mode |
SQL>recover managed standby database; |
| Настраиваем primary DB для автоматической
доставки логов. standby - должно быть
валидным tns именем. Т.е. требуется
настроить tnsnames.ora на на хосте primary DB и
listener.ora на хосте standby DB. |
log_archive_dest_1='LOCATION=<Path local
Archivelogs are stored'
log_archive_dest_2='SERVICE=standby reopen=60'
log_archive_dest_state_1=enable
log_archive_dest_state_2=enable
log_archive_format=<SID>_%s_%t.arc
log_archive_start=true |
| Проверяем что доставка логов
осуществляется |
SQL> alter system switch logfile;
SQL> select status, error from v$archive_dest where dest_id=2; |
Остановить процесс наката логов можно с
помощью команды:
SQL> recover managed standby database cancel;
Можно также открыть БД в read-only
SQL> alter database open read only;
Поднять standby вручную, при этом передавать
логи нужно вручную, можно с помощью команд:
startup nomount pfile='/xx/xx/initSID.ora'
alter database mount standby database
recover standby database
Этот параметр необхоодимо установить в
init.ora для дублирующей БД если и основная и
дублирующая БД располагаются на одном
хосте:
lock_name_space = CLONE_DB
Видно что управление связкой двух БД
требует контролирования процесса закачки
логов и знания многих разных команд. Для
упрощения процесса управления был сделан
продукт Oracle DataGuard.
Открытие Standby
Чтобы открыть standby базу как production и
потерять возможность докатывать логи
дальше нужно:
- нормальное завершить recovery
- выполнить команду
alter database activate standby database
При этом произойдет 'open resetlogs'. Затем
нормально опустите и поднимите БД.
Переключение Primary <-> Standby и обратно
Одна из возможностей предоставляемых standby
это временно переключиться на standby DB и потом
вернуться на primary DB, например для
обслуживания хоста с primary DB. При этом
переключении не происходит resetlogs !
Подробно процедура описана в следующей статье.
|