Базы данных CDC Oracle
Внимание
Запись измененных данных для Oracle по Attunity устарела. Дополнительные сведения см. в объявлении.
Экземпляр Oracle CDC связан с базой данных SQL Server с тем же именем в целевом экземпляре SQL Server. Эта база данных называется базой данных Oracle (или базой данных CDC).
База данных CDC создается и настраивается с помощью консоли конструктора CDC Oracle, она содержит следующие элементы.
Схема
cdc
, созданная путем включения CDC SQL Server в базе данных.Набор таблиц cdc.xdbcdc_xxxx , используемых экземпляром CDC Oracle.
Набор пустых зеркальных таблиц с определениями отслеживаемых таблиц в исходной базе данных Oracle.
Набор таблиц изменений и функций доступа к изменениям, создаваемых механизмом CDC SQL Server и идентичных используемым в обычном CDC SQL Server.
Первоначально к схеме cdc
имеют доступ только члены предопределенной роли базы данных dbowner . Доступ к таблицам изменений и функциям изменений определяется той же моделью безопасности, что и в CDC SQL Server. Дополнительные сведения о модели безопасности см. в разделе Модель безопасности.
Создание базы данных CDC
В большинстве случаев создание базы данных CDC производится в консоли конструктора CDC, но ее также можно создать с помощью скрипта развертывания CDC, подготовленного в консоли конструктора CDC. Системный администратор SQL Server может изменить параметры базы данных при необходимости (для таких элементов, как хранилище, безопасность или доступность).
Дополнительные сведения об использовании консоли конструктора CDC для создания таблиц базы данных и необходимых скриптах см. в разделе Использование мастера создания экземпляра.
Роли пользователей базы данных CDC
Когда база данных CDC создается и включена для CDC, пользователь базы данных с именем cdc_service создается в базе данных CDC и связан с именем входа SQL Server, с которым была настроена служба Oracle CDC. Этот пользователь становится членом ролей базы данных db_datareader, db_datawriterи db_ddladmin . Если имя входа SQL Server также связано с dbo
пользователем, cdc_service не создается.
Такое назначение ролей позволяет службе CDC Oracle обновлять таблицы, построенные по схеме cdc
с данными отслеживания и управления.
При создании базы данных CDC и настройке исходных таблиц CDC в Oracle владелец базы данных CDC может предоставить разрешение SELECT для зеркальных таблиц и определить шлюзовые роли CDC SQL Server, что позволяет управлять доступом к информации об изменениях.
Зеркальные таблицы
Для каждой сканируемой таблицы <имя_схемы>.<имя_таблицы> в базе данных-источнике Oracle создается аналогичная пустая таблица в базе данных CDC, имеющая ту же схему и имя таблицы. Исходные таблицы Oracle с именем cdc
схемы (не учитывает регистр), не могут быть записаны, так как cdc
схема в SQL Server зарезервирована для CDC SQL Server.
Зеркальные таблицы пусты, в них нет никаких данных. Они служат для поддержки стандартной инфраструктуры CDC SQL Server, которая используется экземпляром CDC Oracle. Чтобы данные не вставлялись в зеркальные таблицы и не обновлялись в них, все операции UPDATE, DELETE и INSERT запрещены для PUBLIC. Это гарантирует, что они не будут изменены.
Доступ к информации об изменениях
Из-за модели безопасности SQL Server, используемой для получения доступа к измененным данным, связанным с экземпляром записи, пользователю необходимо предоставить select
доступ ко всем захваченным столбцам связанной таблицы зеркало (разрешения доступа к исходным таблицам Oracle не предоставляют доступ к таблицам изменений в SQL Server). Сведения о модели безопасности SQL Server см. в разделе "Модель безопасности".
Кроме того, если при создании экземпляра отслеживания задана шлюзовая роль, вызывающий также должен быть членом указанной шлюзовой роли. Другие общие функции системы отслеживания измененных данных для доступа к метаданным доступны пользователям через роль PUBLIC, хотя доступ к возвращенным метаданным обычно регулируется доступом с правом выборки к базовым исходным таблицам, а также членством во всех определенных шлюзовых ролях.
Информацию об изменениях можно считать путем вызова специальных табличных функций, формируемых компонентом CDC SQL Server при создании экземпляра отслеживания. Дополнительные сведения об этой функции см. в разделе Функции отслеживания измененных данных (Transact-SQL).
Доступ к данным CDC через компонент источника CDC служб Integration Services распространяется на те же правила.
Таблицы базы данных CDC
В этом разделе описываются следующие таблицы из базы данных CDC.
Таблицы изменений (_CT)
Таблицы изменений создаются на основе зеркальных таблиц. Они содержат информацию об изменениях, которые отслеживаются в базе данных Oracle. Имена этих таблиц формируются в соответствии со следующим соглашением:
[cdc].[<экземпляр_сканирования>_CT]
При включении отслеживания для таблицы <schema-name>.<table-name>
экземпляр отслеживания по умолчанию получит имя <schema-name>_<table-name>
. Например, имя экземпляра отслеживания по умолчанию для таблицы Oracle HR.EMPLOYEES будет HR_EMPLOYEES, а имя связанной таблицы изменений ― [cdc]. [HR_EMPLOYEES_CT].
Запись в таблицы изменений выполняется экземпляром CDC Oracle. Они считываются с помощью специальных табличных функций, создаваемых SQL Server при создании экземпляра записи. Например, fn_cdc_get_all_changes_HR_EMPLOYEES
. Дополнительные сведения об этих функциях CDC см. в разделе Функции отслеживания измененных данных (Transact-SQL).
cdc.lsn_time_mapping
Таблица [cdc].[lsn_time_mapping] создается компонентом CDC SQL Server. Ее использование при работе с CDC Oracle отличается от обычного.
Значения LSN для CDC Oracle, хранящиеся в этой таблице, основаны на значении номера SCN Oracle, связанном с изменением. Первые 6 байтов значения LSN — это исходный номер Oracle SCN.
Кроме того, при использовании CDC Oracle столбцы времени (tran_begin_time
и tran_end_time
) хранят время UTC изменения, а не локальное время, которое используется при выполнении CDC SQL Server. Это гарантирует, что переход на летнее время не оказывает влияния на данные, хранящиеся в lsn_time_mapping.
cdc.xdbcdc_config
Эта таблица содержит данные конфигурации для экземпляра CDC Oracle. Она обновляется с помощью консоли конструктора CDC. Эта таблица содержит только одну строку.
В следующей таблице приводится описание столбцов таблицы cdc.xdbcdc_config .
Позиция | Description |
---|---|
версия | Отслеживает версию конфигурации экземпляра CDC. Обновляется при каждом обновлении таблицы, а также при добавлении нового экземпляра или удалении существующего экземпляра отслеживания. |
connect_string | Строки подключения Oracle. Простой пример:<server>:<port>/<instance> (например, erp.contoso.com:1521/orcl ).В строке подключения также может указываться дескриптор подключения Oracle Net, например (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp) (HOST=erp.contoso.com) (PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=orcl))) Если используется сервер каталогов или файл tnsname, то строкой подключения может быть имя соединения. Дополнительные сведения о строках подключения Oracle см. в статье https://go.microsoft.com/fwlink/?LinkId=231153, которая содержит подробную информацию о строках подключения к базам данных Oracle для клиента Oracle Instant Client, используемого службой CDC Oracle Service. |
use_windows_authentication | Логическое значение, которое может быть. 0: имя пользователя и пароль Oracle указываются для проверки подлинности (по умолчанию) 1: проверка подлинности Windows используется для соединения с базой данных Oracle. Этот параметр можно использовать только в том случае, если в базе данных Oracle настроено использование проверки подлинности Windows. |
username | Имя пользователя базы данных Oracle, выполняющего интеллектуальный анализ журнала. Обязателен только в том случае, если use_windows_authentication = 0. |
password | Пароль пользователя базы данных Oracle, выполняющего интеллектуальный анализ журнала. Обязателен только в том случае, если use_windows_authentication = 0. |
transaction_staging_timeout | Время (в секундах), в течение которого незафиксированная транзакция Oracle сохраняется в памяти перед записью в таблицу cdc.xdbcdc_staged_transactions . Значение по умолчанию — 120 секунд. |
memory_limit | Максимальный объем памяти (МБ), который может использоваться для кэширования данных в памяти. Если указать небольшое значение, то в таблицу cdc.xdbcdc_staged_transactions можно записать большее число транзакций. Значение по умолчанию — 50 МБ. |
options | Список параметров в формате имя[=значение][; ]. Служит для указания вторичных параметров (например, tracing, tuning). В следующей таблице приведено описание доступных параметров. |
В следующей таблице описаны доступные параметры.
Имя. | По умолчанию. | Min | Max | Статические | Description |
---|---|---|---|---|---|
трассировка | False | - | - | False | Возможные значения: Истина False on off |
cdc_update_state_interval | 10 | 1 | 120 | False | Размер (в килобайтах) фрагментов памяти, выделяемых для транзакции (транзакции может быть выделено несколько фрагментов). См. столбец memory_limit в таблице cdc.xdbcdc_config . |
target_max_batched_transactions | 100 | 1 | 1000 | Истина | Максимальное количество транзакций Oracle, которые могут быть обработаны в виде одной транзакции в рамках обновления таблиц SQL Server CT. |
target_idle_lsn_update_interval | 10 | 0 | 1 | False | Интервал (в секундах) обновления таблицы lsn_time_mapping , когда отслеживаемые таблицы неактивны. |
trace_retention_period | 24 | 1 | 24*31 | False | Время (в часах), в течение которого сообщения хранятся в таблице трассировки). |
sql_reconnect_interval | 2 | 2 | 3600 | False | Время ожидания (в секундах) перед повторным подключением к SQL Server. Этот интервал используется в дополнение к времени ожидания подключения клиента SQL Server. |
sql_reconnect_limit | -1 | -1 | -1 | False | Максимальное количество повторного подключения SQL Server. По умолчанию значение -1 означает, что процесс пытается установить повторное соединение до тех пор, пока он не будет остановлен. |
cdc_restart_limit | 6 | -1 | 3600 | False | В большинстве случаев служба CDC автоматически перезапускает экземпляр CDC, работа которого завершилась аварийно. Это свойство определяет, через какое количество сбоев в час служба перестанет перезапускать экземпляр. Значение -1 означает, что экземпляр следует перезапускать всегда. Служба снова начинает перезапускать экземпляр после любого обновления таблицы конфигурации. |
cdc_memory_report | 0 | 0 | 1000 | False | Если значение параметра было изменено, то экземпляр CDC печатает его отчет о памяти в таблицу трассировки. |
target_command_timeout | 600 | 1 | 3600 | False | Время ожидания команды, работающее с SQL Server. |
source_character_set | - | - | - | Истина | Можно задать конкретную кодировку Oracle, которая должна будет использоваться вместо кодовой страницы базы данных Oracle. Это может оказаться полезным в том случае, когда фактическая кодировка символьных данных отличается от кодовой страницы базы данных Oracle. |
source_error_retry_interval | 30 | 1 | 3600 | False | Используется перед повторной попыткой при нескольких ошибках, например при возникновении ошибки соединения или при временном отсутствии синхронизации между системными таблицами. |
source_prefetch_size | 100 | 1 | 10000 | Истина | Размер пакета упреждающей выборки. |
source_max_tables_in_query | 100 | 1 | 10000 | Истина | Максимальное число таблиц в предложении WHERE перед переключением на чтение журнала Oracle без фильтрации таблиц. |
source_read_retry_interval | 2 | 1 | 3600 | False | Время, в течение которого источник ожидает перед следующей попыткой чтения журналов транзакций Oracle при обнаружении EOF. |
source_reconnect_interval | 30 | 1 | 3600 | False | Время ожидания (в секундах) перед попыткой установить повторное соединение с базой данных-источником. |
source_reconnect_limit | -1 | -1 | False | Максимальное число попыток повторного соединения с базой данных-источником. Значение по умолчанию -1 означает, что процесс пытается установить соединение подключения до тех пор, пока он не будет остановлен. | |
source_command_timeout | 30 | 1 | 3600 | False | Время ожидания соединения при работе с Oracle. |
source_connection_timeout | 30 | 1 | 3600 | False | Подключение время ожидания ожидания, работающее с SQL Server. |
trace_data_errors | Истина | - | - | False | Логическое значение. ЗначениеTrue указывает, что в журнале будут регистрироваться ошибки преобразования данных и усечения. |
CDC_stop_on_breaking_schema_changes | False | - | - | False | Логическое значение. ЗначениеTrue указывает, что при обнаружении изменения, нарушающего схему, будет произведен останов. ЗначениеFalse указывает, что необходимо удалить зеркальную таблицу и экземпляр отслеживания. |
source_oracle_home | - | - | False | Может быть задан определенный путь Oracle Home или имя Oracle Home Name, которое экземпляр CDC будет использовать для соединения с Oracle. |
cdc.xdbcdc_state
Эта таблица содержит сведения о сохраненном состоянии экземпляра CDC Oracle. Состояние отслеживания используется при восстановлении и отработке отказа для мониторинга исправности.
В следующей таблице описаны столбцы таблицы cdc.xdbcdc_state .
Позиция | Description |
---|---|
статус | Код текущего состояния экземпляра CDC Oracle. Этот столбец описывает текущее состояние для CDC. |
sub_status | Состояние второго уровня, которое представляет дополнительные сведения о текущем состоянии. |
active | Логическое значение, которое может быть. 0: процесс экземпляра CDC Oracle неактивен. 1: процесс экземпляра CDC Oracle активен. |
error | Логическое значение, которое может быть. 0: процесс экземпляра CDC Oracle находится не в состоянии ошибки. 1: процесс экземпляра CDC Oracle находится в состоянии ошибки. |
status_message | Строка, содержащая описание ошибки или состояния. |
TIMESTAMP | Отметка времени в формате (UTC), когда состояние отслеживания обновлялось в последний раз. |
active_capture_node | Имя компьютера (это может быть узел кластера), на котором в данный момент работает служба CDC Oracle и экземпляр CDC Oracle (обрабатывающий журналы транзакций Oracle). |
last_transaction_timestamp | Отметка времени в формате (UTC), когда в таблицы изменений была записана последняя транзакция. |
last_change_timestamp | Отметка времени в формате (UTC), когда последняя запись об изменении была считана из исходного журнала транзакций Oracle. Эта отметка времени помогает определить текущую задержку процесса CDC. |
transaction_log_head_cn | Номер последнего изменения (CN), который был считан в журнале транзакций Oracle. |
transaction_log_tail_cn | Номер изменения (CN) в журнале транзакций, куда помещается экземпляр CDC Oracle в случае перезапуска или восстановления. |
current_cn | Номер последнего изменения (CN), которое было внесено в базу данных-источник. |
software_version | Внутренняя версия службы CDC Oracle Service. |
completed_transactions | Число транзакций, обработанных с момента последнего сброса CDC. |
written_changes | Количество записей изменений, записанных в таблицы изменений SQL Server. |
read_changes | Количество записей об изменениях, считанных в исходном журнале транзакций Oracle. |
staged_transactions | Число активных в данный момент транзакций, которые занесены в таблицу cdc.xdbcdc_staged_transactions . |
cdc.xdbcdc_trace
Эта таблица содержит сведения об операции экземпляра CDC. Сведения, хранящиеся в этой таблице, включают в себя записи об ошибках, важные изменения состояния и записи трассировки. Сведения об ошибках также записываются в журнал событий Windows для обеспечения доступа к ним в том случае, если таблица cdc.xcbcdc_trace будет недоступна.
В следующей таблице приводится описание столбцов таблицы cdc.xdbcdc_trace.
Позиция | Description |
---|---|
TIMESTAMP | Точная отметка времени в формате UTC, когда была создана запись трассировки. |
type | Содержит одно из следующих значений: ОШИБКА INFO ТРАССИРОВКА |
node | Имя узла, на котором была создана запись. |
статус | Код состояния, который используется в таблице состояний. |
sub_status | Код подсостояния, который используется в таблице состояний. |
status_message | Сообщение состояния, которое используется в таблице состояний. |
. | Дополнительные данные в тех случаях, когда запись ошибки или трассировки содержит полезную информацию (например, запись о поврежденном журнале). |
cdc.xdbcdc_staged_transactions
В этой таблице хранятся записи об изменениях для больших и длительных транзакциях до того момента, как будет обнаружено событие фиксации или отката транзакции. Служба CDC Oracle упорядочивает отслеживаемые записи журналов по времени фиксации транзакции, а затем в хронологическом порядке для каждой транзакции. Записи журнала для одной транзакции хранятся в памяти до завершения транзакции, а затем записываются в целевую таблицу изменений или удаляются (в случае отката). Поскольку объем памяти ограничен, большие транзакции записываются в таблицу cdc.xdbcdc_staged_transactions , где и хранятся до их завершения. Транзакции также записываются в промежуточную таблицу, когда они выполняются в течение длительного времени. Поэтому при перезапуске экземпляра CDC Oracle не придется повторно считывать старые изменения из журналов транзакций Oracle.
В следующей таблице приводится описание столбцов таблицы cdc.xdbcdc_staged_transactions .
Позиция | Description |
---|---|
transaction_id | Уникальный идентификатор транзакции, которая заносится в промежуточную таблицу. |
seq_num | Номер строки xcbcdc_staged_transactions для текущей транзакции (начиная с 0). |
data_start_cn | Номер изменения (CN) для первого изменения данных в этой строке. |
data_end_cn | Номер изменения (CN) для последнего изменения данных в этой строке. |
. | Изменения для транзакций в виде большого двоичного объекта, занесенные в промежуточную таблицу. |
См. также
Конструктор системы отслеживания измененных данных для Oracle компании Attunity