Bonjour à tous,

J’essaie de mettre en place la fonction dblink entre une base Oracle 10.2.0.4. et un mariadb 10 sur un environ Redhat 5 (oui c'est pas récent).

J'ai suivi cette doc http://www.dbasupports.com/2014/01/c...r-through.html mais au lieu de passer dg4odbc j'utilise hsodbc.

La connexion avec isql depuis mon serveur oracle vers la base mysql est ok, le tnsping est ok mais lorsque je souhaite faire un select depuis sqlplus vers mariadb j'obtiens l'erreur

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
SQL> select * from test@myodbc;
select * from test@myodbc
                   *
ERROR at line 1:
ORA-28545: error diagnosed by Net8 when connecting to an agent
Unable to retrieve text of NETWORK/NCR message 65535
ORA-02063: preceding 2 lines from MYODBC
Dans les log Oracle j'ai
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
22-JUN-2021 16:11:08 * (CONNECT_DATA=(SID=myodbc)(CID=(PROGRAM=)(HOST=host)(USER=oracle))) * (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=43452)) * establish * myodbc * 12518
TNS-12518: TNS:listener could not hand off client connection
 TNS-12547: TNS:lost contact
  TNS-12560: TNS:protocol adapter error
   TNS-00517: Lost contact
    Linux Error: 32: Broken pipe
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
$ isql myodbc
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> show tables;
+--------------------------------------------------------------------------+
| Tables_in_mydb                                                   |
+--------------------------------------------------------------------------+
| test                                                                     |
+--------------------------------------------------------------------------+
SQLRowCount returns 1
1 rows fetched
listener.ora
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
SID_LIST_LISTENER =
(
[...]
    (SID_DESC =
       (SID_NAME = myodbc)
       (ORACLE_HOME = /ado/app/oracle/product/10.2.0/dbhome_1)
       (PROGRAM = hsodbc)
       (ENVS = LD_LIBRARY_PATH = /ado/app/oracle/product/10.2.0/dbhome_1/lib32)
     )
   )
tnsnames.ora
Code : Sélectionner tout - Visualiser dans une fenêtre à part
myodbc=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SID=myodbc))(HS=OK))
/home/oracle/odbc.ini
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
[myodbc]
driver = /usr/lib64/libmyodbc5w.so
database = mydb
port = 3306
server = 192.168.xxx.xxx
UID = xxxx
PWD = yyyy
CHARSET = latin1
TRACEFILE = /tmp/myodbc.trc
TRACE = OFF
$ORACLE_HOME/hs/admin/inihsmyodbc.ora
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
HS_FDS_CONNECT_INFO = myodbc
HS_FDS_TRACE_FILE_NAME = /tmp/myodbc.trc
HS_FDS_TRACE_LEVEL = 0
HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so
 
#
# ODBC specific environment variables
#
set ODBCINI=/home/oracle/.odbc.ini
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SQL> create public database link myodbc connect to "xxxx" identified by "yyyy" using 'myodbc';
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
$ lsnrctl status
 
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 22-JUN-2021 16:21:42
 
Copyright (c) 1991, 2007, Oracle.  All rights reserved.
 
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.4.0 - Production
Start Date                22-JUN-2021 16:08:55
Uptime                    0 days 0 hr. 12 min. 46 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /ado/app/oracle/product/10.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /ado/app/oracle/product/10.2.0/dbhome_1/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Services Summary...
[...]
Service "myodbc" has 1 instance(s).
  Instance "myodbc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
Bien sûr à chaque modification je relance le listener
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
lsnrctl stop
lsnrctl start
Je ne suis pas très à l'aise avec Oracle et je n'arrive pas à trouver la cause du problème.
Si vous avez une piste je suis preneur

Merci.