Oracle DB: Standby
Настройка
--------------------------------------------------- -- Настройка параметров PRIMARY --------------------------------------------------- sql> ALTER SYSTEM SET log_archive_config = 'DG_CONFIG=(mydb1,mydb2)'; sql> ALTER SYSTEM SET log_archive_dest_1 = 'location=/path/to/arclog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=mydb1'; sql> ALTER SYSTEM SET log_archive_dest_2 = 'LGWR NOAFFIRM OPTIONAL ASYNC REOPEN=10 delay=120 service=mydb db_unique_name=mydb2 valid_for=(online_logfiles,primary_role)'; sql> ALTER SYSTEM SET log_archive_format = '%t_%s_%r.log'; --------------------------------------------------- -- Настройка параметров STANDBY --------------------------------------------------- sql> ALTER SYSTEM SET log_archive_config = 'DG_CONFIG=(mydb1,mydb2)'; sql> ALTER SYSTEM SET log_archive_dest_1 = 'location=/path/to/arclog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=mydb2'; sql> ALTER SYSTEM SET log_archive_format = '%t_%s_%r.log';
Обслуживание
-- остановка standby sql> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; sql> SHUTDOWN IMMEDIATE; -- запуск standby sql> STARTUP NOMOUNT; sql> ALTER DATABASE MOUNT STANDBY DATABASE; sql> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT; -- проверка работы standby sql> SELECT PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#, BLOCKS FROM V$MANAGED_STANDBY; sql> SELECT database_role FROM v$database;
Прочее
Автоматическое применение логов осуществляет фоновый процесс MRP.
--------------------------------------------------- -- конвертация контрольных файлов PRIMARY в STANDBY --------------------------------------------------- ALTER DATABASE CONVERT TO physical standby; Примечания: * После изменения параметров log_archive_* на PRIMARY или STANDBY, необходимо остановить и запустить STANDBY, чтобы новые значения вступили в силу -- проверка применения архивных логов на STANDBY select name, dest_id, sequence#, first_time, archived, applied from v$archived_log order by sequence# desc;
Ошибки
ORA-01665: control file is not a standby control file
Данная ошибка возникает если вы пытаетесь смонтировать базу с ролью PRIMARY в режиме STANDBY, при этом для базы нет специальных контрольных файлов для STANDBY.
Вы можете создать дополнительные контрольные файлы или конвертировать обычные в Standby.
Конвертация в Standby
# определение текущей роли базы данных sql> SELECT database_role FROM v$database; # конвертация роли базы данных в Standby sql> ALTER DATABASE CONVERT TO PHYSICAL STANDBY; sql> SHUTDOWN IMMEDIATE; sql> STARTUP MOUNT; # запуск процесса автоматической передачи и применения архивных логов sql> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE disconnect from session;
ORA-38868: warning: the control file may have incorrect data file structure
Причина: Текущий контрольный файл был создан или преобразован на основе контрольного файла из времени, отличного от времени базы данных.
Решение: Временно откройте базу данных и все подключаемые базы данных в режиме READ ONLY, чтобы синхронизировать управляющий файл со словарем базы данных. Можно также принудительно продолжить восстановление, повторно вызвав RECOVER.
SQL> ALTER DATABASE open read only; SQL> SHUTDOWN immediate; SQL> STARTUP nomount; SQL> ALTER DATABASE mount standby database; SQL> RECOVER managed standby database USING current logfile disconnect;
Проверка состояния standby
sql> SELECT process, client_process, status, thread#, sequence#, block#, blocks FROM gv$managed_standby;
Ссылки по теме