Source

https://wiki.unimas.my/unimaswiki/bin/view/HOW-TO%2C+Tutorial+%26+User+Manual/How+To+Install+Mariadb+CONNECT+engine+with+Oracle+12c+ODBC+in+Ubuntu+14.04+64-bit

Introduction

Les utilisateurs de bases de données Oracle peuvent être familiers avec des liaisons de bases de données qui permettent de récupérer des données de bases de données distantes directement de la base de données locale. Malheureusement cela ne fonctionne qu’avec les bases de données Oracle.

Ce tutoriel va montrer les étapes nécessaires pour permettre à un serveur MariaDB de se connecter à une base de données Oracle 12c distante par le moteur CONNECT. Cela permettra aux données de la base de données Oracle d’être interrogées directement depuis MariaDB comme une table locale, à l’aide d’un lien de base de données.

Note : A ce jour, le moteur CONNECT ne permet que des requêtes SELECT sur la base de données distante. Le moteur est toujours en évolution et supportera d’autres opérations telles que INSERT, UPDATE et DELETE dans le futur.

Configuration

– Linux Debian 10, 64-bit
– MariaDB 64-bit
– Oracle Instant Client 21.6 64-bit (Basic, SDK/devel, odbc, sqlplus)
– unixodbc 64bit

Etape 1 : Installer MariaDB-Server

Si le serveur MariaDB n’est pas déjà installé, installez le. Un article sur ce sujet par exemple ici :

https://www.malekal.com/installer-mysql-mariadb-sur-debian-10/

Etape 2 : Installer Oracle Instant Client

Les modules nécessaires peuvent être téléchargés depuis le site Oracle, ici :

https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html

Après l’installation, définissez LD_LIBRARY_PATH avec cette commande :

$ sudo nano /etc/ld.so.conf.d/oracle-instantclient.conf

Et indiquez le dossier où vous avez déposé votre InstantClient Oracle :

/usr/lib/oracle/21.6/client64/lib

Puis lancez ldconfig :

$ sudo ldconfig

Etape 3 : Installer unixodbc

Ouvrez votre terminal et lancez cette commande :

$ sudo apt install unixodbc

Vérifiez que le 64-bit unixodbc correct est installé :

jrullier@kodachi:~$ which isql
/usr/bin/isql
jrullier@kodachi:~$ file /usr/bin/isql
/usr/bin/isql: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=50b290829ba8bea725ee65ad9b2973326f6def71, stripped
jrullier@kodachi:~$

Si vous avez installé le correct unixodbc, la réponse doit contenir :

ELF 64-bit LSB etc….

Sinon, assurez-vous de purger le diver unixodbc et ensuite lancez sudo apt-get autoremove pour être sûr que le système est propre de toutes dépendances du précédent unixodbc. Regardez pour plus de détails dans la section « Dépannage » ci-dessous.

Etape 4 : Installer le moteur CONNECT MariaDB

Ouvrez votre terminal et lancez cette commande :

$ sudo apt install mariadb-connect-engine-10.0

Installer le client ODBC oracle

Récupérer le package ODBC du site Oracle ici:

https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html

Vous pouvez aussi le télécharger directement depuis votre Linux à l’aide de la commande wget :

$ wget https://download.oracle.com/otn_software/linux/instantclient/216000/instantclient-odbc-linux.x64-21.6.0.0.0dbru.zip

Dézippez le fichier, et copiez le contenu dans le sous-dossier lib du client Oracle :

Etape 5 : Configurer la connexion ODBC

Pour configurer la connexion ODBC, vous allez devoir éditer 2 fichiers : /etc/odbc.ini et /etc/odbcinst.ini.

D’abord configurez odbc.ini, par exemple avec l’éditeur nano

$ sudo nano /etc/odbc.ini

Et ajoutez ces ligne dans le fichier :

[MYORACLEDSN]
Application Attributes = T
Attributes = W
BatchAutocommitMode = IfAllSuccessful
CloseCursor = F
DisableDPM = F
DisableMTS = T
Driver = Oracle
EXECSchemaOpt =
EXECSyntax = T
Failover = T
FailoverDelay = 10
FailoverRetryCount = 10
FetchBufferSize = 64000
ForceWCHAR = F
Lobs = T
Longs = T
MetadataIdDefault = F
QueryTimeout = T
ResultSets = T
ServerName = //<oracledbIPorDomainName>:1521/<SID>
SQLGetData extensions = F
Translation DLL =
Translation Option = 0
UserName = <username to oracle dbase>
Password = <password for above username>

Adaptez les valeurs ServerName, UserName et Password ci-dessus selon votre installation Oracle.

Après cela configurez odbcinst.ini par exemple avec l’éditeur nano :

sudo nano /etc/odbcinst.ini

Et ajoutez ces lignes dans le fichier :

[Oracle]
Description = Oracle ODBC Connection
Driver = /usr/lib/oracle/12.1/client64/lib/libsqora.so.12.1
Setup =
FileUsage =
CPTimeout =
CPReuse =

Etape 6 : Testez votre connexion ODBC

Vérifiez la connexion ODBC en tapant cette commande :

$ isql -v MYORACLEDSN

ou

$ isql MYORACLEDSN <username> <password>

Vous obtiendrez un message « Connected! » si la connexion ODBC est réussie.

Etape 7 : Créez votre table CONNECT

Installez le moteur de base de données « CONNECT » :

$ sudo apt-get install mariadb-plugin-connect

1. Ouvrez votre terminal, et connectez-vous à MariaDB :

$ mysql -u root -p

2. Maintenant créons une table avec le moteur CONNECT et le type ODBC avec le nom de la table Oracle que nous voulons rattacher par exemple ici une table nommée « HOLX_SSI_LABEL_V« . nous allons faire pointer cette table vers la table « HOLX_SSI_LABEL_V » table de Oracle :

Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.0.11-MariaDB-log MariaDB Server
Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
MariaDB [(none)]>
MariaDB [test]> MariaDB [ssi]> CREATE TABLE HOLX_SSI_LABEL_V ENGINE=CONNECT TABLE_TYPE=ODBC DBNAME=APPSRO CONNECTION=’DSN=MYORACLEDSN;UID=AxxxxxRO;PWD=hDxxxxn’;
Query OK, 0 rows affected (22.161 sec)

3. Félicitations ! Vous devriez maintenant pouvoir lancer des requêtes SELECT sur la table TABLE HOLX_SSI_LABEL_V qui est actuellement directement liée à la table TABLE HOLX_SSI_LABEL_V de la base de données Oracle :

MariaDB [ssi]> SELECT ITEM_NO FROM HOLX_SSI_LABEL_V LIMIT 5;
+----------+
| ITEM_NO  |
+----------+
| SFP95100 |
| SFP95100 |
| SFP95100 |
| SFP95100 |
| SFP95100 |
+----------+
5 rows in set (3.981 sec)

MariaDB [ssi]>

Dépannage

Si vous lancez la commande $ isql -v ifas et que vous obtenez un message comme celui-ci :

[01000][unixODBC][Driver Manager]Can’t open lib ‘/usr/lib/oracle/12.1/client64/lib/libsqora.so.12.1’ : file not found

Cela signifie que vous êtes dans l’un de ces 2 cas :

A. Vous avez installé le mauvais unixodbc (32 bit)

OU

B. libsqora.so.12.1 is missing some of the dependency files

Pour rectifier la situation A :

1. Supprimez le unixodbc actuel

$ sudo apt-get purge unixodbc:i386sudo apt-get autoremove

2. Réinstallez unixodbc

$ sudo apt install unixodbc

3. Pour vérifier que vous avez installé la bonne version :

$ which isqlfile <the output above>

La réponse devrait ressembler à ceci :

ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=62f4ed55b29f0d9ad136122448b672d7725ea01f, stripped

Pour rectifier la situation B :

Pour vérifier quel fichier de dépendance est manquant, tapez ceci :

ldd /usr/lib/oracle/12.1/client64/lib/libsqora.so.12.1′

Vous obtiendrez une réponse similaire à cela :

linux-vdso.so.1 => (0x00007fff64727000)libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc607792000)libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc60748c000)libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc60726d000)libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007fc607053000)librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fc606e4b000)libclntsh.so.12.1 => /usr/lib/oracle/12.1/client64/lib/libclntsh.so.12.1 (0x00007fc60415d000)libodbcinst.so.2 => not foundlibc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc603d97000) /lib64/ld-linux-x86-64.so.2 (0x00007fc607e0a000)libnnz12.so => /usr/lib/oracle/12.1/client64/lib/libnnz12.so (0x00007fc603680000)libons.so => /usr/lib/oracle/12.1/client64/lib/libons.so (0x00007fc60343c000)libaio.so.1 => /lib/x86_64-linux-gnu/libaio.so.1 (0x00007fc60323a000)libclntshcore.so.12.1 => /usr/lib/oracle/12.1/client64/lib/libclntshcore.so.12.1 (0x00007fc602ce9000)

dans cet exemple libodbcinst.so.2 est manquant. La plupart du temps la library existe actuellement sur l’OS, mais est installée au mauvais endroit. Ensuite, cherchons le fichier :

$ sudo updatedb
$ locate libodbcinst

Output :

/usr/lib/x86_64-linux-gnu/libodbcinst.so.1/usr/lib/x86_64-linux-gnu/libodbcinst.so.1.0.0

Yup, the file is actually installed but in a wrong place!. To rectify it just create a symlink in /usr/lib :

$ cd /usr/lib
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libodbcinst.so.1 libodbcinst.so.2

C’est tout ! Testez à nouveau votre connexion ODBC en tapant :

$ isql -v MYORACLEDSN

Il devrait vous être demandé le login et le mot de passe cette fois-ci. Bonne chance !

Leave a Reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Blue Captcha Image
Refresh

*

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.