Поделиться через


Работа со службой CDC Oracle

Внимание

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

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

  • База данных MSXDBCDC

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

  • Базы данных CDC

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

  • Использование интерфейса командной строки для настройки службы CDC Service

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

База данных MSXDBCDC

База данных MSXDBCDC (Microsoft External-Database CDC) — это специальная база данных, которая требуется при использовании службы CDC для Oracle с экземпляром SQL Server.

Имя этой базы данных изменить невозможно. Если база данных с именем MSXDBCDC существует на экземпляре SQL Server узла и содержит таблицы, отличные от таблиц, определенных службой CDC для Oracle, экземпляр узла SQL Server нельзя использовать.

Эта база данных используется в следующих основных целях.

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

  • Служит реестром экземпляров Oracle CDC, содержащихся в экземпляре SQL Server, службе CDC, обрабатывающей каждый экземпляр и версию конфигурации. Эти данные эквивалентны столбцу is_cdc_enabled в таблице sys.databases базы данных master. Служба CDC периодически сканирует таблицу dbo.xdbcdc_databases в поисках новых изменений конфигурации CDC или списка отслеживаемых экземпляров.

  • Содержание хранимых процедур, принадлежащих sysadmin, которые позволяют создавать и обслуживать экземпляры CDC. Эти процедуры похожи на системные процедуры, используемые для реализации функции CDC SQL Server.

Создание базы данных MSXDBCDC

Базу данных MSXDBCDC следует создать до определения службы Oracle CDC Service. На экземпляре SQL Server можно создать только одну базу данных MSXDBCDC. База данных MSXDBCDC создается при подготовке базы данных SQL Server для Oracle CDC. Это можно сделать с помощью консоли конфигурации служб CDC Oracle или скрипта создания, сформированного консолью конфигурации служб CDC.

Владелец этой базы данных — это oracle CDC Service Администратор istrator, который может управлять всеми экземплярами Oracle CDC, размещенными в экземпляре SQL Server.

См. также:

Как подготовить SQL Server для CDC

Таблицы базы данных MSXDBCDC

В данном разделе описаны следующие таблицы базы данных MSXDBCDC.

dbo.xdbcdc_trace

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

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

Далее описаны элементы, содержащиеся в таблице dbo.xdbcdc_trace .

Позиция Description
TIMESTAMP Точная отметка времени в формате UTC, когда была создана запись трассировки.
type Содержит одно из следующих значений:

ОШИБКА

INFO

ТРАССИРОВКА
node Имя узла, на котором была создана запись.
статус Код состояния, который используется в таблице состояний.
sub_status Код подсостояния, который используется в таблице состояний.
status_message Сообщение состояния, которое используется в таблице состояний.
source Имя компонента Oracle CDC, который произвел запись трассировки.
text_data Дополнительные текстовые данные в тех случаях, когда запись ошибки или трассировки содержит полезную текстовую информацию.
binary_data Дополнительные двоичные данные в тех случаях, когда запись ошибки или трассировки содержит полезную двоичную информацию.

Экземпляр Oracle CDC удаляет старые строки таблицы трассировки в соответствии с политикой сохранения таблицы изменений.

dbo.xdbcdc_databases

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

В следующей таблице описаны элементы, содержащиеся в таблице dbo.xdbcdc_trace .

Позиция Description
name Имя базы данных Oracle в экземпляре SQL Server.
config_version Отметка времени в формате (UTC) последнего изменения в соответствующей таблице xdbcdc_config базы данных CDC или отметка времени (UTC) текущей строки этой таблицы.

Триггер UPDATE принудительно присваивает этому элементу значение GETUTCDATE(). config_version сообщает службе CDC, какой экземпляр CDC следует проверить на предмет наличия изменений в конфигурации, отключить или включить.
cdc_service_name Этот элемент определяет, какая из служб Oracle CDC Service обрабатывает выбранную базу данных Oracle.
включена Указывает, активен (1) или отключен (0) экземпляр Oracle CDC. При запуске службы Oracle CDC Service запускаются только экземпляры, отмеченные «включить» (1).

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

dbo.xdbcdc_services

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

Далее описаны элементы состояния отслеживания изменений, содержащиеся в таблице dbo.xdbcdc_databases .

Позиция Description
cdc_service_name Имя службы Oracle CDC Service (имя службы Windows).
cdc_service_sql_login Имя имени входа SQL Server, используемого службой Oracle CDC Для подключения к экземпляру SQL Server. Новый пользователь SQL с именем cdc_service создается и связывается с этим именем входа, а затем добавляется к предопределенным ролям базы данных db_ddladmin, db_datareader и db_datawriter для каждой базы данных CDC, обрабатываемой данной службой.
ref_count Этот элемент подсчитывает количество компьютеров, где установлена одна и та же служба Oracle CDC Service. Этот счетчик увеличивается при каждом добавлении службы Oracle CDC Service с тем же именем и уменьшается, когда такая служба удаляется. Когда значение счетчика достигнет нуля, эта строка будет удалена.
active_service_node Имя узла Windows, который в настоящее время обрабатывает службу CDC. Если служба была остановлена корректно, в этот столбец помещается значение NULL, указывающее, что служба больше не активна.
active_service_heartbeat Этот элемент отслеживает текущую службу CDC, чтобы определить, активна ли она.

Для активной службы CDC этот элемент обновляется через равные промежутки времени, получая значение текущей отметки времени в формате UTC базы данных. Интервал по умолчанию составляет 30 секунд, но его можно менять.

Если ожидающая служба CDC обнаруживает, что тактовый импульс не обновлялся на протяжении заданного интервала, она пытается взять на себя роль активной службы CDC.
options Этот элемент указывает дополнительные параметры, такие как настройка или трассировка. Он имеет вид: имя[= значение][; ]. В строке параметров используется та же семантика, что и в строке подключения ODBC. Если параметр принадлежит к логическому типу (со значением «да/нет»), значение может содержать только имя.

Параметр trace может принимать одно из следующих возможных значений:

true

вкл.

false

off

<имя_класса>[,имя_класса>]



Значение по умолчанию равно false.

service_heartbeat_interval ― это временной интервал (в секундах), на протяжении которого служба должна обновить столбец active_service_heartbeat. Значение по умолчанию — 30. Максимальное значение равно 3600.

service_config_polling_interval ― это интервал опроса (в секундах), который служба CDC использует для проверки изменений конфигурации. Значение по умолчанию — 30. Максимальное значение равно 3600.

sql_command_timeout — это время ожидания команды, которое работает с SQL Server. Значение по умолчанию — 1. Максимальное значение равно 3600.

Хранимые процедуры базы данных MSXDBCDC

В этом разделе описаны следующие хранимые процедуры базы данных MSXDBCDC.

dbo.xcbcdc_reset_db(имя базы данных)

Эта процедура очищает данные экземпляра Oracle CDC. Она используется:

  • для перезапуска отслеживания данных с игнорированием предыдущих данных, например после восстановления базы данных-источника или после периода неактивности при недоступности некоторых журналов транзакций Oracle;

  • при порче состояния CDC (особенно порче любых данных из таблиц cdc.*tables).

Процедура dbo.xcbcdc_reset_db выполняет следующие задачи:

  • останавливает экземпляр CDC (если он активен);

  • усекает таблицы изменений, таблицу cdc_lsn_mapping и таблицу cdc_ddl_history ;

  • очищает таблицу cdc_xdbcdc_state ;

  • очищает столбец start_lsn для каждой строки таблицы cdc_change_table.

Для использования процедуры dbo.xcbcdc_reset_db пользователь должен быть членом роли db_owner указанной базы данных экземпляра CDC или членом одной из следующих предопределенных ролей сервера: sysadmin или serveradmin .

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

dbo.xdbcdc_disable_db(имя_базы_данных)

Процедура dbo.xcbcdc_disable_db выполняет следующую задачу:

  • удаляет запись в таблице MSXDBCDC.xdbcdc_databases для выбранной базы данных CDC.

Для использования процедуры dbo.xcbcdc_disable_db пользователь должен быть членом роли базы данных db_owner указанного экземпляра CDC или членом одной из следующих предопределенных ролей сервера: sysadmin или serveradmin .

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

dbo.xcbcdc_add_service(svcname,sqlusr)

Процедура dbo.xcbcdc_add_service добавляет запись в таблицу MSXDBCDC.xdbcdc_services и увеличивает на единицу счетчик ref_count для данного имени службы в таблице MSXDBCDC.xdbcdc_services . Если значение ref_count становится равным 0, процедура удаляет эту строку.

Для использования процедуры dbo.xcbcdc_add_service<имя_службы, имя_пользователя> пользователь должен быть членом роли db_owner указанной базы данных экземпляра CDC либо членом предопределенной роли сервера sysadmin или serveradmin.

dbo.xdbcdc_start(имя_базы_данных)

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

Чтобы использовать процедуру dbo.xcdcdc_start, пользователь должен быть членом роли базы данных db_owner для базы данных CDC или быть членом ролей sysadmin или serveradmin для экземпляра SQL Server.

dbo.xdbcdc_stop(имя_базы_данных)

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

Чтобы использовать процедуру dbo.xcdcdc_stop, пользователь должен быть членом роли базы данных db_owner для базы данных CDC или членом ролей sysadmin или serveradmin для экземпляра SQL Server.

Базы данных CDC

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

База данных CDC содержит специальную схему cdc. Служба Oracle CDC Service использует эту схему с именами таблиц с префиксом xdbcdc_. Эта схема используется в целях обеспечения безопасности и согласованности.

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

Использование интерфейса командной строки для настройки службы CDC Service

Вы можете управлять служебной программой Oracle CDC Service (xdbcdcsvc.exe) из командной строки. Служебная программа CDC представляет собой 32-/64-разрядный исполняемый файл Windows.

См. также:

Как использовать интерфейс командной строки службы CDC

Команды служебной программы

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

Config

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

"<path>xdbcdcsvc.exe" config  
     <cdc-service-name>  
     [connect= <sql-server-connection-string>]  
     [key= <asym-key-password>]  
     [svcacct= <windows-account> <windows-password>]  
     [sqlacct= <sql-username> <sql-password>]  
  

Где:

cdc-service-name ― это имя службы CDC, настройки которой нужно изменить. Это обязательный параметр.

sql-server-connection-string ― это строка подключения, которую нужно изменить. Если строка подключения содержит пробелы или кавычки, ее следует заключить в двойные кавычки ("). Внедренные кавычки экранируются удвоением кавычек.

asym-key-password ― это пароль, который нужно изменить.

windows-account, windows-password ― это учетная запись Windows для службы, которую нужно изменить.

sql-username, sql-password — это обновляемые учетные данные проверки подлинности SQL Server. Если sqlacct имеет пустое имя пользователя и пустой пароль, служба Oracle CDC подключается к SQL Server с помощью проверка подлинности Windows.

Примечание.Любой параметр, который содержит пробелы или кавычки, должен быть заключен в двойные кавычки ("). Встроенные двойные кавычки необходимо удвоить (например, для использования "A#B" D в качестве пароля введите ""A#B"" D").

Создание

Команда Create используется для создания службы Oracle CDC Service с помощью скрипта. Эта команда должна выполняться администратором компьютера. Далее приведен пример использования команды Create .

"<path>xdbcdcsvc.exe" create  
     <cdc-service-name>  
     [connect= "<sql-server-connection-string>"]  
     [key= <asym-key-password>]  
     [svcacct <windows-account> <windows-password>]  
     [sqlacct <sql-username> <sql-password>]  

Где:

cdc-service-name ― это имя создаваемой службы. Если служба с таким именем уже существует, программа возвращает ошибку. Не следует использовать длинные имена и имена с пробелами. Символы "/" и "\" недопустимы в имени службы. Это обязательный параметр.

строка подключения sql-server — это строка подключения, используемая для подключения к экземпляру SQL Server, связанному с новой службой Oracle CDC.

asym-key-password ― это пароль, который защищает асимметричный ключ, используемый для хранения учетных данных средства интеллектуального анализа журнала базы данных-источника.

windows-account, windows-password ― это имя учетной записи и пароль, связанные с создаваемой службой Oracle CDC Service.

sql-username, sql-password — это имя учетной записи SQL Server и пароль, используемые для подключения к экземпляру SQL Server. Если оба из этих параметров пусты, служба CDC для Oracle подключается к SQL Server с помощью проверка подлинности Windows.

Примечание.Любой параметр, который содержит пробелы или кавычки, должен быть заключен в двойные кавычки ("). Встроенные двойные кавычки необходимо удвоить (например, для использования "A#B" D в качестве пароля введите ""A#B"" D").

Удаление

Команда Delete используется для аккуратного удаления службы Oracle CDC Service с помощью скрипта. Эта команда должна выполняться администратором компьютера. Далее приведен пример использования команды Delete .

"<path>xdbcdcsvc.exe" delete  
    <cdc-service-name>  
  

Где:

cdc-service-name ― это имя службы CDC, которую нужно удалить.

Примечание.Любой параметр, который содержит пробелы или кавычки, должен быть заключен в двойные кавычки ("). Встроенные двойные кавычки необходимо удвоить (например, для использования "A#B" D в качестве пароля введите ""A#B"" D").

См. также

Как использовать интерфейс командной строки службы CDC
Как подготовить SQL Server для CDC