Oracle 11GR2 подключение к SQL Server с использованием проблемы DG4MSQL

StackOverflow https://stackoverflow.com/questions/4658942

Вопрос

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


Прослушатель.ора как ниже:

[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))

init_msql.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» и сервер как «локальный»

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

Это было полезно?

Решение

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

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

В Gateway Hotel каждый база данных 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 в прослушиватель.ora в доме Gateway, используя дополнительный раздел 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)
)

Теперь вы должны остановиться и перезапустить слушатель шлюза, чтобы новый Сид становился активным. NB перезагрузка недостаточно.

Теперь вы должны добавить новый SID в файле TNSNAMES.ORA для слушателя каждой базы данных, в которой вы создадите ссылку. Вам не нужно делать это в доме Gateway, если оно также не является домом базы данных, в которой вы создадите ссылку база данных.

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

NB: хост и порт предназначены для шлюза не для базы данных SQL Server

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

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

Там, где MS-User и MS-Password - это пользователь SQL Server, который вы создали прямо в начале.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top