Oracle 11GR2 подключение к SQL Server с использованием проблемы DG4MSQL
-
09-10-2019 - |
Вопрос
К кому это может ответить, мы установили 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, чтобы добавить параметры в соответствии с вашим подключением. Если вы сделаете это таким образом, вы можете легко добавить и управлять много разных баз данных через шлюз.