它可以响应的人,我们已经在Redhat Enterprise Linux 5.4上安装了Oracle 11G R2。我们正在尝试连接到SQL Server 2005,在应用一些注释后,下面的错误是我们得到的结果:“ ORA-28513异质远程代理中的内部错误”。


listerer.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

我们已经在SQL Server 2005上设置了一个名为“ DG4MSQL”的系统DSN,将驱动程序选择为“ SQL Server”,然后将服务器作为“ Local”选择

我们很高兴听到任何解决这个问题的想法,

有帮助吗?

解决方案

您似乎正在使用网关进行MySQL设置,而不是异质网关(用于ODBC连接)。这是该过程的概述

在SQL Server上创建数据库用户,并让IT读取您要通过Oracle数据库链接读取的数据库/表。

在Gateway Home中,您要访问的每个SQL Server数据库都应在$ OH/dg4msql/admin中以initsid.ora的形式位于$ oh/dg4msql/admin中,其中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_LIST内的其他SID_DESC部分将新的SID添加到Gateway Home中的Lucerner.ora,例如

(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变得活跃。 NB重新加载还不够。

现在,您必须在tnsnames.ora文件中添加新的SID,以便为您创建链接的每个数据库的侦听器。您无需在网关家中执行此操作,除非它也是数据库之家,您可以在其中创建数据库链接。

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