Служба CDC Oracle
Внимание
Запись измененных данных для Oracle по Attunity устарела. Дополнительные сведения см. в объявлении.
Служба CDC Oracle — это служба Windows, благодаря которой запускается программа xdbcdcsvc.exe. Служба Oracle CDC может настраиваться для запуска нескольких служб Windows на одном компьютере, каждая из которых должна иметь другое имя службы Windows. Создание нескольких служб Windows Oracle CDC на одном компьютере часто выполняется для достижения лучшего разделения между ними или при необходимости работать с другим экземпляром SQL Server.
Служба Oracle CDC создается при помощи консоли конфигурации службы Oracle CDC или определяется при помощи интерфейса командной строки, встроенного в программу xdbcdcsvc.exe. В обоих случаях каждая созданная служба Oracle CDC связана с одним экземпляром SQL Server (который может быть кластеризован или зеркало с настройкой AlwaysOn), а сведения о подключении (учетные данные подключения и доступа) являются частью конфигурации службы.
Когда служба Oracle CDC запущена, она пытается подключиться к связанному экземпляру SQL Server, получить список экземпляров Oracle CDC, которые он должен обрабатывать, и выполняет начальную проверку среды. Ошибки во время запуска службы и любые сведения о запуске/останове всегда записываются в журнал событий приложения Windows. При установке подключения к SQL Server все ошибки и информационные сообщения записываются в таблицу dbo.xdbcdc_trace в базе данных MSXDBCDC экземпляра SQL Server. Одной из проверок, выполняемых во время запуска, является проверка отсутствия другой работающей службы Oracle CDC с таким же именем. Если служба с тем же именем в настоящий момент подключена с другого компьютера, служба Oracle CDC переходит к циклу ожидания, пока другая служба не отключится, перед тем как начать обрабатывать данные Oracle CDC.
Когда служба Oracle CDC Service выполняет все проверки, необходимые для запуска, выполняется проверка таблицы dbo.xdbcdc_databases в базе данных MSXDBCDC на наличие любых включенных экземпляров Oracle CDC. Для каждого включенного экземпляра Oracle CDC служба запускает подпроцесс для обработки этого экземпляра Oracle CDC.
При запуске экземпляра службы Oracle CDC осуществляется доступ к базе данных SQL Server CDC с именем, совпадающим с именем экземпляра CDC, и извлечение его состояния с момента предыдущего запуска. Также выполняется проверка правильности работы всех компонентов. Затем происходит возобновление обработки изменений, а также чтение журналов транзакций Oracle и запись изменений в базу данных CDC.
Служба Oracle CDC Service периодически отслеживает таблицу dbo.xdbcdc_tables в базе данных MSXDBCDC, чтобы определить наличие любых изменений в конфигурации экземпляра Oracle CDC. При обнаружении изменения служба Oracle CDC уведомляет экземпляр Oracle CDC о необходимости проверки экземпляра на наличие изменений. Большинство изменений в конфигурации, таких как добавление или удаление отслеживаемых экземпляров, можно применять, пока экземпляр Oracle CDC включен, но для некоторых изменений может потребоваться перезапустить экземпляр Oracle CDC.
При использовании консоли конструктора Oracle CDC изменения определяются автоматически. При обновлении конфигурации Oracle CDC непосредственно при помощи SQL необходимо вызвать следующую процедуру для того, чтобы служба Oracle CDC обнаружила изменения в конфигурации:
DECLARE @dbname nvarchar(128) = 'HRcdc'
EXECUTE [MSXDBCDC].[dbo].[xdbcdc_update_config_version] @dbname
GO
Процесс экземпляра Oracle CDC обновляет свое состояние в системной таблице cdc.xdbcdc_state и записывает сведения об ошибке в таблицу cdc.xdbcdc_trace . Таблица xdbcdc_state полезна для мониторинга состояния экземпляра Oracle CDC. Он предоставляет актуальное состояние, различные счетчики (например, количество изменений, считываемых из Oracle, количество изменений, записанных в SQL Server, количество зафиксированных транзакций и текущее число транзакций в полете) и указание задержки.
Конфигурация экземпляра Oracle CDC сохраняется в таблице cdc.xdbcdc_config , которая является таблицей, с которой работает консоль конструктора Oracle CDC. Так как вся конфигурация экземпляра Oracle CDC найдена в целевом экземпляре SQL Server и базах данных CDC, можно создать сценарии развертывания SQL Server для экземпляра Oracle CDC. Это делается с помощью консолей конфигурации службы Oracle CDC и конструктора Oracle CDC.
Соображения безопасности
Ниже описываются требования безопасности, необходимые для работы со службой CDC для Oracle.
Защита исходных данных Oracle
Служба Oracle CDC не требует доступа к исходным данным Oracle и защищена путем обеспечения того, чтобы учетные данные интеллектуального анализа журнала не предоставляли разрешение SELECT для клиентских таблиц Oracle.
Защита исходной информации об изменениях Oracle
Службе Oracle CDC предоставляются учетные данные для интеллектуального анализа журнала, которые позволяют этой службе отслеживать изменения, вносимые в любую таблицу базы данных Oracle. Информация об изменениях не обладает такими же гранулярными разрешениями доступа, какими обладают обычные таблицы, поэтому доступ к данным изменений позволяет обойти встроенные элементы управления доступом к данным Oracle.
Исходные таблицы Oracle, отслеживание которых было выполнено, имеют в базе данных CDC пустые зеркальные таблицы с такими же схемами и именами таблиц. Собранные данные хранятся в экземплярах отслеживания SQL Server и обеспечивают ту же защиту, что и для изменений, собранных из базы данных SQL Server. Для получения доступа к информации об изменениях, связанной с экземпляром отслеживания, пользователю должен быть предоставлен доступ с правом выборки всех отслеживаемых столбцов в соответствующей зеркальной таблице. Кроме того, если при создании экземпляра отслеживания задана шлюзовая роль, вызывающий также должен быть членом указанной шлюзовой роли. Другие общие функции системы отслеживания измененных данных для доступа к метаданным предоставляются в распоряжение пользователей баз данных через роль public, хотя доступ к возвращенным метаданным обычно регулируется доступом с правом выборки к базовым исходным таблицам, а также членством во всех определенных шлюзовых ролях.
Это означает, что пользователи с предопределенной ролью сервера sysadmin или с предопределенной ролью базы данных db_owner имеют (по умолчанию) полный доступ к полученным данным, а дополнительный доступ можно предоставить либо путем дальнейшего назначения ролей, либо путем предоставления выделенного доступа к полученным столбцам.
Защита учетных данных интеллектуального анализа исходного журнала Oracle
Конфигурация службы Oracle CDC, хранимая в базе данных CDC (в таблице cdc.xdbcdc_config), включает имя пользователя интеллектуального анализа журнала и связанный с ним пароль.
Пароль интеллектуального анализа журнала сохраняется в зашифрованном виде путем использования асимметричного ключа с фиксированным именем xdbcdc_asym_key
, который создается автоматически при помощи следующей команды:
USE [<cdc-database-name>]
CREATE ASYMMETRIC KEY xdbcdc_asym_key
WITH ALGORITHM = RSA_1024
ENCRYPTION BY PASSWORD = '<cdc-database-name><asym-key-password>'
При использовании другого алгоритма этот ключ можно удалить и создать новый ключ с таким же именем, зашифрованный при помощи такого же пароля.
Пароль асимметричного ключа — это главный пароль, который сохраняется в разделе реестра HKLM\Software\Microsoft\XDBCDCSVC\\<имя_службы>. Этот ключ доступен только для локальных администраторов и учетной записи службы Windows для Oracle CDC. Ключ содержит зашифрованное двоичное значение AsymmetricKeyPassword , в котором хранится пароль асимметричного ключа. Доступ к разделу реестра необходим для доступа к учетным данным интеллектуального анализа журнала Oracle.
Чтобы использовать предложение ENCRYPTION BY PASSWORD, пароль должен соответствовать требованиям политики паролей Windows для компьютера под управлением экземпляра SQL Server. Это делается путем выбора пароля асимметричного ключа в соответствии с этой политикой.
При утрате пароля асимметричного ключа учетные данные интеллектуального анализа журнала для каждого экземпляра Oracle CDC необходимо задать снова при помощи конструктора службы Oracle CDC.
Асимметричный ключ автоматически создается в базе данных CDC, если служба CDC обнаруживает экземпляр базы данных Oracle CDC, в которой отсутствует асимметричный ключ, или если такой ключ существует, но пароль для него не подходит.
Учетная запись службы Windows для службы Oracle CDC
Учетная запись службы, используемая для службы Windows для Oracle CDC, не требует каких-либо дополнительных привилегий. Учетная запись должна использовать API собственного клиента Native Client Oracle и API источника данных ODBC собственного клиента SQL Server. Также для нее необходим доступ к ключу настройки службы в реестре (для этого данная консоль настройки службы CDC специально настраивает ACL).
В этом разделе
См. также
Как управлять локальной службой CDC
Управление службой CDC Oracle