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, identifier des entités dans les vues des bases de données, versionner des tables 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 d'une base de données qui utilisent le type ST_Geometry en tant que service d'entités 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.
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 :
SET EXTPROC_DLLS=ONLY:C:\\mylibraries\\st_shapelib.dll
SET EXTPROC_DLLS=ONLY:C:\\mylibraries\\libst_raster_ora.dll
Si vous utilisez les deux bibliothèques, vous pouvez les placer sur une seule ligne :
SET 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 :
- SID_LIST_LISTENER
Cette étiquette marque le début d'une liste de SID que le processus d'écoute nommé LISTENER (nom du processus d'écoute par défaut) doit gérer.
- SID_LIST et SID_DESC
Les entrées SID_DESC sous l'en-tête SID_LIST définissent des services. La première de la liste gère les requêtes extproc et la seconde les sessions clientes.
- SID_NAME
Sa valeur doit correspondre au SID précisé pour le processus extproc dans le fichier tnsnames.ora.
- ORACLE_HOME
Définit l'emplacement d'Oracle Home pour ce service. Les fichiers du programme extproc se chargent à partir d'un dossier situé sous cet emplacement.
- PROGRAM
Spécifie le nom du fichier exécutable extproc. Ce nom, qui respecte la casse, peut être extproc ou extproc.exe, selon le type de système d'exploitation. Ce fichier se trouve dans le dossier ORACLE_HOME/bin.
- ENVS
Ceci est une liste de variables d'environnement que le processus extproc utilise lors de son exécution. Les éléments de la liste sont séparés par des points-virgules. Cette liste doit comprendre une définition de la variable d'environnement EXTPROC_DLLS et de toute autre variable d'environnement dont le processus extproc a besoin lors de son exécution, ce qui comprend souvent LD_LIBRARY_PATH, SHLIB_PATH ou LIBPATH sous les systèmes UNIX et Linux ou PATH sur les serveurs Windows. La variable path comprend souvent l'emplacement des bibliothèques de géométries et de moteur de projection.
- EXTPROC_DLLS
La variable d'environnement définit une liste de bibliothèques que le processus extproc peut charger et duquel il peut appeler les fonctions directement. Le chemin d'accès au fichier contenant la bibliothèque de formes, qui est nécessaire pour accéder aux types ST_Geometry ou aux vues GDB_ITEMS_VW et GDB_ITEMRELATIONSHIPS_VW à l'aide de SQL, et la bibliothèque st_raster, qui est nécessaire pour accéder au type ST_Raster à l'aide de SQL, doit être spécifié ici.
Les éléments de la liste sont séparés par le signe deux points pour les serveurs Oracle installés sur UNIX et par des points-virgules pour les serveurs Oracle installés sur Windows. Tous les chemins d'accès doivent être absolus et pointer vers des répertoires locaux ou un chemin UNC auquel l'utilisateur de système Oracle peut accéder. Cela signifie également que si vous avez installé un serveur d'applications ArcSDE sur un serveur différent d'Oracle, vous devez copier les bibliothèques de raster et de forme du répertoire bin dans SDEHOME sur le serveur Oracle.
Il n'y a pas de substitution de variable d'environnement.
Les mots-clés facultatifs ANY et ONLY servent à élargir ou restreindre la façon dont extproc utilise les fichiers de bibliothèques. Si vous faites précéder le chemin d'accès par ANY, Oracle peut charger n'importe quelle bibliothèque à partir du chemin d'accès spécifié, et vous n'avez pas à préciser un nom de bibliothèque. Si vous faites précéder le chemin d'accès par ONLY, Oracle utilise uniquement la bibliothèque spécifique que vous indiquez dans le chemin d'accès.
- KEY
La valeur définie pour cette entrée relie ce processus d'écoute à l'entrée de service correspondante dans le fichier tnsnames.ora. Il distingue ce processus d'écoute d'autres processus d'écoute IPC qui peuvent être présents sur le même serveur de base de données. La clé peut être n'importe quel nom abrégé, mais elle doit être identique dans les fichiers listener.ora et tnsnames.ora. La clé respecte la casse.
- Avant de modifier quoi que ce soit, faites des copies de sauvegarde des fichiers tnsnames.ora et listener.ora.
- Ouvrez le fichier tnsnames.ora sur le serveur Oracle.
-
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.
- Ouvrez le fichier listener.ora sur le serveur Oracle.
-
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") ) )
- Après avoir modifié le fichier listener.ora, redémarrez le processus d'écoute d'Oracle.