Bonjour,
Je me permet de soliciter votre aide pour la mise en place d'un DbLink entre une base Oracle 10g et une base MySql
Voici l'environnement :
Base oracle :
Serveur W2K3
Oracle 10gr1
Nom du serveur : w2k3ag2009
Base : AG2009
Base MySql
Serveur Ubuntu
MySql 5.1
Nom du serveur : lnx64bdd
Nom de la base cible : agdi
Voici ce que j'ai mis en place :
Sur le serveur lnx64bdd
1 2 3 4 5 6 7 8 9 10 11
| LNX64BDD:/etc/mysql$ mysql -u root -p
mysql> create user ODBC identified by 'ODBC';
Query OK, 0 rows affected (0.08 sec)
mysql> grant all privileges on *.* to ODBC identified by 'ODBC' with grant option;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.04 sec) |
Sur le serveur w2k3ag2009
Installation du connecteur ODBC MySql 5.1.7 avec le patch corrigeant le problème de modification/suppression de DSN
Création d'une entrée DSN Système :
1 2 3 4 5 6
| nom : ezpublish
TCP/IP Server : (Adresse ip LNX64BDD)
Port : 3306
user : ODBC
Password : ODBC
database : agdi |
Si je teste la connexion, pas de soucis.
Création dans E:\oracle\product\10.2.0\db_1\hs\admin du fichier initezpublish.ora
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| # This is a sample agent init file that contains the HS parameters that are
# needed for an ODBC Agent.
#
# HS init parameters
#
HS_FDS_CONNECT_INFO = ezpublish
HS_FDS_TRACE_LEVEL = off
HS_NLS_DATE_LANGUAGE ='DD-MM-YYYY'
HS_NLS_DATE_FORMAT ='DD-MM-YYYY'
#
# Environment variables required for the non-Oracle system
#
#set <envvar>=<value> |
Création dans le listener d'une entrée pour hsodbc :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| # listener.ora Network Configuration File: E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = E:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ag2009)
(ORACLE_HOME = e:\oracle\product\10.2.0)
(SID_NAME = ag2009)
)
(SID_DESC =
(PROGRAM = hsodbc)
(ORACLE_HOME = e:\oracle\product\10.2.0)
(SID_NAME = ezpublish)
)
)
LISTENER =
(DESCRIPTION_LIST=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = W2K3AG2009)(PORT = 1521))
)
) |
Création d'une entrée dans le TNSNAMES.ORA :
1 2 3 4 5 6 7 8 9 10
| EZPUBLISH =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = W2K3AG2009)(PORT = 1521))
)
(CONNECT_DATA =
(SID = EZPUBLISH)
)
(HS=OK)
) |
Test tnsping :
1 2 3 4
| Adaptateur TNSNAMES utilisÚ pour la rÚsolution de l'alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = W2K3AG2009)(PORT = 1521))) (CONNECT_DATA = (SID = EZPUBLISH)) (HS=OK))
OK (10 msec) |
Je créé un DBLINK dans la base oracle hébergée par le serveur W2K3AG2009 :
1 2 3 4
| CREATE PUBLIC DATABASE LINK EZPUBLISH
CONNECT TO ODBC
IDENTIFIED BY "ODBC"
USING 'EZPUBLISH'; |
Si je regarde les tables présentes sur la base mysql agdi, j'ai cela :
1 2 3 4 5 6 7 8 9 10 11 12
| mysql> show tables;
+---------------------+
| Tables_in_agdi |
+---------------------+
| dossier |
| echeance |
| interloctr |
| morale |
| physique |
| piece |
+---------------------+
6 rows in set (0.00 sec) |
Quand je teste une requête sur une table distante j'ai cette erreur suivante :
1 2 3 4
| SQL> select count(*) from dossier@ezpublish;
ORA-28545: erreur dÚtectÚe par Net8 lors de la connexion Ó un agent
Unable to retrieve text of NETWORK/NCR message 65535
ORA-02063: prÚcÚdant 2 lines de EZPUBLISH |
En faisant quelques recherches j'ai compris que c'était un problème de paramétrage sur les différents fichiers modifiés sur le serveur W2K3, mais impossible de voir où elle pourrait être. Si quelqu'un a déjà un peu pratiqué le dblink vers MySql et voit de suite ce qui ne me saute pas aux yeux, cela me serait d'une grande aide !
Merci
Partager