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
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
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 |
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
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
myodbc=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SID=myodbc))(HS=OK))
/home/oracle/odbc.ini
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
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 |
SQL> create public database link myodbc connect to "xxxx" identified by "yyyy" using 'myodbc';
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
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.
Partager