Dans Oracle, les fonctions SQL ST_Geometry et ST_Raster utilisent des bibliothèques partagées accessibles via l'agent de procédure externe Oracle, ou 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 via la structure de procédure externe d'Oracle.
Il est possible d'utiliser ST_Geometry et ST_Raster dans ArcGIS sans configurer le processus extproc 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 des couches de requête d'ArcMap, identifier des entités dans des vues de base de données, versionner des tables contenant des colonnes ST_Raster, supprimer une ligne comprenant une colonne ST_Raster, publier des services d'entités contenant des données ST_Geometry ou exécuter des fonctions SQL à partir de clients SQL si le processus extproc n'est pas configuré.
Si vous utilisez Oracle 11g ou 12c, modifiez le fichier extproc.ora pour appeler les fonctions via la structure de procédure externe d'Oracle. Si vous utilisez Oracle 10g, configurez le processus d'écoute Oracle.
Oracle 11g et 12c
Oracle recommande de configurer le processus extproc en modifiant le fichier extproc.ora, au lieu de configurer le processus d'écoute pour Oracle 11g et 12c. Le fichier extproc.ora se trouve dans le répertoire ORACLE_HOME\hs\admin.
- Faites une copie de sauvegarde du fichier extproc.ora sur le serveur Oracle.
- Ouvrez le fichier extproc.ora et modifiez-le pour qu'il désigne l'emplacement des bibliothèques ST_Geometry (st_shapelib) et/ou ST_Raster.
Dans cet exemple, sur un serveur Windows, la ligne suivante est ajoutée pour désigner la bibliothèque ST_Geometry du dossier mylibraries :
SET EXTPROC_DLLS=ONLY:C:\\mylibraries\\st_shapelib.dll
Si vous utilisez les bibliothèques ST_Geometry et ST_Raster, vous pouvez insérer les entrées correspondantes sur une seule ligne :
SET EXTPROC_DLLS=ONLY:C:\\mylibraries\\st_shapelib.dll;C:\\mylibraries\\libst_raster_ora.dll
Dans cet exemple, sur un serveur Linux ou UNIX, la ligne suivante est ajoutée pour désigner la bibliothèque ST_Geometry du répertoire esrilibs de l'utilisateur, créée sur le serveur Oracle pour stocker la bibliothèque :
SET EXTPROC_DLLS=ONLY:/user/esrilibs/libst_shapelib.so
Si vous utilisez les bibliothèques ST_Geometry et ST_Raster, vous pouvez insérer les entrées correspondantes sur une seule ligne :
SET EXTPROC_DLLS=ONLY:/user/esrilibs/libst_shapelib.so:/user/esrilibs/libst_raster_ora.so
- Enregistrez et fermez le fichier extproc.ora.
- Les clients qui doivent accéder aux bibliothèques (y compris les services Web) doivent se reconnecter à la base de données.
Oracle 10g
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.
- Enregistrez les modifications et fermez le fichier tnsnames.ora.
- 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 et les bibliothèques ST_Geometry et ST_Raster se trouvent dans un dossier appelé gislibs :
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:\gislibs\st_shapelib.dll;C:\gislibs\libst_raster_ora.dll") ) )
Cet exemple illustre une entrée destinée à un serveur Linux ou UNIX sur lequel les bibliothèques ST_Geometry et ST_Raster sont stockées dans le dossier /arcgis/libs :
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=/arcgis/libs/libst_shapelib.so:/arcgis/libs/libst_raster_ora.so") ) )
- Après avoir modifié et enregistré le fichier listener.ora, redémarrez le processus d'écoute d'Oracle.