Configuration du processus extproc d'Oracle pour accéder à la géodatabase avec SQL

Les fonctions SQL de ST_Geometry et ST_Raster dans Oracle font appel aux bibliothèques partagées accessibles via l'agent de procédure externe Oracle, extproc. Pour utiliser SQL avec ST_Geometry ou ST_Raster, ou pour accéder aux colonnes XML ArcSDE dans les vues GDB_ITEMS_VW et GDB_ITEMRELATIONSHIPS_VW, Oracle doit être en mesure d'accéder aux bibliothèques. Par conséquent, les bibliothèques doivent se trouver sur le serveur Oracle et elles doivent être appelées par le biais de la structure de procédure externe d'Oracle.

Il est possible d'utiliser ST_Geometry et ST_Raster dans ArcGIS sans configurer le processus d'écoute d'Oracle. Toutefois, vous ne bénéficierez pas de toutes les fonctionnalités des clients ArcGIS et d'aucune fonctionnalité des clients SQL, comme SQL*Plus. Par exemple, vous ne pouvez pas utiliser de fonctions SQL sur les colonnes ST_Geometry dans les couches de requête des tables ArcMap ou de version contenant des colonnes ST_Raster, supprimer une ligne incluant une colonne ST_Raster, ou exécuter des fonctions SQL à partir de clients SQL si le processus d'écoute d'Oracle n'est pas configuré. En outre, vous ne pouvez pas publier les données qui utilisent le type ST_Geometry en tant que service d'entités sur un serveur de données spatiales si vous ne configurez pas le processus d'écoute Oracle.

L'installation de ST_Raster est facultative. Reportez-vous à la rubrique Installation du type ST_Raster dans Oracle pour en savoir plus.

RemarqueRemarque :

Si votre base de données Oracle est installée sur un serveur Windows, mais que vous n'ayez pas de serveur d'application ArcSDE installé, il vous faudra peut-être installer le paquetage distribuable Microsoft Visual C++ 2008 SP1 (x64). Si le paquetage distribuable Microsoft Visual C++ 2008 SP1 (x64) n'est pas présent sur le serveur Oracle, téléchargez-le depuis le site de Microsoft et installez-le.

Si vous utilisez Oracle 11g, modifiez le fichier extproc.ora pour appeler les fonctions par le biais de la structure de procédure externe d'Oracle. Si vous utilisez Oracle 10g, configurez le processus d'écoute Oracle.

Oracle 11g

Oracle recommande de configurer EXTPROC en modifiant le fichier extproc.ora, au lieu de configurer le processus d'écoute pour Oracle 11g. Le fichier extproc.ora se trouve dans le répertoire ORACLE_HOME\hs\admin.

Une fois que vous avez déplacé la bibliothèque ST_Geometry (st_shapelib) et/ou ST_Raster vers votre serveur Oracle, modifiez le fichier extproc.ora afin de pointer l'emplacement des bibliothèques.

Sur un serveur Windows, ajoutez des lignes similaires à celles ci-dessous :

EXTPROC_DLLS=ONLY:C:\\mylibraries\\st_shapelib.dll

EXTPROC_DLLS=ONLY:C:\\mylibraries\\libst_raster_ora.dll

Si vous utilisez les deux bibliothèques, vous pouvez les placer sur une seule ligne :

EXTPROC_DLLS=ONLY:C:\\mylibraries\\st_shapelib.dll;C:\\mylibraries\\libst_raster_ora.dll

Dans ces exemples, les bibliothèques sont placées dans un dossier nommé mylibrairies, créé sur le serveur Oracle pour les stocker.

Sur un serveur Linux ou UNIX :

SET EXTPROC_DLLS=ONLY:/user/esrilibs/libst_shapelib.so

SET EXTPROC_DLLS=ONLY:/user/esrilibs/libst_raster_ora.so

Si vous utilisez les deux bibliothèques, vous pouvez les placer sur une seule ligne :

SET EXTPROC_DLLS=ONLY:/user/esrilibs/libst_shapelib.so:/user/esrilibs/libst_raster_ora.so

Dans ces exemples, les bibliothèques sont placées dans le répertoire esrilibs de l'utilisateur, créé sur le serveur Oracle pour les stocker.

Oracle 10g

Les processus d'écoute d'Oracle sont faciles à configurer. Par exemple, plusieurs processus d'écoute peuvent être associés à votre base de données, chacun pouvant gérer plusieurs types de demandes de service. Il s'agit d'une rubrique complexe, dont les nombreuses variations ne sont pas abordées dans ce document. Pour obtenir plus d'informations sur la configuration de vos processus d'écoute, il est important de consulter le manuel Oracle Database Net Services Administrator's Guide.

Le fait d'indiquer au processus extproc où trouver les bibliothèques partagées est l'aspect le plus important de la configuration du processus d'écoute. Vous devez modifier la configuration du processus d'écoute pour préciser l'emplacement des bibliothèques partagées et redémarrer le processus d'écoute d'Oracle pour que les changements apportés à la configuration soient effectifs.

Deux fichiers de configuration standard du processus d'écoute d'Oracle sont impliqués : tnsnames.ora et listener.ora. Ces fichiers se trouvent généralement dans ORACLE_HOME/net/admin. Ce document présente les paramètres de configuration nécessaires.

Il existe plusieurs façons de gérer les paramètres. Vous pouvez modifier les fichiers de texte grâce à un éditeur, Oracle Net Manager ou l'assistant de configuration Oracle Net. Oracle propose une documentation relative à la façon de configurer le processus d'écoute. Pour plus d'informations, consultez le manuel Oracle Database Net Services Administrator's Guide.

Le fichier tnsnames.ora contient un répertoire de services de bases de données connus. Ce fichier peut définir des services sur la base de données locale ou sur des serveurs distants. Une entrée est destinée spécifiquement au serveur de base de données local, pour qu'il utilise le protocole IPC (interprocess communications) pour envoyer des appels de fonction au processus extproc. Cette entrée est étiquetée EXTPROC_CONNECTION_DATA. Vous pouvez modifier les valeurs Key et SID sous cette entrée.

Ces éléments servent à relier cette entrée aux informations correspondantes dans le fichier listener.ora. La clé peut être n'importe quel nom abrégé, mais elle doit être identique dans les fichiers listener.ora et tnsnames.ora. Ces valeurs respectent la casse. Elles sont utilisées uniquement par le processus d'écoute et non par les utilisateurs ni par les applications.

Le fichier listener.ora décrit certains (pas nécessairement tous) services pour lesquels le processus d'écoute guette les requêtes.

Les valeurs qui peuvent être modifiées dans ce fichier sont les suivantes :

Etapes :
  1. Avant de modifier quoi que ce soit, faites des copies de sauvegarde des fichiers tnsnames.ora et listener.ora.
  2. Ouvrez le fichier tnsnames.ora sur le serveur Oracle.
  3. Modifiez les valeurs Key et SID sous EXTPROC_CONNECTION_DATA dans le fichier tnsnames.ora.

    EXTPROC_CONNECTION_DATA =
    (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = IPC)(Key = EXTPROC1))
        )
        (CONNECT_DATA =
          (SID = PLSExtProc)
          (PRESENTATION = RO)
        )
    )

    Cette entrée doit toujours être étiquetée EXTPROC_CONNECTION_DATA. Cette entrée permet au serveur de base de données d'utiliser le protocole IPC (interprocess communications) pour envoyer des appels de fonction au processus extproc.

  4. Ouvrez le fichier listener.ora sur le serveur Oracle.
  5. Modifiez les entrées nécessaires pour configurer les services à partir desquels le processus d'écoute acceptera des demandes.

    Ce premier exemple s'applique à un système d'exploitation Windows sur lequel le serveur d'applications ArcSDE et Oracle sont tous les deux installés :

    LISTENER =
    (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    (ADDRESS = (PROTOCOL = TCP)(HOST = svr1.dmn1.com)(PORT = 1521))
        )
     )
    
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
          (PROGRAM = extproc)
             (ENVS="EXTPROC_DLLS=C:\ArcSDE\sdeexe\bin\st_shapelib.dll;c:\ArcSDE\sdeexe\bin\libst_raster_ora.dll")
     )  
    )

    Cet exemple montre une entrée qui s'applique à un serveur Linux ou UNIX sur lequel le serveur d'applications ArcSDE et Oracle sont tous les deux installés :

    LISTENER =
    (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    (ADDRESS = (PROTOCOL = TCP)(HOST = svr1.dmn1.com)(PORT = 1521))
        )
    )
    
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
    (ORACLE_HOME = /servit/oracle/product/10.2.0/db_1)
          (PROGRAM = extproc)
             (ENVS="EXTPROC_DLLS=/servit/ArcSDE/sdeexe/lib/libst_shapelib.so:/servit/ArcSDE/sdeexe/lib/libst_raster_ora.so")
        )
       )

  6. Après avoir modifié le fichier listener.ora, redémarrez le processus d'écoute d'Oracle.
9/13/2013