Соединение Oracle 11gr2 с Sql Server с использованием проблемы dg4msql - PullRequest
2 голосов
/ 11 января 2011

Кому это может ответить, Мы установили Oracle 11g r2 на Redhat Enterprise Linux 5.4. Мы пытаемся подключиться к Sql Server 2005, после внесения некоторых замечаний мы получаем следующую ошибку: «Внутренняя ошибка ORA-28513 в гетерогенном удаленном агенте».


listener.ora как показано ниже:

[oracle@oracledb admin]$ less listener.ora
)
(SID_DESC =
(SID_NAME = dg4msql)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(PROGRAM = dg4msql)
(ENVS=LD_LIBRARY_PATH=/u01/app/oracle/product/11.2.0/db_1/dg4msql/lib:/u01/app/oracle/product/11.2.0/db_1/lib)
)
)

LOGGING_LISTENER = on

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracledb)(PORT = 1521))
)
)

ADR_BASE_LISTENER = /u01/app/oracle

TRACE_LEVEL_LISTENER = on

tnsnames.ora как показано ниже:

[oracle@oracledb admin]$ less tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

fasdat =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracledb)(PORT = 1521))
)
(CONNECT_DATA =
(SID = fasdat)
)
)
dg4msql =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL= TCP)
(HOST = oracledb)
(PORT = 1521)
)
(CONNECT_DATA=
(SID=dg4msql) )
(HS=OK))

init4msql.ora как показано ниже:

[oracle@oracledb admin]$ less initdg4msql.ora
# This is a customized agent init file that contains the HS parameters
# that are needed for the Database Gateway for Microsoft SQL Server

#
# HS init parameters
#
HS_FDS_CONNECT_INFO=192.168.1.48:1433//NAVISION
# alternate connect format is hostname/serverinstance/databasename
#HS_FDS_TRACE_LEVEL=0
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
#HS_LANGUAGE=turkish_turkey.WE8ISO8859P9
HS_NLS_NCHAR=WE8ISO8859P9
#HS_FDS_TRACE_LEVEL=DEBUG

Мы настроили системный dsn на Sql Server 2005 с именем dg4msql, выбрали драйвер в качестве «Sql Server» и сервер в качестве «локального» * ​​1015 *

Мы будем рады выслушать любые идеи по решению этой проблемы,

1 Ответ

1 голос
/ 24 марта 2011

Похоже, вы используете шлюз для настройки MySQL, а не гетерогенный шлюз (для соединений ODBC).Вот краткий обзор процесса

В SQL Server создайте пользователя базы данных и предоставьте ему доступ на чтение к базе данных / таблицам, которые вы хотите прочитать по ссылке базы данных Oracle.

В домашнем шлюзекаждая база данных SQL Server, к которой вы хотите получить доступ, должна иметь файл init.ora, расположенный в $ OH / dg4msql / admin в форме initsid.ora, где sid - это имя базы данных, которая будет использоваться в ссылке (например, initbob.ora), поэтомусоздать один

HS_FDS_CONNECT_INFO=msserver1:1234//Example_Database
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
HS_TRANSACTION_MODEL=READ_ONLY

Теперь вы должны добавить новый sid в listener.ora в домашнем шлюзе, используя дополнительный раздел SID_DESC внутри существующего SID_LIST, например

(SID_DESC =
(SID_NAME=bob)
(ORACLE_HOME=/oracle/gateway/product/11.2.0)
(ENVS=LD_LIBRARY_PATH=/oracle/gateway/product/11.2.0/dg4msql/driver/lib;/oracle/gateway/product/11.2.0/lib)
(PROGRAM=dg4msql)
)

. Вам следуетТеперь остановите и перезапустите приемник шлюза, чтобы новый sid стал активным.Примечание: перезагрузки недостаточно.

Теперь вы должны добавить новый sid в файл tnsnames.ora для прослушивателя каждой базы данных, в которой вы создадите ссылку.Вам не нужно делать это в домашнем шлюзе, если только это не также домашний каталог базы данных, в котором вы создадите ссылку на базу данных.

bob =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = severname.example.com)(PORT = 1690))
(CONNECT_DATA = (SID = bob))
(HS = OK)
)

Примечание: хост и порт предназначены для шлюза, а не дляБаза данных SQL Server

В каждой базе данных, для которой требуется ссылка на базу данных MS-SQL, необходимо создать ссылку базы данных на новый sid шлюза.

CREATE PUBLIC DATABASE LINK bob
CONNECT TO "ms_user" IDENTIFIED BY "ms-passwd" USING 'bob';

где ms-user и ms-пароль - это пользователь SQL Server, который вы создали в самом начале.

Теперь вы можете протестировать новую ссылку на базу данных

SELECT COUNT(*) FROM "Table_Name"@bob;

После того, как вы это сделаете, вы можете изменить файл initsid.ora надобавить параметры в соответствии с вашим подключением.Если вы сделаете это таким образом, вы сможете легко добавлять и управлять многими различными базами данных через шлюз.

...