Domanda

A chi può rispondere, Abbiamo installato Oracle 11g R2 su un RedHat Enterprise Linux 5.4. Stiamo cercando di connettersi a uno SQL Server 2005, dopo l'applicazione delle note l'errore sotto è il risultato che abbiamo ottenuto: "ORA-28513 errore interno agente remoto eterogeneo".


listener.ora è come qui sotto:

[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 è come qui sotto:

[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 è come qui sotto:

[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

Abbiamo predisposto un DSN di sistema in SQL Server 2005 denominata 'dg4msql', ha scelto il driver come 'Sql Server' e server come 'locale'

sarà felice di ascoltare tutte le idee per risolvere questo problema,

È stato utile?

Soluzione

Sembra che tu stia utilizzando il gateway per MySQL set-up piuttosto che l'eterogeneo Gateway (per le connessioni ODBC). Ecco una panoramica del processo

In SQL Server creare un utente del database e dare l'accesso in lettura al database / tabelle che si desidera leggere attraverso il link database Oracle.

Nella Home Gateway ogni database di SQL Server che si desidera l'accesso dovrebbe avere un init.ora situato in $ OH / dg4msql / admin nel initSID.ora modulo in cui sid è il nome del il database da utilizzare nel collegamento (ad esempio initbob.ora), in modo da creare un

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

È necessario ora aggiungere il nuovo sid alle listener.ora in casa gateway che utilizza una sezione aggiuntiva SID_DESC all'interno del SID_LIST esistente, ad esempio

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

Si dovrebbe arrestare e riavviare l'ascoltatore gateway in modo che la nuova SID diventa attivo. NB una ricarica non è sufficiente.

È necessario ora aggiungere il nuovo SID nel file tnsnames.ora per l'ascoltatore di ogni database in cui verrà creato un collegamento. Non è necessario farlo in casa porta a meno che non è anche una casa di database in cui verrà creato un collegamento a database.

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

NB: L'host e la porta sono per il gateway non per il database di SQL Server

In ogni database che richiede un collegamento al database MS-SQL è necessario creare un database link al tuo nuovo sid gateway.

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

dove ms-utente e la password sono ms-utente di SQL Server si è creato fin dall'inizio.

Ora è possibile testare il nuovo collegamento di database

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

Una volta che hai questo lavoro è possibile modificare il file initSID.ora per aggiungere parametri per soddisfare il vostro collegamento. Se si fa in questo modo si possono facilmente aggiungere e gestire molti diversi database attraverso il gateway.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top