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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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