The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Настройка гетерогенных служб в СУБД Oracle XE и создания связи с MS SQL Server (oracle mssql odbc freetds)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: oracle, mssql, odbc, freetds,  (найти похожие документы)
From: NBagin Newsgroups: email Date: Mon, 12 Oct 2008 17:02:14 +0000 (UTC) Subject: Настройка гетерогенных служб в СУБД Oracle XE и создания связи с MS SQL Server Оговорюсь сразу, доступ мы будем осуществлять по-средствам ODBC, соответственно и настройка будет рассматриваться только для этого агента. И так, гетерогенные службы позволяют получать доступ из СУБД Oracle к сторонним источникам данных. Для этой цели используются специальные программы - агенты, которые выступая в качестве клиента к интересующему стороннему источнику данных образуют некое подобие шлюза из СУБД Oracle к сторонним данным. В случае с источниками ODBC имя агента hsodbc. В общем случае связь с внешним источником происходит через специально создаваемый для этой цели database link. Перед тем, как создавать эту связь необходимо особым образом перенастроить конфигурационные файлы прослушивателя: listener.ora и tnsnames.ora, с тем, чтобы в последствии ссылаться на прописанные в них псевдонимы интересующих нас сторонних источников данных. Для настройки необходимо: 1. В файл $ORACLE_HOME/network/admin/listener.oraнеобходимо добавить описание используемого нами источника: SID_LIST_LISTENER = (SID_LIST = . . (SID_DESC = (SID_NAME = <Псевдоним из tnsnames.ora>) (ORACLE_HOME = <Соответствующий путь в каталог Oracle>) (PROGRAM = hsodbc) ) . . ) 2. В файл $ORACLE_HOME/network/admin/tnsnames.ora необходимо добавить псевдоним используемого нами источника: <Псевдоним> = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA=(SID=<Тот же Псевдоним> )) (HS=OK) ) Следует обратить особое внимание на тот факт, что в примерах от оракла форматирование и расстановка скобок отличается, но работает именно так как указано тут. 3. Создать и заполнить файл настроек источника данных: $ORACLE_HOME/hs/admin/init<Псевдоним из tnsnames>.ora. Например так: # # HS init parameters # HS_FDS_CONNECT_INFO = <Наименование источника ODBC> HS_FDS_TRACE_LEVEL = <ON|OFF> При желании можно указать файл для выгрузки данных трассировки, если этого не делать, то даже при включенном режиме трассировки в Linux версии OracleXE трассировочные данные выводится не будут. Однако при настройке оракла имеется возможность указывать каталог для трассировочных данных, но я этого не пробовал. Замечено, что в Windows версии достаточно такой каталог создать и данные в него будут попадать сами без указания конкретного названия файла. HS_FDS_TRACE_FILE_NAME = <Полный путь к файлу трассировки> При настройке Linux версии необходимо явно указать библиотеку используемого драйвера или менеджер ODBC, например так: HS_FDS_SHAREABLE_NAME = /usr/lib/libodbc.so В случае возникновения проблем с кодировкой получаемых от ODBC драйвера данных, кодировку можно указать например так: HS_LANGUAGE=RUSSIAN_RUSSIA.CL8MSWIN1251 Для Linux версии необходимо указать полный путь к используемому файлу odbc.ini # # ODBC specific environment variables # set ODBCINI=/etc/odbc.ini При необходимости можно указывать и другие параметры, заполняя их по шаблону: # # Environment variables required for the non-Oracle system # #set <envvar>=<value> Вот в основном и всё, что необходимо для настройки гетерогенного агента hsodbc OracleXE. Для тех, кто использует Linux версию необходимо знать ещё кое что: 1. при написании всего и вся необходимо соблюдать регистр. 2. для работы с ODBC необходим пакет unixODBC 3. в случае, если предполагается получать данные из MS SQL Server, необходим еще и пакет FreeTDS, т.к. MS не делает ODBC драйверов для Linux. Особенности установки пакета FreeTDS: В принципе, последовательность сборки стандартная: configure > make > install > clean. Но для configure необходимо указать версию используемого TDS например так: ./configure --with-tdsver=7.0 Помимо этого необходимо убедиться в том, что конфигуратор нашёл и намерен использовать iconv, в противном случае могут возникнуть проблемы с перекодировкой. После того, как пакет установиться необходимо провести его ещё немного настроить, после чего настроить ODBC. Вся настройка FreeTDS производится в файлах /usr/local/etc/freetds.conf и /usr/local/etc/locales.conf В файл freetds.conf прописываются псевдонимы используемых библиотекой FreeTDS серверов например вот так: [mySQLServer] host = 192.168.0.3 port = 1433 client charset = cp1251 tds version = 7.0 Значения параметров очевидны и в комментариях не нуждаются, за исключением client charset, который в стандартном буржуйском примере отсутствует, но нам без него ни куда. В файл locales.conf я нагло прописал отсутствующую там локаль ru_RU в соответствии с приведенными примерами и своими предпочтениями. После того как настройки проведены, можно пробовать подключаться к SQL Server-у с помощью FreeTDS для чего необходимо выполнить команду вида: /usr/local/bin/tsql -S <псевдоним из freetds.conf> -U <пользователь> -P <пароль> -D <база> Если соединение установлено, должно появится приглашение вида " 1> ". Теперь необходимо настроить ODBC. Для настройки ODBC необходимы две вещи: 1. прописать драйвер (делается правкой файла /etc/odbcinst.ini) 2. прописать источник данных (будем прописывать в /etc/odbc.ini) В случае с FreeTDS, в файле odbcinst.ini должно присутствовать запись на подобие следующей: [FreeTDS driver] Description = FreeTDS ODBC driver Driver = /usr/local/lib/libtdsodbc.so Setup = /usr/lib/libtdsS.so FileUsage = 1 Опять же, в случае с FreeTDS, в файле odbc.ini должна присутствовать запись на подобие: [MSSQL] Driver= FreeTDS driver SERVERNAME = mySQLServer При такой форме записи считается, что ODBC источник данных MSSQL будет использовать соответствующий драйвер, взятый из .ini и настройки сервера, взятые из freetds.conf. Теперь необходимо проверить связь штатными средствами пакета unixODBC, для чего надо выполнить команду вида: isql -v <источник данных> <пользователь> <пароль> если появилось приглашение "SQL>" пробуйте запросить даные из небольшой таблички, если получилось, можете считать, что я не напрасно потратил на эту инструкцию время;-) На этом вроде бы всё.

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Спонсоры:
Слёрм
Inferno Solutions
Hosting by Ihor
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2019 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру