Подписчики Oracle

Начиная с SQL Server 2005, SQL Server поддерживает принудительные подписки Oracle через поставщик Oracle OLE DB, предоставляемый Oracle.

Настройка подписчика Oracle

Для настройки подписчика Oracle выполните следующие шаги:

  1. Установите и настройте клиентское сетевое программное обеспечение Oracle и поставщика OLE DB Oracle на распространителе SQL Server, чтобы распространитель мог подключаться к подписчику Oracle. Клиентское сетевое программное обеспечение Oracle должно быть самой последней доступной версии. Oracle рекомендует пользователям установить самую новую версию клиентского программного обеспечения. Клиентское программное обеспечение часто бывает новее, чем программное обеспечение баз данных. Наиболее простым способом установки программного обеспечения является использование универсального установщика Oracle с диска Oracle Client. В универсальном установщике Oracle необходимо ввести следующие сведения:

    Сведения

    Описание

    Oracle Home

    Это путь к каталогу, в который устанавливается программное обеспечение Oracle. Примите значение по умолчанию (C:\oracle\ora90 или похожее) или задайте другой путь. Дополнительные сведения о каталоге Oracle Home см. в подразделе «Рассмотрение Oracle Home» далее в этом разделе.

    Имя каталога Oracle Home

    Псевдоним для пути к каталогу Oracle Home.

    Тип установки

    В Oracle версии 10g выберите параметр установки Runtime или Administrator.

  2. Создайте имя TNS для подписчика. Протокол TNS (Transparent Network Substrate) — это уровень связи, используемый базами данных Oracle. Имя службы TNS — это имя, с которым экземпляр базы данных Oracle представлен в сети. Имя службы TNS назначается при настройке соединений с базой данных Oracle. Репликация использует имя службы TNS для идентификации подписчика и для установки соединений.

    После того, как установка Oracle завершена, для настройки сетевых подключений используйте компонент Net Configuration Assistant. Для настройки сетевых подключений необходимо ввести сведения в четырех разделах. Администратор базы данных Oracle настраивает сеть, когда устанавливает базу данных и прослушиватель, поэтому он должен быть способен предоставить эти сведения, если они отсутствуют. Необходимо выполнить следующие действия:

    Действие

    Описание

    Идентификация базы данных

    Существует два способа идентификации базы данных. Первый способ использует компонент Oracle System Identifier (SID), который доступен во всех выпусках Oracle. Второй метод использует компонент Service Name, доступный в выпусках Oracle, начиная с 8.0. Оба метода используют значение, которое конфигурируется при создании базы данных, и важно, чтобы конфигурация сетевого клиента использовала тот же метод именования, что и администратор при конфигурации прослушивателя базы данных.

    Идентификация сетевого псевдонима базы данных

    Необходимо указать сетевой псевдоним, который будет использоваться для доступа к базе данных Oracle. Сетевой псевдоним — это, по существу, указатель на удаленный SID или имя службы, сконфигурированное при создании базы данных. Это относится к нескольким названиям в различных версиях и продуктах Oracle, включая Net Service Name и TNS Alias. SQL*Plus запрашивает этот псевдоним как параметр «Host String» при входе.

    Выберите сетевой протокол.

    Выберите соответствующие поддерживаемые протоколы. Большинство приложений использует протокол TCP.

    Задайте сведения об узле для идентификации прослушивателя базы данных

    Узел — это имя или DNS-псевдоним компьютера, на котором запущен прослушиватель Oracle. Обычно это тот же компьютер, на котором расположена база данных. Для некоторых протоколов, возможно, нужно будет указать дополнительные сведения. Например если выбрать протокол ТСР, нужно будет указать порт, который слушается прослушивателем для запросов на подключение к целевой базе данных. По умолчанию для протокола TCP используется порт 1521.

  3. Создайте публикацию моментальных снимков или публикацию транзакций, активизируйте ее для подписчиков, не относящихся к SQL Server, затем создайте принудительную подписку для подписчика. Дополнительные сведения см. в следующих разделах.

Настройте разрешения для каталога

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

Проверка соединения между распространителем SQL Server и издателем Oracle

Перед завершением выполнения приложения Net Configuration Assistant может быть предложено протестировать соединение с подписчиком Oracle. До начала проверки соединения убедитесь в том, что экземпляр базы данных Oracle находится в режиме «в сети» и запущен прослушиватель Oracle. Если проверка не удалась, свяжитесь с администратором Oracle, ответственным за базу данных, к которой была предпринята попытка подключиться.

После успешного подключения к подписчику Oracle попытайтесь войти в базу данных, используя учетную запись и пароль, которые были настроены для агента распространителя подписки:

  1. Нажмите кнопку Пуск, затем щелкните Выполнить.

  2. Введите cmd и нажмите кнопку ОК.

  3. В командной строке введите:

    sqlplus <UserSchemaLogin>/<UserSchemaPassword>@<NetServiceName>

    Например, sqlplus replication/$tr0ngPasswerd@Oracle90Server

  4. Если настройка сети прошла удачно, будет выполнен вход и появится окно сеанса SQL.

Рассмотрение Oracle Home

Oracle поддерживает параллельную установку двоичных файлов приложений, но только один набор двоичных файлов может использоваться для репликации в текущий момент. Каждый набор двоичных файлов связан с Oracle Home; двоичные файлы находятся в каталоге %ORACLE_HOME%\bin. Необходимо обеспечить использование правильного набора двоичных файлов (а именно — самой последней версии клиентского сетевого программного обеспечения) при установке репликацией соединения с подписчиком Oracle.

Войдите на распространитель под учетными записями, используемыми службой SQL Server и службой агентов SQL Server, установите соответствующие переменные среды. Переменная %ORACLE_HOME% должна указывать на точку установки, заданную при установке сетевого клиентского программного обеспечения. Переменная %PATH% должна включать каталог %ORACLE_HOME% \bin в качестве первой записи, относящейся к Oracle. Сведения о настройке переменных среды см. в документации по операционной системе Windows.

ПримечаниеПримечание

При наличии нескольких каталогов установки Oracle на распространителе SQL Server убедитесь в том, что агент распространителя использует самую последнюю версию поставщика OLE DB Oracle. В некоторых случаях Oracle по умолчанию не обновляет поставщика OLE DB при обновлении клиентских компонентов на распространителе SQL Server. Удалите старого поставщика OLE DB и установите его самую последнюю версию. Дополнительные сведения об установке и удалении поставщика см. в документации Oracle.

Вопросы, касающиеся подписчиков Oracle

Помимо вопросов, описанных в разделе Подписчики, отличные от подписчиков SQL Server, необходимо рассмотреть следующие вопросы при репликации на подписчики Oracle:

  • Oracle обрабатывает как пустые строки, так и значения NULL как NULL. Это важно, если столбец SQL Server определен как NOT NULL и реплицируется на подписчик Oracle. Во избежание сбоев при применении изменений на подписчике Oracle необходимо выполнить одно из следующих действий:

    • Убедиться в том, что пустые строки не вставляются в опубликованную таблицу в качестве значений столбцов.

    • Использовать параметр –SkipErrors для агента распространителя, если желательно получать уведомления об ошибках в журнал агента распространителя и продолжать обработку. Задать код ошибки Oracle 1400 (-SkipErrors1400). Дополнительные сведения об этом параметре см. в разделе Пропуск ошибок в репликации транзакций.

    • Изменить сформированный сценарий создания таблицы, удалив атрибут NOT NULL из любого символьного столбца, с которым могут быть связаны пустые строки, и предоставить измененный сценарий в качестве пользовательского сценария создания для статьи, используя параметр @creation_script процедуры sp_addarticle.

  • Подписчики Oracle поддерживают параметр схемы 0x4071. Дополнительные сведения о параметрах схемы см. в разделе sp_addarticle (Transact-SQL).

Сопоставление типов данных SQL Server и Oracle

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

Тип данных SQL Server

Тип данных Oracle

bigint

NUMBER(19,0)

binary(1-2000)

RAW(1-2000)

binary(2001-8000)

BLOB

bit

NUMBER(1)

char(1-2000)

CHAR(1-2000)

char(2001-4000)

VARCHAR2(2001-4000)

char(4001-8000)

CLOB

date

DATE

datetime

DATE

datetime2(0-7)

TIMESTAMP(7) для Oracle 9 и Oracle 10, VARCHAR(27) для Oracle 8

datetimeoffset(0-7)

TIMESTAMP(7) WITH TIME ZONE для Oracle 9 и Oracle 10, VARCHAR(34) для Oracle 8

decimal(1-38, 0-38)

NUMBER(1-38, 0-38)

float(53)

FLOAT

float

FLOAT

geography

BLOB

geometry

BLOB

hierarchyid

BLOB

image

BLOB

int

NUMBER(10,0)

money

NUMBER(19,4)

nchar(1-1000)

CHAR(1-1000)

nchar(1001-4000)

NCLOB

ntext

NCLOB

numeric(1-38, 0-38)

NUMBER(1-38, 0-38)

nvarchar(1-1000)

VARCHAR2(1-2000)

nvarchar(1001-4000)

NCLOB

nvarchar(max)

NCLOB

real

REAL

smalldatetime

DATE

smallint

NUMBER(5,0)

smallmoney

NUMBER(10,4)

sql_variant

Н/Д

sysname

VARCHAR2(128)

text

CLOB

time(0-7)

VARCHAR(16)

timestamp

RAW(8)

tinyint

NUMBER(3,0)

uniqueidentifier

CHAR(38)

varbinary(1-2000)

RAW(1-2000)

varbinary(2001-8000)

BLOB

varchar(1-4000)

VARCHAR2(1-4000)

varchar(4001-8000)

CLOB

varbinary(max)

BLOB

varchar(max)

CLOB

xml

NCLOB