Configuration du processus d'écoute 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 le processus d'écoute d'Oracle doit être configuré de manière à appeler les fonctions dans ces bibliothèques 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 ArcSDE 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é.
L'installation de ST_Raster est facultative. Reportez-vous à la rubrique Installation du type ST_Raster dans Oracle pour en savoir plus.
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 pris en compte.
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 services (et pas nécessairement tous) 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 qui contient la bibliothèque ST_SHAPELIB (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 LIBST_RASTER (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é ArcSDE sur un serveur différent d'Oracle, vous devez copier les bibliothèques de raster et de forme sur le serveur Oracle. Reportez-vous à la rubrique Installation d'Oracle et d'ArcSDE sur des serveurs distincts pour plus d'informations.
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 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 (à l'exception d'IBM AIX) sur lequel 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") ) )
Cet exemple montre une entrée qui s'applique à ArcSDE pour Oracle sur IBM AIX.
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_64.so:/servit/ArcSDE/sdeexe/lib/libst_raster_ora_64.so") ) )
- Après avoir modifié le fichier listener.ora, redémarrez le processus d'écoute d'Oracle.