2011-01-11 289 views
2

可能会向谁回复, 我们在Redhat Enterprise Linux 5.4上安装了Oracle 11g r2。我们正试图连接到Sql Server 2005,在应用一些注释后,下面的错误是我们得到的结果: “异构远程代理中的ORA-28513内部错误”。Oracle 11gr2连接到使用dg4msql的Sql Server问题


的listener.ora是如下:

[[email protected] 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是如下:

[[email protected] 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是如下:

[[email protected] 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服务器”和服务器的“本地”

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

+0

skaffman,谢谢格式。 –

回答

1

您似乎使用网关的MySQL设置,而不是异构网关(用于ODBC连接)。这里是过程的概述

在SQL Server上创建一个数据库用户,并为其提供对希望通过Oracle数据库链接读取的数据库/表的读访问权限。

在网关家里要访问应该位于$ OH/dg4msql /管理形式的initsid.ora其中SID是 数据库中使用名称的init.ora中 每个SQL Server数据库链接(如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添加至现有的SID_LIST内的额外SID_DESC节中的网关家里的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文件中添加参数,以满足您的连接。如果你这样做,你可以通过网关轻松添加和管理许多不同的数据库。

+0

抱歉,延迟。它已经推出了几个月。我们已经解决了,但老实说不记得如何?您的解决方案自顶向下清单是好的。谢谢你的关心 –