НОРМАЛЬНЫЙ РЕЖИМ РАБОТЫ OE REPLICATION
Работа OE Replication начинается с момента запуска source и target баз данных. Пока сервер и агент репликации выполняют процесс запуска и инициализации, никакая иная деятельность в базе данных не разрешена, конечно, если не используется метод отложенного запуска агента. Если какой-либо процесс попытается подключиться к любой из баз данных, он будет блокирован до тех пор, пока OE Replication не завершит процессы запуска, инициализации и синхронизации.
Во время нормальной работы source-базы все AI-блоки, записанные в AI-экстенты, пересылаются серверу репликации, который, в свою очередь, отправляет эти блоки всем настроенным агентам репликации. Этот процесс выполняется, пока source-база не будет остановлена.
Во время нормальной работы агент репликации выполняет непрерывный накат AI-блоков (roll forward) на target-базу. Эти блоки он получает от сервера репликации. Процесс выполняется до тех пор, пока не будут остановлены source и target базы или одна из них.
Помимо наката AI-блоков на target-базу агент репликации отвечает за обработку таких событий как:
- формирование контрольных точек (checkpoints);
- переключение AI-экстентов;
- завершение транзакций.
Эти события используются агентом репликации для информирования сервера репликации о точке синхронизации, известной как sync point. Точка синхронизации указывает серверу репликации на то, что с этого места необходимо начать процесс синхронизации во время перезапуска баз данных, или во время обработки ошибочной ситуации.
Когда репликация выполняется в синхронном режиме, любой процесс, который завершает или откатывает транзакцию, будет блокирован или вынужден ожидать до тех пор, пока эта транзакция не будет обработана агентом репликации. Информация о завершении агентом обработки транзакции будет передана серверу репликации, который в свою очередь разблокирует ожидающий процесс.
Информация о точке синхронизации и прочие данные, необходимые для синхронизации, хранятся в файле db-name.repl.recovery, где db-name - имя source или target базы. Этот файл редактировать нельзя! Но его нужно вручную удалить перед восстановлением source или target базы или перед активированием OE Replication после предыдущего выключения этого механизма.
Заметьте, если произошел сбой в работе агента репликации, например, когда процесс rpagent аварийно прекратил работу, то единственным способом его перезапуска является перезапуск всей базы данных. При нормальных обстоятельствах откат активных транзакций, оставшихся после аварийного завершения процесса, которому они принадлежат, выполняют брокер базы и процесс watchdog. Но откат транзакций не может быть выполнен от имени агента репликации, поскольку все изменения в target-базе всегда исходят от source-базы. Таким образом, после сбоя агента репликации откат транзакции будет невозможен, и target-база данных останется в противоречивом состоянии. Это приведет к тому, что ABL и SQL процессы, которые будут подключаться к такой базе, завершатся аварийно. Для синхронизации target-базу с source-базой и восстановления нормальной работы необходимо выполнить перезапуск target-базы.
|