Oracle DB: Standby: различия между версиями
Admin (обсуждение | вклад) (→Обзор) |
Admin (обсуждение | вклад) |
||
| (не показано 6 промежуточных версий этого же участника) | |||
| Строка 4: | Строка 4: | ||
''Процессы''' | ''Процессы''' | ||
| − | * ora_arc<N>_<SID> - процессы | + | * ora_arc<N>_<SID> - процессы обслуживающие redo логи и архив-логи, работают на PRIMARY и на STNADBY |
* ora_nsa<N>_<SID> - процессы LNS (Log Network Server), работают на PRIMARY | * ora_nsa<N>_<SID> - процессы LNS (Log Network Server), работают на PRIMARY | ||
= Настройка = | = Настройка = | ||
| + | == Пример конфигурации == | ||
<pre> | <pre> | ||
--------------------------------------------------- | --------------------------------------------------- | ||
| Строка 14: | Строка 15: | ||
sql> ALTER SYSTEM SET log_archive_config = 'DG_CONFIG=(mydb1,mydb2)'; | 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_1 = 'location=/path/to/arclog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=mydb1'; | ||
| − | sql> ALTER SYSTEM SET log_archive_dest_2 = ' | + | sql> ALTER SYSTEM SET log_archive_dest_2 = 'ASYNC NOAFFIRM OPTIONAL REOPEN=60 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'; | sql> ALTER SYSTEM SET log_archive_format = '%t_%s_%r.log'; | ||
| Строка 25: | Строка 26: | ||
</pre> | </pre> | ||
| − | + | == Параметры в log_archive_dest_<N> == | |
| − | + | ||
| − | + | '''NET_TIMEOUT''' - время (в секундах), которое основной процесс передачи (LNS или LGWR) будет ждать подтверждения от Standby-базы, прежде чем решит, что сетевое соединение разорвано | |
| − | + | * значение по умолчанию 30 секунд (для 11.2.0.4) | |
| + | * без явного определения этого параметра сетевой стек может вести себя иначе, рекомендуется явно указать 30, чтобы избежать зависания процесса LNS | ||
| + | * Oracle рекомендует устанавливать значение не менее 10-30 секунд, слишком низкое значение (например, 1-5 сек) может привести к частым ложным разрывам связи при кратковременных нагрузках на сеть | ||
| − | REOPEN | + | '''REOPEN''' - определяет минимальный интервал времени (в секундах), через который основной сервер предпримет повторную попытку подключения к Standby-базе после возникновения ошибки (сетевой сбой, падение Standby, нехватка места) |
| − | + | * значение по умолчанию 300 секунд (5 минут) | |
| − | + | * (требуется уточнение) Для чего нужен: Предотвращает зацикливание и чрезмерную нагрузку на CPU/процессы основной базы, которые иначе пытались бы непрерывно переподключиться к упавшему серверу. | |
| + | * рекомендации | ||
| + | ** если вам нужна максимально быстрая синхронизация после сбоя, уменьшите это значение до 30-60 секунд | ||
| + | ** если назначение имеет статус OPTIONAL (необязательное), и сеть нестабильна, лучше оставить значение повыше | ||
= Обслуживание = | = Обслуживание = | ||
| Строка 54: | Строка 60: | ||
-- процессы ARCH, LNS, их статусы и текущее операции | -- процессы ARCH, LNS, их статусы и текущее операции | ||
select * from v$managed_standby; | select * from v$managed_standby; | ||
| + | |||
| + | -- текущее состояние подключения по заданному dest_id | ||
| + | SELECT * FROM v$archive_dest WHERE dest_id = <N>; | ||
</pre> | </pre> | ||
Текущая версия на 16:51, 18 декабря 2025
Обзор
LNS (Log Network Server) - отвечает за передачу текущего реду-лога на STANDBY в реальном времени
Процессы'
- ora_arc<N>_<SID> - процессы обслуживающие redo логи и архив-логи, работают на PRIMARY и на STNADBY
- ora_nsa<N>_<SID> - процессы LNS (Log Network Server), работают на PRIMARY
Настройка
Пример конфигурации
--------------------------------------------------- -- Настройка параметров 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 = 'ASYNC NOAFFIRM OPTIONAL REOPEN=60 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';
Параметры в log_archive_dest_<N>
NET_TIMEOUT - время (в секундах), которое основной процесс передачи (LNS или LGWR) будет ждать подтверждения от Standby-базы, прежде чем решит, что сетевое соединение разорвано
- значение по умолчанию 30 секунд (для 11.2.0.4)
- без явного определения этого параметра сетевой стек может вести себя иначе, рекомендуется явно указать 30, чтобы избежать зависания процесса LNS
- Oracle рекомендует устанавливать значение не менее 10-30 секунд, слишком низкое значение (например, 1-5 сек) может привести к частым ложным разрывам связи при кратковременных нагрузках на сеть
REOPEN - определяет минимальный интервал времени (в секундах), через который основной сервер предпримет повторную попытку подключения к Standby-базе после возникновения ошибки (сетевой сбой, падение Standby, нехватка места)
- значение по умолчанию 300 секунд (5 минут)
- (требуется уточнение) Для чего нужен: Предотвращает зацикливание и чрезмерную нагрузку на CPU/процессы основной базы, которые иначе пытались бы непрерывно переподключиться к упавшему серверу.
- рекомендации
- если вам нужна максимально быстрая синхронизация после сбоя, уменьшите это значение до 30-60 секунд
- если назначение имеет статус OPTIONAL (необязательное), и сеть нестабильна, лучше оставить значение повыше
Обслуживание
-- остановка 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; -- протокол операций связанных с реду-логами, архив-логами и передачей на STANDBY SELECT * FROM v$dataguard_status -- процессы ARCH, LNS, их статусы и текущее операции select * from v$managed_standby; -- текущее состояние подключения по заданному dest_id SELECT * FROM v$archive_dest WHERE dest_id = <N>;
Прочее
Автоматическое применение логов осуществляет фоновый процесс 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;
Ссылки по теме