Accéder à une base Oracle avec SAS/ACCESS to ODBC

Etape 1 - Installation de unixODBC

Pour utiliser le pilote ODBC Oracle dans un environnement Linux, il est nécessaire d'installer un gestionnaire de pilotes approprié. Dans cet exemple, je vais installer unixODBC Cette première étape explique comment installer le gestionnaire de pilotes unixODBC sur un système Linux. Bien-sûr le nom du fichier peut être différent si vous téléchargez une version plus récente. Si c'est le cas adaptez les noms de fichier et de répertoire d'étape ci-après en fonction du nom du fichier téléchargé. Le commandes Linux présentées peuvent variés en fonction du système ou des répertoires, aussi prenez connaissance des informations des fichiers README et INSTALL, inclus dans le package téléchargé, pour identifier les étapes spécifiques à votre pilote. L'installation d'unixODBC nécessitant un accès en écriture à la racine du système de fichiers pour la création des répertoires d'installation, connectez-vous en tant que root (ou utiliser sudo) pour accéder ainsi aux répertoires d'installation. La première étape consiste à télécharger le fichier du gestionnaire de pilotes :
wget ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.5.tar.gz
gunzip unixODBC-2.3.5.tar.gz
tar xvf unixODBC-2.3.5.tar
Maintenant, il vous faut exécuter la commande ci-dessous pour configurer le logiciel et définir le répertoire d'installation :
./configure --prefix=/usr  --sysconfdir=/etc/unixODBC
Troisième étape, compilez le package avec la commande suivante :
make install
Cette étape peut prendre plusieurs minutes.

Etape 2 - Installation du client Oracle et du pilote ODBC

oracle_pilote_odbc_sas_94Pour télécharger Oracle Instant Client, rendez-vous sur le site d'Oracle : Instant Client Downloads for Linux x86-64 Les packages a télécharger sont les suivants :
  • instantclient-basic-linux.x64-12.2.0.1.0 Instant Client Package - Basic: All files required to run OCI, OCCI, and JDBC-OCI applications
  • instantclient-basiclite-linux.x64-12.2.0.1.0 Instant Client Package - Basic Light: Smaller version of the Basic package, with only English error messages and Unicode, ASCII, and Western European character set support
  • instantclient-sqlplus-linux.x64-12.2.0.1.0 Instant Client Package - SQL*Plus: Additional libraries and executable for running SQL*Plus with Instant Client
  • instantclient-odbc-linux.x64-12.2.0.1.0-2 Instant Client Package - ODBC Updated 9/20/2017: Additional libraries for enabling ODBC applications
https://tinyurl.com/oraodbc12-2-0-1 Je vous invite également à vérifier la présence des librairies libaio (Kernel Asynchronous I/O) utilisé par le driver ODBC. Si elles ne sont pas présente sur votre système :
yum install libaio
  libsqora.so.12.1-sas-oracle

 Etape 3 - Configuration des variables d’environnement

L'étape 3 consiste à positionner les variables d’environnements.  Pour que ces variables soient reconnues dans votre session SAS, vous devez les ajouter dans le fichier sasenv_local. Vous trouverez le fichier sasenv_local dans le repertoire SASFoundation/9.4/bin/. Voici les variables à ajouter :
  • LD_LIBRARY_PATH
Vous devez compléter la variable d'environnement LD_LIBRARY_PATH pour y faire figurer le chemin d'accès au pilote ODBC :
export LD_LIBRARY_PATH=/home/sas/instantclient_12_2:$LD_LIBRARY_PATH
  •  ORACLE_HOME
export ORACLE_HOME=/home/sas/instantclient_12_2/
  • ODBCINI
Cette variable indique le chemin d'accès au fichier odbc.ini. Le fichier odbc.ini fournit des informations relatives à la connexion (dsn) à toutes les bases de données. que vous utilisez :
export ODBCINI=/home/sas/SASHOME/ODBC/odbc.ini
  • ODBCINSTINI
Le fichier odbcinst.ini définit des pilotes ODBC :
export ODBCINSTINI=/home/sas/SASHOME/ODBC/odbcinst.ini
  • TNS_ADMIN
Emplacement du fichier tnsnames.ora. L'emplacement par défaut est le répertoire répertoire_Oracle \network\admin
export TNS_ADMIN=/home/sas/instantclient_12_2/
A noter, qu'il peut être aussi nécessaire de positionner d'autres variables, comme NLS_LANG

 Test LD_LIBRARY_PATH

Il est possible de valider la bonne configuration de la variable d'envrionnement LD_LIBRARY_PATH. Après avoir "sourcé" le fichier sasenv_local, exécutez la commande ci-dessous : /mnt/install/SAS/SASHOME/SASFoundation/9.4/sasexe/ ldd sasodb check : libodbc.so => /lib/libodbc.so (0x00007f3c78212000) cd $ORACLE_HOME ldd libsqora.so.12.1 check: libclntsh.so.12.1 => /home/sas/instantclient_12_2/libclntsh.so.12.1 (0x00007ff20bfb5000) libclntshcore.so.12.1 => /home/sas/instantclient_12_2/libclntshcore.so.12.1 (0x00007ff20b9e7000)     dltest /mnt/install/SAS/vertica-client/opt/vertica/lib64/libverticaodbc.so SUCCESS: Loaded /mnt/install/SAS/vertica-client/opt/vertica/lib64/libverticaodbc.so    

Etape 4 - définition du tnsname.ora

    LISTENER_ORCL = (ADDRESS = (PROTOCOL = TCP)(HOST = franih-ora12.ts.sashq-r.openstack.sas.com)(PORT = 1521))     ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = franih-ora12.ts.sashq-r.openstack.sas.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )

Etape 5

odbc.ini [orcl] Description=Connexion ODBC sur la base franih-ora12.ts.sashq-r.openstack.sas.com Driver=/home/sas/instantclient_12_2/libsqora.so.12.1 DSN=ORCL ServerName=ORCL Trace=yes TraceFile=/tmp/odbc_oracle.log Etape 5 Test sqlplus   instantclient_12_2/sqlplus sas/Orion123@orcl   Etape 6 Test isql   Etape 7 Variable d’env dans sasenv_local   Etape 8 Test dans SAS    

Nicolas Housset

Passionné d'informatique, je suis Consultant et expert technique SAS VIYA, également co-fondateur de la société Flexcelite. Spécialisé dans les technologies SAS (Viya, 9.4) et les infrastructures associées (Linux, Hadoop, Azure), ce blog est mon espace pour partager mes mémos techniques et retours d'expérience.