Обработка ошибок

Внимание

Запись измененных данных для Oracle по Attunity устарела. Дополнительные сведения см. в объявлении.

Экземпляр Oracle CDC минирует изменения из одной исходной базы данных Oracle (кластер Oracle RAC считается одной базой данных) и записывает зафиксированные изменения в таблицы изменений в базе данных CDC в целевом экземпляре SQL Server.

Экземпляр CDC хранит свое состояние в системной таблице с именем cdc.xdbcdc_state. Для получения состояния экземпляра CDC эта таблица может быть запрошена в любой момент. Дополнительные сведения о таблице cdc.xdbcdc_state см. в разделе cdc.xdbcdc_state.

Далее приводится описание состояний экземпляра CDC, используемых в таблице xdbcdc_state.

Для каждого состояния соответствующие столбцы таблицы cdc.xdbcdc_state показывают следующее.

  • Экземпляр неактивен (в настоящее время не существует процесса Windows, который бы его обрабатывал). Если в столбце Активность указано значение 1, это значит, что подпроцесс службы Oracle CDC Service, обрабатывающий данный экземпляр Oracle CDC, в настоящее время запущен.

  • Если в столбце Ошибка указано значение 0, экземпляр CDC Oracle не находится в состоянии ошибки. Если в столбце Ошибка указано значение 1, произошла ошибка, которая не позволяет экземпляру Oracle CDC обрабатывать изменения.

    Если в столбце Ошибка указано значение 1 и в столбце Активность также указано значение 1, это значит, что в экземпляре Oracle CDC произошла обратимая ошибка, которую можно устранить автоматически. Если в столбце ошибки указано значение 1, а в столбце активности указано значение 0, в большинстве случаев это означает, что для продолжения работы требуется вмешательство оператора, который устранит проблему вручную.

В следующей таблице описаны различные коды состояния, которые экземпляр Oracle CDC может публиковать в своей таблице состояний.

Состояние Код состояния активности Код состояния ошибки Description Подсостояние
ABORTED 0 1 Экземпляр Oracle CDC не выполняется. Подтип состояния ABORTED указывает, что экземпляр Oracle CDC был активен, а затем неожиданно остановился. Подтип состояния ABORTED задается главным экземпляром службы Oracle CDC Service, когда служба обнаруживает, что экземпляр Oracle CDC не выполняется, хотя имеет состояние ACTIVE.
ОШИБКА 0 1 Экземпляр Oracle CDC не выполняется. Состояние ERROR означает, что экземпляр CDC находился в состоянии ACTIVE, но затем произошла ошибка, которая исключает дальнейшую работу, и экземпляр отключился. MISCONFIGURED: обнаружена неисправимая ошибка конфигурации.

PASSWORD-REQUIRED: для конструктора системы отслеживания измененных данных для Oracle от Attunity не был задан пароль или заданный пароль недействителен. Причиной может быть изменение пароля асимметричного ключа службы.
ВЫПОЛНЯЕТСЯ 1 0 Экземпляр CDC выполняется и обрабатывает записи об изменениях. IDLE: все записи об изменениях были обработаны и сохранены в целевых контрольных таблицах (_CT). В контрольных таблицах не существует активных транзакций.

PROCESSING: экземпляр в настоящее время обрабатывает записи об изменениях, которые еще не записаны в контрольных таблицах (_CT).
STOPPED 0 0 Экземпляр CDC не выполняется. Подтип состояния STOP указывает, что экземпляр Oracle CDC был активен, а затем остановлен корректным образом.
SUSPENDED 1 1 Экземпляр CDC запущен, но обработка приостановлена в связи с устранимой ошибкой. DISCONNECTED: не удалось установить соединение с базой данных-источником Oracle. Обработка возобновится после восстановления соединения.

STORAGE: хранилище заполнено. Обработка возобновится, когда станет доступным дополнительный объем хранения данных. В некоторых случаях это состояние может не отображаться из-за того, что обновить таблицу состояний невозможно.

LOGGER: средство ведения журнала подключено к базе данных Oracle, но не может читать журналы транзакций Oracle из-за временных проблем.
DATAERROR x x Этот код состояния используется только для таблицы xdbcdc_trace . Он не используется в таблице xdbcdc_state . Записи трассировки с этим состоянием указывают на проблему с записью журнала Oracle. Испорченная запись журнала хранится в столбце данных в виде большого двоичного объекта. BADRECORD: приложенную запись журнала не удается проанализировать.

CONVERT-ERROR: данные из некоторых столбцов не удалось преобразовать в данные целевых столбцов таблицы отслеживания. Это состояние может появиться, только если конфигурация указывает, что при ошибках преобразования следует формировать записи трассировки.

Так как состояние службы Oracle CDC хранится в SQL Server, могут возникнуть случаи, когда значение состояния в базе данных может не отражать фактическое состояние службы. Наиболее распространенный сценарий заключается в том, что служба теряет подключение к SQL Server и не может возобновить ее (по какой-либо причине). В этом случае состояние, записанное в таблице cdc.xdbcdc_state , устаревает. Если метка времени последнего обновления (UTC) старше одной минуты, состояние, скорее всего, устарело. В этом случае используйте средство просмотра событий Windows для поиска дополнительных сведений о состоянии службы.

Обработка ошибок

В этом разделе описана обработка ошибок службой Oracle CDC Service.

Ведение журнала

Служба Oracle CDC Service записывает сведения об ошибках в одно из следующих мест.

  • Журнал событий Windows, используемый с ошибками ведения журнала и указывающий события жизненного цикла Oracle CDC Service (запуск, остановка( повторное подключение к целевому экземпляру SQL Server).

  • Таблица MSXDBCDC.dbo.xdbcdc_trace, которая используется основным процессом службы Oracle CDC Service для ведения общего журнала и трассировки.

  • Таблица <cdc-database>.cdc.xdbcdc_trace, которая используется экземплярами Oracle CDC для ведения общего журнала и трассировки. Это означает, что ошибки, связанные с определенным экземпляром Oracle CDC, записываются в таблицу трассировки данного экземпляра.

Сведения записываются в журнал службой Oracle CDC, когда служба:

  • запущена или остановлена диспетчером управления служб;

  • Не удается подключиться к связанному экземпляру SQL Server и при успешном установке подключения после сбоя.

  • сталкивается с ошибкой при запуске экземпляров службы Oracle CDC Service;

  • обнаруживает, что работа экземпляра Oracle CDC была прервана;

  • сталкивается с непредвиденной ошибкой.

Сведения записываются в журнал экземпляром Oracle CDC, когда экземпляр:

  • включается или отключается;

  • сталкивается с ошибкой;

  • восстанавливается после устранимой ошибки.

Таблица трассировки используется также для записи подробных сведений о трассировке для поиска и устранения неполадок.

Обработка ошибок подключения к источнику данных Oracle

Службе Oracle CDC Oracle необходимо постоянное соединение с исходной базой данных Oracle. Многие ошибки соединения, не имеющие отношения к конфигурации службы (такие как неполадки в сети), считаются временными. Следовательно, если службе Oracle CDC Service не удается установить соединение с базой данных Oracle (при запуске или после разрыва соединения в процессе работы), служба меняет свое состояние на SUSPENDED/DISCONNECTED и начинает периодически повторять попытки подключения. Обработка продолжится, когда подключение будет восстановлено.

Другие типы ошибок подключения не являются временными (например, недействительные учетные данные, недостаточный уровень прав доступа и неверный адрес базы данных). Если произошла такая ошибка, службе Oracle CDC Service задается состояние ERROR/MISCONFIGURED или ERROR/PASSWORD-REQUIRED, а сама служба отключается. После устранения пользователем соответствующей ошибки экземпляр Oracle CDC нужно заново включить вручную, чтобы возобновить обработку.

Когда неясно, является ли ошибка временной, лучше предположить, что она временная.

Обработка ошибок подключения к целевому SQL Server

Службе Oracle CDC требуется постоянное подключение к целевому экземпляру SQL Server. Это подключение используется в следующих целях.

  • Убедитесь, что в настоящее время нет других служб, работающих с этим экземпляром SQL Server.

  • Проверка того, какой экземпляр Oracle CDC включен или отключен, и запуск или остановка его подпроцесса.

Когда служба устанавливает подключение к целевому экземпляру SQL Server и проверяет, что она является единственной службой Oracle CDC с помощью этого имени, она может проверка, какие экземпляры Oracle CDC включены и запускают их обработку (после этого служба останавливает эти процессы при отключении). Экземпляры Oracle CDC используют подключения SQL Server для работы с базой данных CDC экземпляра Oracle CDC.

Обработка ошибок при сбое подключения к целевому SQL Server зависит от того, являются ли ошибки временными.

Для известных не временных ошибок (таких как плохие учетные данные, недостаточные привилегии, плохие сведения о подключении), служба регистрирует ошибку в журнал событий Windows и останавливает (она не может записываться в таблицу трассировки, так как она не может подключиться к SQL Server). В этом случае пользователю необходимо устранить ошибку и перезапустить службу Windows Oracle CDC.

В случае временных и неожиданных ошибок попытка совершить операцию повторяется несколько раз. Если ошибка не исчезает в течение достаточно долгого времени, служба CDC останавливает подпроцессы экземпляров CDC и возвращается к первоначальной попытке подключения (возможно, к этому времени контроль над указанной службой CDC уже перешел к другой службе Oracle CDC Service на другом компьютере).

Обработка ошибок, вызванных недостатком объема хранения на целевом экземпляре SQL Server

Когда служба Oracle CDC обнаруживает, что она не может вставить новые данные изменений в целевую базу данных CDC SQL Server, она записывает предупреждение в журнал событий и пытается вставить запись трассировки (хотя это может завершиться ошибкой по той же причине). Затем служба повторяет операцию через определенные промежутки времени, пока она не будет успешно выполнена.

Обработка ошибок Oracle CDC

Экземпляр Oracle CDC читает журнал транзакций Oracle и обрабатывает его. Если при обработке CDC возникает ошибка, сведения об ошибке вносятся в таблицу cdc.xdbcdc_state , при этом требуется вмешательство пользователя, который должен вручную устранить указанную ошибку.

Например, экземпляр Oracle CDC может быть неактивен в течение длительного времени, а нужные файлы журнала транзакций могут быть Oracle недоступны. В этом случае администратор базы данных Oracle должен восстановить необходимые журналы, чтобы экземпляр Oracle CDC мог возобновить обработку.

Обработка неожиданных сбоев экземпляра Oracle CDC

Служба Oracle CDC Service отслеживает подпроцессы свих экземпляров CDC. Если выполнение подпроцесса экземпляра CDC прерывается, служба CDC Service отключает его в таблице MSXDBCDC.dbo.xdbcdc_databases и меняет его состояние в таблице cdc.xdbcdc_state на ABORTED. В этом случае можно использовать стандартное диалоговое окно отчета об ошибках Windows, чтобы передать сообщение об этой ошибке для анализа в дальнейшем.

См. также

Конструктор системы отслеживания измененных данных для Oracle компании Attunity
Экземпляр CDC Oracle