Plug-in Oracle pour Mapserver dans UbuntuGIS

Mapgears a réalisé un plug-in Oracle pour Mapserver et GDAL/OGR qui simplifie énormément la configuration d'une configuration Mapserver pour Oracle.

Installer le client Oracle

Oracle met à la disposition des organisations un portail regroupant une panoplie d’outils et de tutoriels logiciels Open Source d’Oracle. Grâce à ce portail, il est possible d’installer une version gratuite de la base de données Oracle et le client Oracle XE plus facilement sur un poste Linux.  Par contre, actuellement les packages de ce type d'installation datent de 2006 et il ne s'agit pas de la dernière version du client.  Ça fonctionne, mais l'option manque un peu de rigueur pour monter une infrastructure solide pour une organisation en mode "stable".

Pour permettre la connectivité entre Mapserver et Oracle, je recommande l'installation de la version du client Oracle officiellement supportée:  Oracle InstantClient.  Vous trouverez sur le site Web d'Oracle toutes les versions OS supportées.  Dans cette procédure, j'utilise les sources (dans fichier zip) et non les packages Redhat (rpm).  Pour télécharger les sources officielles, il faudra vous enregistrer sur le site Web d'Oracle et accepter les termes de la licence.  Par la suite, faire l'installation via la méthode suivante :

  • Télécharger les fichiers zip requis pour l'installation de la version Linux x86 InstantClient v 11.2. Les fichiers zip requis seront les suivants :
  1. Instant Client Package - Basic Lite ( instantclient-basic-linux-11.2.0.4.0.zip )
  2. Instant Client Package - SDK ( instantclient-sdk-linux-11.2.0.4.0.zip )
  3. Instant Client Package - SQL*Plus ( instantclient-sqlplus-linux-11.2.0.4.0.zip )
  • Pour installer le client, aucune installation n'est requise.  Il faut simplement dézipper les fichiers sources dans le répertoire de votre choix (/opt/ dans mon cas):
sudo unzip instantclient-sqlplus-linux-11.2.0.4.0.zip -d /opt/
sudo unzip instantclient-basic-linux-11.2.0.4.0.zip -d /opt/
sudo unzip instantclient-sdk-linux-11.2.0.4.0.zip -d /opt/
ls -l /opt/instantclient_11_2/
-rwxrwxr-x 1 root root     22004 Aug 25 11:18 adrci
-rw-rw-r-- 1 root root       437 Aug 25 11:18 BASIC_README
-rwxrwxr-x 1 root root     38461 Aug 25 11:18 genezi
-r-xr-xr-x 1 root root       368 Aug 25 11:18 glogin.sql
-rwxrwxr-x 1 root root  44316855 Aug 25 11:18 libclntsh.so.11.1
-r-xr-xr-x 1 root root   7098468 Aug 25 11:18 libnnz11.so
-rwxrwxr-x 1 root root   1881900 Aug 25 11:18 libocci.so.11.1
-rwxrwxr-x 1 root root 118729922 Aug 25 11:18 libociei.so
-r-xr-xr-x 1 root root    152585 Aug 25 11:18 libocijdbc11.so
-r-xr-xr-x 1 root root   1499831 Aug 25 11:18 libsqlplusic.so
-r-xr-xr-x 1 root root   1216654 Aug 25 11:18 libsqlplus.so
-r--r--r-- 1 root root   2091135 Aug 25 11:18 ojdbc5.jar
-r--r--r-- 1 root root   2739616 Aug 25 11:18 ojdbc6.jar
drwxrwxr-x 4 root root      4096 Aug 25 11:18 sdk
-r-xr-xr-x 1 root root      6913 Aug 25 11:18 sqlplus
-rw-rw-r-- 1 root root       441 Aug 25 11:18 SQLPLUS_README
-rwxrwxr-x 1 root root    160203 Aug 25 11:18 uidrvci
-rw-rw-r-- 1 root root     66779 Aug 25 11:18 xstreams.jar
  • Pour configurer le client par la méthode couramment utilisée par la majorité des organisations, on va créer l'arborescence de répertoires network et y ajouter un fichier tnsnames fourni par le DBA. ( cette étape est optionnelle)
sudo mkdir /opt/instantclient_11_2/network
sudo mkdir /opt/instantclient_11_2/network/admin
sudo vim /opt/instantclient_11_2/network/admin/tnsnames.ora
  • Pour avoir le runtime library path du le Client Oracle pour tous les utilisateurs, il est préférable d’ajouter un fichier de configuration dans le répertoire de chargement de librairie, pour que tous les logiciels puisent y accéder.
sudo vim /etc/ld.so.conf.d/oracle.conf
/opt/instantclient_11_2 ==>ligne à ajouter dans le fichier
sudo ldconfig
  • Validation de connexion direct (sans TNS)
sqlplus [utilisateur]/[mot_passe]@//[nom_server_ou_ip]:1521/[SID]
  • Validation de connexion (avec TNS)
sqlplus [utilisateur]@[SID]

Installer Mapserver et le plugin Oracle

Les instructions de base pour installer le plugin Oracle pour Mapserver sont maintenant documenté sur le Trac UbuntuGIS.
  • 1_ Connecter les packages privés de UbuntuGIS
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:ubuntugis/ppa
sudo apt-get update
  • 2_ Installer Mapserver
sudo apt-get install cgi-mapserver mapserver-bin libmapcache mapcache-cgi mapcache-tools libapache2-mod-mapcache libmsplugin-oracle-src
  • 3_ Activer le plug-in Oracle pour Mapserver.  NOTE 1: on doit créer des liens symboliques avec les librairies requises par le plug-in.  Oracle ne respecte pas la nomenclature et les façons de faire Debian alors on doit s'adapter un peu.  NOTE 2: la variable d'environnement n'est pas requise pour rouler Mapserver une fois le plug-in activé, elle est seulement requise pour l'activation. NOTE 3: Attention, dans mon cas, je me suis retrouvé avec une librairie 11.1 dans un package annoncé 11.2! Je n’ai pas de félicitation à faire ici...
sudo ln -s /opt/instantclient_11_2/sdk/include/ /opt/instantclient_11_2/include

sudo ln -s /opt/instantclient_11_2/libocci.so.11.1 /opt/instantclient_11_2/libocci.so

sudo ln -s /opt/instantclient_11_2/libclntsh.so.11.1 /opt/instantclient_11_2/libclntsh.so

sudo ORACLE_HOME=/opt/instantclient_11_2 mapserver-oracle-build yes
  • 4_ Par la suite utiliser un répertoire relatif dans le paramètre PLUGIN du LAYER ou paramétriser le répertoire dans l'entête du mapfile avec "CONFIG MS_PLUGIN_DIR"
LAYER
  ...
  CONNECTIONTYPE PLUGIN
  PLUGIN "/usr/lib/msplugins/libmsplugin_oracle.so"
  DATA "GEOM FROM ZZ_EOLIENNES_P USING UNIQUE EOLIENNES_ID SRID 4326"
  ...
END
Note: jeu de données test

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Current month ye@r day *