2011-01-11 39 views
2

Wen es antworten kann, Wir haben Oracle 11g R2 auf einem Redhat Enterprise Linux 5.4 installiert. Wir versuchen, eine Verbindung zu einem Sql Server 2005 herzustellen, nachdem wir einige Hinweise eingegeben haben, ist der folgende Fehler das Ergebnis, das wir erhalten haben: "ORA-28513 interner Fehler in heterogenem Remote-Agent".Oracle 11gr2 Verbindung zu Sql Server mit dg4msql Problem


listener.ora ist wie folgt:

[[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 ist wie folgt:

[[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 ist wie folgt:

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

Wir haben ein Setup System dsn bei SQL Server 2005 namens ‚dg4msql‘, entschied sich für die Fahrer als ‚SQL Server‘ und Server als ‚lokale‘

Wir freuen würde ihre Ideen zu hören, dieses Problem zu lösen ,

+0

skaffman, danke für die Formatierung. –

Antwort

1

Sie scheinen das Gateway für MySQL-Setup anstelle des heterogenen Gateway (für ODBC-Verbindungen) zu verwenden. Hier ist eine Übersicht über den Prozess

Erstellen Sie auf SQL Server einen Datenbankbenutzer und geben Sie Lesezugriff auf die Datenbank/Tabellen, die Sie über die Oracle-Datenbankverbindung lesen möchten.

Im Gateway zu Hause jede SQL Server-Datenbank Sie in $ OH/dg4msql/admin in der Form initSID.ora wo sid in den Namen die Datenbank verwendet werden soll befindet sich eine init.ora haben zugreifen möchten, sollten die Verbindung (zB initbob.ora), schafft so einen

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 

Sie müssen jetzt den neuen sid zum listener.ora im Gateway zu Hause unter Verwendung eines zusätzlichen SID_DESC Abschnitts innerhalb des bestehenden SID_LIST hinzufügen, zum Beispiel

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

Sie sollten jetzt den Gateway-Listener anhalten und neu starten, damit die neue SID aktiv wird. NB ein Nachladen ist nicht genug.

Sie müssen nun die neue SID in der Datei tnsnames.ora für den Listener jeder Datenbank hinzufügen, in der Sie eine Verknüpfung erstellen. Sie müssen dies nicht im Gateway zu Hause tun, es sei denn, es ist auch ein Datenbank-Home, in dem Sie eine Datenbankverbindung erstellen.

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

NB: Der Host und Port ist für das Gateway nicht für die SQL Server-Datenbank

In jeder Datenbank, die einen Link zu der MS-SQL-Datenbank erfordert, dass Sie eine Datenbank Link zu Ihrer neuen Gateway erstellen sollten sid.

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

Dabei sind ms-user und ms-password die SQL Server-Benutzer, die Sie direkt am Anfang erstellt haben.

Jetzt können testen Sie die neue Datenbank Link

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

Sobald Sie diese Arbeit können Sie die initSID.ora Datei ändern Parameter hinzufügen, um Ihre Verbindung zu entsprechen. Wenn Sie so vorgehen, können Sie viele verschiedene Datenbanken problemlos über das Gateway hinzufügen und verwalten.

+0

Entschuldigung für die Verzögerung. Es wurde seit Monaten produziert. Wir haben das gelöst, können sich aber ehrlich nicht erinnern, wie? Die Top-Down-Liste Ihrer Lösung ist gut. Danke für dein Besorgnis –