Question

A qui il peut répondre, Nous avons installé Oracle sur r2 Redhat Enterprise Linux 5.4. Nous essayons de vous connecter à un SQL Server 2005, après l'application de certaines notes ci-dessous l'erreur est le résultat que nous avons obtenu: "Erreur interne ORA-28513 en agent distant hétérogène".


listener.ora est comme ci-dessous:

[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 est comme ci-dessous:

[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 est comme ci-dessous:

[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

Nous avons mis en place un système à dsn Sql Server 2005 nommé 'dg4msql', a choisi le pilote comme 'Sql Server' et serveur comme 'local'

Nous serions heureux d'entendre des idées pour résoudre ce problème,

Était-ce utile?

La solution

Vous semblez être en utilisant la passerelle pour MySQL mis en place plutôt que la passerelle Hétérogène (pour les connexions ODBC). Voici un aperçu du processus

Sur SQL Server créer un utilisateur de base de données et de lui donner accès en lecture à la base de données / tables que vous souhaitez lire via le lien de base de données Oracle.

Dans la maison de passerelle chaque base de données SQL Server auquel vous souhaitez accéder doit avoir un init.ora situé dans $ OH / dg4msql / admin dans la forme initSID.ora où sid est le nom de la base de données à utiliser dans la liaison (par exemple initbob.ora), de manière à créer une

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

Vous devez maintenant ajouter la nouvelle sid aux listener.ora dans la maison de passerelle à l'aide d'une section SID_DESC supplémentaire à l'intérieur du SID_LIST existant, par exemple

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

Vous devriez maintenant arrêter et redémarrer l'auditeur de la passerelle afin que le nouveau sid devient actif. NB un reload ne suffit pas.

Vous devez maintenant ajouter le nouveau sid dans le fichier tnsnames.ora pour l'auditeur de chaque base de données dans laquelle vous allez créer un lien. Vous n'êtes pas obligé de le faire dans la maison de la passerelle, à moins qu'il est aussi une maison de base de données dans laquelle vous allez créer un lien de base de données.

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

NB: L'hôte et le port sont pour la passerelle non pour la base de données SQL Server

Dans chaque base de données qui nécessite un lien vers la base de données MS-SQL, vous devez créer un lien de base de données à votre nouvelle sid passerelle.

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

ms où l'utilisateur et le mot de passe sont-ms l'utilisateur SQL Server vous avez créé dès le début.

Vous pouvez maintenant tester la nouvelle liaison de base de données

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

Une fois que vous avez cela, vous pouvez travailler modifier le fichier initSID.ora pour ajouter des paramètres en fonction de votre connexion. Si vous le faites de cette façon, vous pouvez facilement ajouter et gérer plusieurs bases de données différentes via la passerelle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top