Подключение к SQL Server из базы данных Oracle

Настроить соединение с Oracle Database из SQL Server довольно просто, но обратное не так. Стив Каллан познакомит вас с полным примером того, как получить доступ к SQL Server из базы данных Oracle с помощью базы данных шлюзов (новый и улучшенный метод Oracle).

Настройка подключение к базе данных Oracle из SQL Server это довольно легко, но обратное не так верно. Подключение базы данных Oracle к внешним источникам данных ранее обрабатывалось с помощью OHS или Oracle Heterogene Services. Новый и улучшенный метод называется Шлюзами баз данных, а ссылка на имя обычно рассматривается как DG4ODBC (или dg4odbc). Ключевая часть этой архитектуры соединения основана на ODBC.

Новая (начиная с Oracle 11 g R1) часть этой установки включает загрузку и установку ресурсов DG4ODBC в существующую установку Oracle RDBMS. Название продукта для Oracle 11 g R2 в Windows (32-разрядная версия), например, называется « Oracle Database Gateways 11 g Release 2 (11.2.0.1.0) для Microsoft Windows (32-разрядная версия) » и находится под скачать раздел для Базы данных на ОТН. Документация для шлюзов баз данных включает семь руководств, посвященных различным версиям UNIX и Windows. В этой статье нас интересует руководство по установке и настройке шлюза базы данных для Microsoft Windows , поскольку большинство пользователей используют Windows для изучения Oracle.

Что вам нужно для тестовой среды? Очевидно, что база данных Oracle, и хотя в этом руководстве рассматриваются несколько источников данных ODBC (Sybase и др.), В качестве внешней СУБД здесь используется SQL Server. Как вы получаете SQL Server? Загрузите его с MSDN и подпишитесь на 180-дневную пробную версию. Или, как было сказано выше, весна за копию версия для разработчиков и получите установку Enterprise Edition за небольшую часть коммерческой розничной цены. В дополнение к установке SQL Server вам также понадобятся некоторые Базы данных SQL Server ,

Как только системы баз данных будут установлены (Oracle 11 g R2 и SQL Server 2008 для этого примера), становится довольно просто (почти) следовать инструкциям, касающимся установки и настройки DG4ODBC. Существует три источника информации о том, как настроить Oracle для доступа к SQL Server, и вы можете выбрать один из них, чтобы получить окончательный ответ. Источники включают инструкции в руководстве, а также два документа в службу поддержки My Oracle:

Как настроить DG4ODBC (Oracle Database Gateway для ODBC) в Windows 32bit (идентификатор документа 466225.1)

«Как настроить DG4MSQL (шлюз базы данных для MS SQL Server) в Windows 32bit (идентификатор документа 466267.1)»

Различия заключаются в том, как указать параметр HS_FDS_CONNECT_INFO в файле initdg4msql.ora, который, вероятно, является наиболее важным параметром во всем файле. Один документ показывает использование двоеточия при указании номера порта, другой использует запятую. Оба они используют пример оператора выбора для «systables», когда фактической таблицей является sys.tables. Итак, одна вещь, которую вы хотите знать заранее - это действительная таблица в базе данных SQL Server, к которой вы пытаетесь подключиться.

Вам необходимо собрать следующую информацию (для OUI) относительно целевой системы базы данных:

Имя хоста сервера базы данных SQL Server - если Oracle и MSSQL работают на одном сервере, это просто имя вашего компьютера.

Номер порта сервера базы данных SQL Server - так же, как Oracle использует 1521 в качестве стандартного порта, MSSQL использует 1433 в качестве стандартного порта. Чтобы найти порт, выполните следующее:

DECLARE @tcp_port nvarchar (5) EXEC xp_regread @rootkey = 'HKEY_LOCAL_MACHINE', @key = 'ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ MICROSOFT \ MSSQLSERVER \ MSSQLSERVER \ SUPERSOCKETNETLIB \ TCP', @value_name ='tp_port_name_tc_tc_port_port_port_name = Tcp

Примечание. Когда вы приступаете к фактической установке шлюзов, OUI никогда не запрашивает номер порта (несмотря на то, что показано в руководстве), поэтому вам нужны только имя сервера, имя экземпляра и имя базы данных. Кроме того, установщик никогда не запускает Net Configuration Assistant (как показано в документации).

Имя базы данных SQL Server - подходят либо базы данных AdentureWorks, либо AdventureWorksDW.

Загрузите и распакуйте (не в вашей установке программного обеспечения Oracle) файл шлюза и запустите setup.exe. Учитывая, что Oracle 11g уже установлен, весьма вероятно, что Oracle Universal Installer для шлюзов запустится без проблем. Вы увидите типичный экран приветствия за 11 г.

В документации говорится, что вам не нужно редактировать значение или путь к исходному каталогу Oracle, но на какой домашний каталог Oracle ссылались авторы? Установка этого дополнения - то, где пригодится поддержка CSI для Oracle: технические заметки сообщают вам, что установка в существующем доме Oracle в порядке. Предостережение заключается в том, что если ваша установка Oracle пропатчена, вам придется заново пропатчить установку, так как установка DG4ODBC может перезаписать пропатченные файлы.

Я буду использовать свой существующий Oracle дома, исходя из этого:

Я буду использовать свой существующий Oracle дома, исходя из этого:

...к этому:

к этому:

Нам не нужны все шлюзы, поэтому выбран только один для SQL Server.

Нам не нужны все шлюзы, поэтому выбран только один для SQL Server

Вот где информация о SQL Server вступает в игру. На моем компьютере установлен SQL Server 2005 в качестве экземпляра по умолчанию, а SQL Server 2008 установлен в качестве именованного экземпляра, поэтому вы видите WIN2003 \ SQL2008 (где SQL2008 - именованный экземпляр).

На моем компьютере установлен SQL Server 2005 в качестве экземпляра по умолчанию, а SQL Server 2008 установлен в качестве именованного экземпляра, поэтому вы видите WIN2003 \ SQL2008 (где SQL2008 - именованный экземпляр)

Подтвердите данные окна «Сводка» и нажмите «Установить».

Подтвердите данные окна «Сводка» и нажмите «Установить»

Процесс установки начинается (у меня прошло несколько минут, прежде чем индикатор выполнения начал показывать какой-либо прогресс) и в целом занимает около трех минут. Окно окончания установки показывает, что это был успех.

Окно окончания установки показывает, что это был успех

Новая папка (dg4msql) была добавлена ​​в мою установку 11gR2.

Новая папка (dg4msql) была добавлена ​​в мою установку 11gR2

Ниже показаны шаги по настройке шлюза.

1. Настройте файл параметров инициализации шлюза

2. Настройте Oracle Net для шлюза

3. Настройте базу данных Oracle для доступа к шлюзу

4. Создать базу данных ссылок

5. Настройте двухфазную фиксацию

6. Создайте представления SQL Server для поддержки словаря данных

7. Значения параметров инициализации шлюза

8. Настройте шлюз для доступа к нескольким базам данных SQL Server.

Вы можете определить свой собственный SID для шлюза, но проще принять SID по умолчанию, который Oracle создает для вас: dg4msql. Преимущество использования dg4msql заключается в том, что вы получаете предварительно настроенный файл параметров инициализации. Если у вас есть несколько подключений, вам понадобится несколько файлов инициализации. Содержимое файла по умолчанию показано ниже.

# Это настраиваемый файл инициализации агента, который содержит параметры HS, # необходимые для шлюза базы данных для Microsoft SQL Server # # Параметры инициализации HS # HS_FDS_CONNECT_INFO = [WIN2003] / WIN2003 \ SQL2008 / AdventureWorks HS_FDS_TRACE_LEVEL = OFF HS_FDS_RECOVERY_ACCOUNT = RECOVER__S_D_WRES_DF ВОССТАНОВЛЕНИЕ

Я добавил несколько других примеров в свой файл и в итоге использовал формат запятого:

# HS_FDS_CONNECT_INFO = [WIN2003] / WIN2003 \ SQL2008 / AdventureWorks # HS_FDS_CONNECT_INFO = win2003: 1433 // AdventureWorks # HS_FDS_CONNECT_INFO =: // # альтернативного формат подключение имени хост / serverinstance / имя_базы_данные # HS_FDS_CONNECT_INFO = win2003 / SQL2008 / AdventureWorks HS_FDS_CONNECT_INFO = win2003,1433 / AdventureWorks # HS_FDS_CONNECT_INFO = dg4msql

Следующим шагом является настройка слушателя. Несомненно, у вас уже есть файл listener.ora, так что все, что здесь необходимо, это добавить запись в список SID, используя следующий формат:

SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = gateway_sid) (ORACLE_HOME = oracle_home_directory) (PROGRAM = dg4msql)))

В качестве бонуса Oracle создает для вас пример файла listener.ora (и tnsnames.ora) в папке dg4msql \ admin, поэтому все, что вам нужно сделать, это вырезать и вставить запись списка в ваш основной файл listener.ora (а затем перезагрузить слушателя). Вывод статуса в lsnrctl должен показать новую запись:

Служба "dg4msql" имеет 1 экземпляр (ов). Экземпляр "dg4msql", статус НЕИЗВЕСТНЫЙ, имеет 1 обработчик (и) для этой службы ...

Вы должны отредактировать файл tnsnames.ora вручную, но, опять же, вы можете использовать файл примера в папке dg4msql \ admin. Просто добавьте пример записи (с учетом номера порта, если необходимо) в основной файл tnsnames.ora:

dg4msql = (DESCRIPTION = (ADDRESS = (PROTOCOL = tcp) (HOST = localhost) (PORT = 1521)) (CONNECT_DATA = (SID = dg4msql)) (HS = OK))

Создайте ссылку на базу данных, используя двойные кавычки для имени пользователя и пароля и одинарные кавычки для значения tnsnames.

СОЗДАНИЕ ССЫЛКИ ОБЩЕСТВЕННОЙ БАЗЫ ДАННЫХ dg4 ПОДКЛЮЧАЕТСЯ К "Oracle", ОПРЕДЕЛЯЕМОМУ "oracle" С ИСПОЛЬЗОВАНИЕМ "dg4msql";

Пропустив часть двухфазной фиксации, следующий шаг включает в себя запуск сценария, который создает Oracle-подобные представления словаря данных в MSSQL. Откройте новый запрос в SQL Server Management Studio (пока он подключен как sa или как администратор), откройте файл (который вставит его в окно запроса) и запустите его. Будет несколько сообщений об ошибках, так как скрипт содержит операторы drop для объектов, которые не существуют (пока).

На этом этапе вы должны иметь возможность выполнять запросы к SQL Server. Вывод select * из all_users @ dg4 показан ниже.

USERNAME USER_ID СОЗДАН -------------------- ---------- --------- public 0 08-APR-03 dbo 1 08-APR-03 гость 2 08-APR-03 INFORMATION_SCHEMA 3 14-OCT-05 sys 4 14-OCT-05 Oracle 5 19-OCT-10 db_owner 16384 08-APR-03 db_accessadmin 16385 08-APR-03 db_securityadmin 16386 08-APR-03 db_ddladmin 16387 08-APR-03 db_backupoperator 16389 08-APR-03 db_dareareader 16390 08-APR-03 db_datawriter 16391 08-APR-03 db_denydatareader 16392 08-APR-03 03-db_denydataer 16392 08-APR-03

Запрос к таблице в базе данных AdventureWorks:

выберите * из "AWBuildVersion" @ dg4; Версия базы данных SystemInformationID Версия Da ModifiedD ------------------- ---------------- --------- - -------- 1 9.06.04.26.00 26-АПР-06 26-АПР-06

Обратите внимание, что эти два утверждения не совпадают:

выберите * из "AWBuildVersion" @ dg4; выберите * из "awbuildversion" @ dg4;

Идентификатор в двойных кавычках важен в зависимости от случая при выборе Oracle из SQL Server. Если таблица находится в пространстве имен, например HumanResources.Department, то заключите в кавычки пространство имен и таблицу. Например:

выберите * из «HumanResources». »Department» @ dg4;

Если вы выбираете столбцы по имени, введите в кавычки также имена столбцов.

SQL> выберите «DepartmentID», «Name», «GroupName» 2 из «HumanResources». «Department» @ dg4; DepartmentID Name GroupName ------------ ------------------------------ ----- -------------------------------- 1 Инженерные исследования и разработки 2 Дизайн инструментов Исследования и разработки 3 Продажи Продажи и маркетинг 4 Маркетинг Продажи и маркетинг 5 Управление запасами закупок 6 Исследования и разработки Исследования и разработки 7 Производство Производство 8 Управление производством Производство 9 Управление персоналом Генеральный директор и администрация 10 Финансовый директор и администрация 11 Информационные службы Генеральный директор и администрация 12 Контроль документов Контроль качества 13 Контроль качества Качество Обеспечение безопасности 14 Средства и техническое обслуживание Исполнительный директор и администрация 15 Управление отгрузкой и получением товара 16 Исполнительный директор и управление

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

» Просмотреть все статьи обозревателя Стива Каллана

Что вам нужно для тестовой среды?
Как вы получаете SQL Server?
В документации говорится, что вам не нужно редактировать значение или путь к исходному каталогу Oracle, но на какой домашний каталог Oracle ссылались авторы?