Oracle Subscribers
Область применения: SQL Server
Начиная с SQL Server 2005 (9.x), SQL Server поддерживает отправку подписок в Oracle через поставщик Oracle OLE DB, предоставляемый Oracle.
Настройка подписчика Oracle
Для настройки подписчика Oracle выполните следующие шаги:
Установите и настройте клиентское программное обеспечение Oracle и поставщик OLE DB Oracle на распространителю SQL Server, чтобы распространитель смог установить подключения к подписчику Oracle. Клиентское сетевое программное обеспечение Oracle должно быть самой последней доступной версии. Oracle рекомендует пользователям установить самую новую версию клиентского программного обеспечения. Клиентское программное обеспечение часто бывает новее, чем программное обеспечение баз данных. Наиболее простым способом установки программного обеспечения является использование универсального установщика Oracle с диска Oracle Client. В универсальном установщике Oracle необходимо ввести следующие сведения:
Информация Description Oracle Home Это путь к каталогу, в который устанавливается программное обеспечение Oracle. Примите значение по умолчанию (C:\oracle\ora90 или похожее) или задайте другой путь. Дополнительные сведения о каталоге Oracle Home см. в подразделе «Рассмотрение Oracle Home» далее в этом разделе. Имя каталога Oracle Home Псевдоним для пути к каталогу Oracle Home. Тип установки В Oracle версии 10g выберите параметр установки Runtime или Administrator . Создайте имя TNS для подписчика. Протокол TNS (Transparent Network Substrate) — уровень связи, используемый базами данных Oracle. Имя службы TNS — это имя, с которым экземпляр базы данных Oracle представлен в сети. Имя службы TNS назначается при настройке подключений к базе данных Oracle. Репликация использует имя службы TNS для идентификации подписчика и для установки соединений.
После того как установка Oracle завершена, для настройки сетевых подключений используйте компонент Net Configuration Assistant. Для настройки сетевых подключений необходимо ввести сведения в четырех разделах. Администратор базы данных Oracle настраивает сеть, когда устанавливает базу данных и прослушиватель, поэтому он должен быть способен предоставить эти сведения, если они отсутствуют. Необходимо выполнить следующие действия:
Действие Description Идентификация базы данных Существует два способа идентификации базы данных. Первый способ использует компонент 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. Создайте моментальный снимок или публикацию транзакций, включите ее для подписчиков, отличных от SQL Server, а затем создайте push-подписку для подписчика. Дополнительные сведения см. в статье Создание подписки для подписчика, отличного от подписчика SQL Server.
Настройте разрешения для каталога
Учетная запись, в которой выполняется служба SQL Server на распространитете, должна быть предоставлена разрешение на чтение и выполнение каталога (и всех подкаталогов), в котором устанавливается клиентское сетевое программное обеспечение Oracle.
Проверка соединения между распространителем SQL Server и издателем Oracle
Перед завершением выполнения приложения Net Configuration Assistant может быть предложено протестировать соединение с подписчиком Oracle. До начала проверки соединения убедитесь в том, что экземпляр базы данных Oracle находится в режиме «в сети» и запущен прослушиватель Oracle. Если проверка не удалась, свяжитесь с администратором Oracle, ответственным за базу данных, к которой была предпринята попытка подключиться.
После успешного подключения к подписчику Oracle попытайтесь войти в базу данных, используя учетную запись и пароль, которые были настроены для агента распространителя подписки:
Нажмите кнопку Пуск и выберите пункт Выполнить.
Введите
cmd
и нажмите кнопку ОК.В командной строке введите:
sqlplus <UserSchemaLogin>/<UserSchemaPassword>@<NetServiceName>
Например:
sqlplus replication/$tr0ngPasswerd@Oracle90Server
Если настройка сети прошла удачно, будет выполнен вход и появится окно сеанса
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 и установите его самую последнюю версию. Дополнительные сведения об установке и удалении поставщика см. в документации Oracle.
Вопросы, касающиеся подписчиков Oracle
Помимо вопросов, описанных в разделе Non-SQL Server Subscribers, необходимо рассмотреть следующие вопросы при репликации на подписчики 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-объект |
Изображение | 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 |