Konfigurieren von Oracle extproc für den Zugriff auf die Geodatabase mit SQL
Die SQL-Funktionen "ST_Geometry" und "ST_Raster" verwenden gemeinsame Bibliotheken, auf die Sie über den externen Verfahrensagenten "extproc" von Oracle zugreifen können. Für die Verwendung von SQL mit ST_Geometry oder ST_Raster oder den Zugriff auf die ArcSDE-XML-Spalten in den Ansichten GDB_ITEMS_VW und GDB_ITEMRELATIONSHIPS_VW muss Oracle in der Lage sein, auf die Bibliotheken zuzugreifen. Die Bibliotheken müssen daher auf dem Oracle-Server vorhanden sein und durch die externe Verfahrensumgebung von Oracle aufgerufen werden.
Sie können "ST_Geometry" und "ST_Raster" in ArcGIS verwenden, ohne den Oracle-Listener einzurichten. Ihnen stehen jedoch nicht alle Funktionen von ArcGIS-Clients und keine Funktionen von SQL-Clients wie beispielsweise SQL*Plus zur Verfügung. Sie können z. B. keine SQL-Funktionen für ST_Geometry-Spalten in Abfrage-Layern in ArcMap und Versionstabellen mit ST_Raster-Spalten verwenden, Sie können keine Zeile löschen, die eine ST_Raster-Spalte beinhaltet, bzw. SQL-Funktionen von SQL-Clients ausführen, wenn der Oracle-Listener nicht konfiguriert wird. Darüber hinaus können Sie keine Daten mit einem räumlichen Datenserver veröffentlichen, die den Typ ST_Geometry als Feature-Service verwenden, wenn Sie den Oracle-Listener nicht konfigurieren.
Die Installation von "ST_Raster" ist optional. Anweisungen finden Sie unter Installieren des ST_Raster-Typs unter Oracle.
Wenn die Oracle-Datenbank auf einem Windows-Server installiert ist, der ArcSDE-Anwendungsserver jedoch nicht installiert ist, müssen Sie möglicherweise Microsoft Visual C++ 2008 SP1 Redistributable Package (x64) installieren. Wenn Microsoft Visual C++ 2008 SP1 Redistributable Package (x64) auf dem Oracle-Server nicht verfügbar ist, laden Sie das Paket von der Microsoft-Site herunter, und installieren Sie es.
Wenn Sie Oracle 11g verwenden, bearbeiten Sie die Datei "extproc.ora", um Funktionen durch die externe Verfahrensumgebung von Oracle aufzurufen. Wenn Sie Oracle 10g verwenden, konfigurieren Sie den Oracle-Listener.
Oracle 11g
Oracle empfiehlt für die Konfiguration von EXTPROC, die Datei "extproc.ora" zu ändern, statt den Listener für Oracle 11g zu konfigurieren. Die Datei "extproc.ora" befindet sich im Verzeichnis "ORACLE_HOME\hs\admin".
Nachdem Sie die ST_Geometry- (st_shapelib) und/oder ST_Raster-Bibliothek auf den Oracle-Server verschoben haben, ändern Sie die Datei "extproc.ora", damit sie auf den Speicherort der Bibliotheken verweist.
Auf einem Windows-Server fügen Sie Zeilen hinzu, die den folgenden Zeilen ähneln:
EXTPROC_DLLS=ONLY:C:\\mylibraries\\st_shapelib.dll
EXTPROC_DLLS=ONLY:C:\\mylibraries\\libst_raster_ora.dll
Wenn Sie beide Bibliotheken verwenden, können Sie sie in einer Zeile platzieren:
EXTPROC_DLLS=ONLY:C:\\mylibraries\\st_shapelib.dll;C:\\mylibraries\\libst_raster_ora.dll
In diesen Beispielen werden die Bibliotheken in einem Ordner mit der Bezeichnung "mylibraries" platziert, der auf dem Oracle-Server zum Speichern der Bibliotheken erstellt wurde.
Auf einem Linux- oder UNIX-Server:
SET EXTPROC_DLLS=ONLY:/user/esrilibs/libst_shapelib.so
SET EXTPROC_DLLS=ONLY:/user/esrilibs/libst_raster_ora.so
Wenn Sie beide Bibliotheken verwenden, können Sie sie in einer Zeile platzieren:
SET EXTPROC_DLLS=ONLY:/user/esrilibs/libst_shapelib.so:/user/esrilibs/libst_raster_ora.so
In diesen Beispielen werden die Bibliotheken im Benutzerverzeichnis "esrilibs" platziert, das auf dem Oracle-Server zum Speichern der Bibliotheken erstellt wurde.
Oracle 10g
Oracle-Listener sind hochgradig konfigurierbar. Sie können beispielsweise über mehrere Listener verfügen, die Ihrer Datenbank zugewiesen sind, und jeder Listener kann wiederum mehrere Arten an Service-Anforderungen verwalten. Dies ist ein komplexes Thema, und die unterschiedlichsten Variationen können nicht alle in diesem Dokument besprochen werden. Lesen Sie daher unbedingt das Handbuch Oracle Database Net Services Administrator's Guide, um weitere Informationen zur Konfiguration der Listener zu erhalten.
Der wichtigste Aspekt beim Konfigurieren des Listeners ist die Angabe des Speicherorts der gemeinsam genutzten Bibliotheken für extproc. Sie müssen die Listener-Konfiguration ändern, um den Speicherort der gemeinsam genutzten Bibliotheken anzugeben, und dann den Oracle-Listener-Vorgang erneut starten, damit die Konfigurationsänderungen übernommen werden.
An der Konfiguration sind zwei Standard-Listener-Konfigurationsdateien von Oracle beteiligt: "tnsnames.ora" und "listener.ora". Diese Dateien befinden sich normalerweise im Verzeichnis "ORACLE_HOME/net/admin". In diesem Dokument werden die erforderlichen Konfigurationseinstellungen vorgestellt.
Es gibt unterschiedliche Wege, wie Sie die Einstellungen verwalten können. Sie können Textdateien mit einem Texteditor bearbeiten, den Oracle Net Manager bzw. den Oracle Net Configuration Assistant verwenden. Oracle stellt darüber hinaus weitere Dokumente zur Verfügung, wie Sie den Listener konfigurieren können. Weitere Informationen finden Sie im Handbuch Oracle Database Net Services Administrator's Guide.
Die Datei "tnsnames.ora" enthält ein Verzeichnis der bekannten Datenbankdienste. Mit dieser Datei können Sie Dienste in der lokalen Datenbank oder auf Remote-Servern definieren. Ein Eintrag wird speziell vom lokalen Datenbankserver für die Interprozesskommunikation (IPC) verwendet, um Funktionsabrufe an extproc zu senden. Bei diesem Eintrag handelt es sich um EXTPROC_CONNECTION_DATA. Sie können die Schlüssel- und SID-Werte unter diesem Eintrag ändern.
Diese Elemente werden dazu verwendet, den Eintrag mit den entsprechenden Informationen in der Datei "listener.ora" zu verknüpfen. Der Schlüssel kann ein beliebiger kurzer Name sein, muss sich jedoch sowohl in der Datei "listener.ora" als auch "tnsnames.ora" befinden. Bei diesen Werten müssen Sie die Groß- und Kleinschreibung beachten. Sie werden nur vom Listener-Vorgang verwendet, nicht von Benutzern oder Anwendungen.
Die Datei "listener.ora" beschreibt einige (nicht notwendigerweise alle) Dienste, für die der Listener auf Anforderungen wartet.
Zu den Werten, die in dieser Datei geändert werden können, gehören Folgende:
- SID_LIST_LISTENER
Mit dieser Beschriftung wird der Beginn der SID-Liste gekennzeichnet, die vom Listener mit dem Namen LISTENER (Standard-Listener-Name) verarbeitet werden.
- SID_LIST und SID_DESC
Die SID_DESC-Einträge unter der Überschrift "SID_LIST" definieren Services. Der erste Service in der Liste verarbeitet extproc-Anfragen und der zweite verarbeitet Client-Sitzungen.
- SID_NAME
Der Wert hierfür muss der SID entsprechen, die für extproc in der Datei "tnsnames.ora" angegeben wurde.
- ORACLE_HOME
Definiert den Speicherort des Verzeichnisses "Oracle Home" für diesen Dienst. Die extproc-Programmdateien werden aus einem untergeordneten Ordner geladen.
- PROGRAM
Damit wird der Dateiname der ausführbaren extproc-Datei angegeben. Je nach Betriebssystem kann der Name (Groß- und Kleinschreibung beachten) "extproc" oder "extproc.exe" lauten. Die Datei befindet sich im Verzeichnis "ORACLE_HOME/bin".
- ENVS
Dabei handelt es sich um eine Liste der Umgebungsvariablen, die extproc beim Ausführen verwendet. Die Einträge in der Liste sind durch Doppelpunkte voneinander getrennt. Die Liste muss eine Definition der Umgebungsvariablen EXTPROC_DLLS und anderer Umgebungsvariablen, die extproc zum Ausführen benötigt, enthalten. Oftmals gehört dazu bei UNIX- und Linux-Systemen LD_LIBRARY_PATH, SHLIB_PATH oder LIBPATH bzw. PATH bei Windows-Servern. Die Pfadvariable umfasst häufig den Speicherort der Geometrie- und der Projection Engine-Bibliotheken.
- EXTPROC_DLLS
Diese Umgebungsvariable definiert eine Liste der Bibliotheken, die extproc laden kann und von denen extproc unmittelbar Funktionen aufrufen kann. Der Pfad zur Datei mit der Shape-Bibliothek, die für den Zugriff auf ST_Geometry-Typen oder die Ansichten GDB_ITEMS_VW und GDB_ITEMRELATIONSHIPS_VW mit SQL benötigt wird, sowie mit der Bibliothek "st_raster", die für den Zugriff auf den ST_Raster-Typ mit SQL erforderlich ist, muss hier angegeben werden.
Die Einträge in der Liste sind für Oracle-Server, die unter UNIX installiert sind, durch Doppelpunkte und bei Oracle-Servern, die unter Windows installiert sind, durch Semikolons voneinander getrennt. Alle Pfade müssen absolut sein und auf lokale Verzeichnisse oder einen UNC-Pfad zeigen, auf den der Oracle-Systembenutzer zugreifen kann. Dies bedeutet auch, dass Sie die Shape- und Raster-Bibliotheken aus dem Verzeichnis "bin" in SDEHOME auf den Oracle-Server kopieren müssen, wenn Sie einen ArcSDE-Anwendungsserver auf einem anderen Server installiert haben als Oracle.
Umgebungsvariablen werden nicht ersetzt.
Die optionalen Schlüsselwörter ANY und ONLY können zum Einschränken und Erweitern des Verwendungszwecks der Bibliotheksdateien durch extproc verwendet werden. Wenn Sie dem Pfad ANY voranstellen, kann Oracle alle Bibliotheken aus dem angegebenen Pfad laden, und Sie müssen keinen Bibliotheksnamen angeben. Wenn Sie dem Pfad ONLY voranstellen, verwendet Oracle nur die bestimmte Bibliothek, die Sie im Pfad angeben.
- KEY
Der Wert für diesen Eintrag verbindet diesen Listener mit dem entsprechenden Diensteintrag in der Datei "tnsnames.ora". Er unterscheidet den Listener von anderen IPC-Listenern, die auf dem gleichen Datenbankserver vorhanden sein können. Der Schlüssel kann ein beliebiger kurzer Name sein, muss sich jedoch sowohl in der Datei "listener.ora" als auch "tnsnames.ora" befinden. Beim Namen des Schlüssels muss die Groß- und Kleinschreibung beachtet werden.
- Bevor Sie Änderungen vornehmen, sollten Sie eine Sicherungskopie der Dateien "tnsnames.ora" und "listener.ora" erstellen.
- Öffnen Sie die Datei "tnsnames.ora" auf dem Oracle-Server.
-
Ändern Sie die Key- und SID-Werte unter EXTPROC_CONNECTION_DATA in der Datei "tnsnames.ora".
EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(Key = EXTPROC1)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )
Dieser Eintrag muss immer mit EXTPROC_CONNECTION_DATA beschriftet sein. Dieser Eintrag wird vom Datenbankserver für die Interprozesskommunikation verwendet, um Funktionsabrufe an extproc zu senden.
- Öffnen Sie die Datei "listener.ora" auf dem Oracle-Server.
-
Ändern Sie die erforderlichen Einträge, um die Services einzurichten, von denen der Listender Anforderungen annimmt.
Das erste Beispiel bezieht sich auf ein Windows-Betriebssystem, auf dem der ArcSDE-Anwendungsserver und Oracle installiert sind:
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") ) )
Dieses Beispiel zeigt einen Eintrag für einen Linux- oder UNIX-Server, auf dem sowohl der ArcSDE-Anwendungsserver als auch Oracle installiert sind:
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") ) )
- Nachdem Sie die Datei "listener.ora" geändert haben, starten Sie den Oracle-Listener neu.