对谁可以回应, 我们在Redhat Enterprise Linux 5.4上安装了Oracle 11g r2。我们正在尝试连接到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
我们在Sql Server 2005上设置了名为'dg4msql'的系统dsn,选择驱动程序为'Sql Server',服务器选为'local'
我们很高兴听到任何解决此问题的想法,
答案 0 :(得分:1)
您似乎使用的是Gateway for 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_LIST中的附加SID_DESC部分将新sid添加到网关home中的listener.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)
)
注意:主机和端口用于网关而不是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文件以添加适合您的连接的参数。如果您这样做,您可以通过网关轻松添加和管理许多不同的数据库。