Подписчики 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. В универсальном установщике Oracle вы укажите следующие сведения:

    Информация Описание
    Oracle Home Это путь к каталогу установки программного обеспечения Oracle. Примите значение по умолчанию (C:\oracle\ora90 или аналогично) или введите другой путь. Дополнительные сведения о Oracle Home см. в разделе "Вопросы для Oracle Home" далее в этом разделе.
    Имя дома Oracle Псевдоним домашнего пути Oracle.
    Тип установки В Oracle 10g выберите параметр установки среды выполнения или администратора .
  2. Создайте имя TNS для подписчика. TNS (прозрачный сетевой субстрат) — это уровень связи, используемый базами данных Oracle. Имя службы TNS — это имя, по которому экземпляр базы данных Oracle известен в сети. При настройке подключения к базе данных Oracle назначается имя службы TNS. Репликация использует имя службы TNS для идентификации подписчика и установления подключений.

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

    Действие Описание
    Определение базы данных Существует два метода идентификации базы данных. Первый метод использует идентификатор системы Oracle (SID) и доступен в каждом выпуске Oracle. Второй метод использует имя службы, доступное начиная с Oracle версии 8.0. Оба метода используют значение, настроенное при создании базы данных, и важно, чтобы конфигурация клиентской сети использовала тот же метод именования, который администратор использовал при настройке прослушивателя для базы данных.
    Определение сетевого псевдонима для базы данных Необходимо указать сетевой псевдоним, который используется для доступа к базе данных Oracle. Сетевой псевдоним по сути является указателем на удаленный идентификатор безопасности или имя службы, настроенное при создании базы данных; она была названа несколькими именами в разных выпусках и продуктах Oracle, включая net Service Name и TNS Alias. SQL*Plus запрашивает этот псевдоним в качестве параметра "Строка узла" при входе.
    Выбор сетевого протокола Выберите соответствующие протоколы, которые вы хотите поддерживать. Большинство приложений используют TCP.
    Указание сведений о узле для идентификации прослушивателя базы данных Имя узла или DNS- псевдоним компьютера, на котором работает прослушиватель Oracle, как правило, совпадает с компьютером, на котором находится база данных. Для некоторых протоколов необходимо указать дополнительные сведения. Например, при выборе TCP необходимо указать порт, на котором прослушиватель прослушивает запросы подключения к целевой базе данных. Конфигурация TCP по умолчанию использует порт 1521.
  3. Создайте моментальный снимок или публикацию транзакций, включите ее для подписчиков, отличных от SQL Server, а затем создайте push-подписку для подписчика. Дополнительные сведения см. в статье "Создание подписки для не-SQL Server подписчика".

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

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

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

В конце помощника по настройке Net может быть возможность проверить подключение к подписчику Oracle. Перед проверкой подключения убедитесь, что экземпляр базы данных Oracle находится в сети и что прослушиватель Oracle запущен. Если тест не выполнен, обратитесь к DBA 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.

Замечание

Если на распределителе SQL Server есть несколько каталогов Oracle, убедитесь, что агент распространения использует самый новый провайдер Oracle OLE DB. В некоторых случаях Oracle не обновляет OLE DB-провайдер автоматически, когда вы обновляете клиентские компоненты на Распространителе SQL Server. Удалите старый поставщик OLE DB и установите последний поставщик 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 НОМЕР(19,0)
binary(1-2000) RAW(1-2000)
binary(2001-8000) BLOB-объект
bit Номер(1)
char(1-2000) CHAR(1-2000)
char(2001-4000) VARCHAR2(2001-4000)
char(4001-8000) CLOB
date Дата
datetime Дата
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) ЧИСЛО(1-38, 0-38)
float(53) ФЛОАТ
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) ЧИСЛО(1-38, 0-38)
nvarchar(1-1000) VARCHAR2(1-2000)
nvarchar(1001-4000) NCLOB
nvarchar(max) NCLOB
real РЕАЛЬНЫЙ
smalldatetime Дата
smallint NUMBER(5,0)
smallmoney НОМЕР(10,4)
sql_variant Не применимо
sysname VARCHAR2(128)
text CLOB
time(0-7) VARCHAR(16)
timestamp RAW(8)
tinyint ЧИСЛО(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

См. также

Подписчики, не использующие SQL Server
Подписка на публикации