На рынке СУБД кроме Oracle существует еще множество не менее популярных СУБД. В зависимости от тех или иных причин многие компании предпочитают использовать разные БД. У Oracle существует возможность подсоединяться к другим БД с использованием ODBC и SQL*Net. Ниже приводится пошаговое изложение настройки соединения к БД MS SQL Server.
Насклько я знаю (могу ошибаться) компания Oracle сама не выпускает ODBC драйвер на UNIX системы, поэтому для настройки соединения необходимо использовать драйвера третьих компаний. Причем существует бесплатные драйвера, в силу чего никто не может гарантировать их безошибочную работу. Кроме этого можно установить стандартный драйвер для UNIX с сайта www.unixodbc.org и дополнительно установить oracle instant client odbc, с помощью которого добавляются необходимые библиотеки для oracle’а.
В нашем случае использован драйвер ODBC компании International Business Machines Corporation с использованием технологии Data Direct.
Используемые платформы:
Платформа БД Oracle: Solaris 5.9 (Sun Sparc), Oracle 9.2.0.7, ODBC (Data Direct)
Платформа БД SQL Server: MS Windows 2003, MS SQL Server 2000
1. Заводим пользователя в MS SQL, даем права, и задаем пароль большими буквами - oracle нечуствителен к регистру в паролях в отличае от mssql.
2. Разархивируем файл odbc.tar (драйвер, предварительно полученный из третьих компаний) в папку /opt/oracle/odbc
3. Создаем листенер MSLISTENER
MSLISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = testhost )(PORT = 1522))
)
)
)
SID_LIST_MSLISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = ms_sqlc)
(ENVS = "LD_LIBRARY_PATH=/opt/oracle/odbc/lib /opt/oracle/9.2.0/lib32:/etc/lib")
(ORACLE_HOME = /opt/oracle/9.2.0)
(PROGRAM = hsodbc)
)
)
*** SID_NAME = ms_sqlc - это всего лишь внутреннее название службы (такого хоста нет)
4. Редактируем файл tnsnames.ora и добавляем туда следующую запись:
ms_sqс =
(DESCRIPTION =
(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = testhost)(PORT = 1522)))
(CONNECT_DATA =(SERVICE_NAME = ms_sqlс))
(HS=OK)
)
5. Настраиваем файлы конфигурации
- Создаем файл в $ORACLE_HOME/hs/admin/initms_sqlс.ora со следующим содержанием:
HS_FDS_CONNECT_INFO = ms_sqlс
HS_FDS_TRACE_LEVEL = 4 -- уровень трассировки
HS_FDS_SHAREABLE_NAME = /opt/oracle/odbc/lib/libodbc.so
HS_LANGUAGE = AMERICAN_AMERICA.CL8MSWIN1251 -- это стандартная кодировка при обращении к серверу ms sql
set ODBCINI=/opt/oracle/odbc/odbc.ini
- В файле /opt/oracle/odbc/odbc.ini добавляем секцию о нашей БД:
[ms_sqlс]
Driver=/opt/oracle/odbc/lib/ivmsss19.so -- если пути не соответствуют /opt/oracle/odbc, нужно исправить на такой
Description=DataDirect 4.21 SQL Server Wire Protocol
Address=ms_sqlс,1433 --- реальный адрес и порт хоста с mssql базой
AnsiNPW=Yes
Database=abonent -- БД MS SQL куда осуществляется соединение
LogonID=
Password=
QuotedId=No
и тут же правим пути инсталяции odbc
[ODBC]
IANAAppCodePage=4
InstallDir=/opt/oracle/odbc
Trace=0
TraceDll=/opt/oracle/odbc/lib/odbctrac.so
TraceFile=odbctrace.out
UseCursorLib=0
6. Запускаем новый листенер и проверяем
oracle@icr-eai # tnsping ms_sqlc
TNS Ping Utility for Solaris: Version 9.2.0.7.0 - Production on 21-MAR-2008 17:51:05
Copyright (c) 1997 Oracle Corporation. All rights reserved.
Used parameter files:
/opt/oracle/9.2.0/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST =testhost)(PORT = 1522))) (CONNECT_DATA =(SERVICE_NAME = ms_sqlc)) (HS=OK))
OK (10 msec)
7. Соединяемся к БД на сервере Solaris под пользователем SYS и запускаем скрипт $ORACLE_HOME/rdbms/admin/caths.sql
oracle@testhost # sqlplus
SQL*Plus: Release 9.2.0.7.0 - Production on Fri Mar 21 17:55:06 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Enter user-name: / as sysdba
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.7.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.7.0 – Production
SQL>@$ORACLE_HOME/rdbms/admin/caths.sql;
8. Создаем дблинк в БД Oracle:
SQL> create database link MSSQLSERVER connect to
Комментариев нет:
Отправить комментарий