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 Sichten "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 Oracle extproc 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 verwenden, keine Features in Datenbanksichten identifizieren und keine Versionstabellen mit ST_Raster-Spalten verwenden, Sie können keine Zeile löschen, die eine ST_Raster-Spalte beinhaltet, Feature-Services mit ST_Geometry-Daten veröffentlichen bzw. SQL-Funktionen von SQL-Clients ausführen, wenn extproc nicht konfiguriert wird.
Wenn Sie Oracle 11g oder 12c 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 und 12c
Oracle empfiehlt für die Konfiguration von extproc, die Datei "extproc.ora" zu ändern, statt den Listener für Oracle 11g und 12c zu konfigurieren. Die Datei "extproc.ora" befindet sich im Verzeichnis "ORACLE_HOME\hs\admin".
- Erstellen Sie eine Sicherungskopie der Datei "extproc.ora" auf dem Oracle-Server.
- Öffnen Sie die Datei "extproc.ora", und ändern Sie sie so, dass sie auf den Speicherort der ST_Geometry (st_shapelib)- und/oder ST_Raster-Bibliotheken verweist.
In diesem Beispiel auf einem Windows-Server wird die folgende Zeile hinzugefügt, die auf die ST_Geometry-Bibliothek in einem Ordner mit dem Namen "mylibraries" verweist:
SET EXTPROC_DLLS=ONLY:C:\\mylibraries\\st_shapelib.dll
Wenn Sie die ST_Geometry- und ST_Raster-Bibliotheken verwenden, können Sie Einträge für beide Bibliotheken in einer Zeile aufführen:
SET EXTPROC_DLLS=ONLY:C:\\mylibraries\\st_shapelib.dll;C:\\mylibraries\\libst_raster_ora.dll
In diesem Beispiel auf einem Linux- oder UNIX-Server wird die folgende Zeile hinzugefügt, die auf die ST_Geometry-Bibliothek im Verzeichnis "esrilibs" des Benutzers verweist. Dieses wurde auf dem Oracle-Server erstellt, um die Bibliothek zu speichern:
SET EXTPROC_DLLS=ONLY:/user/esrilibs/libst_shapelib.so
Wenn Sie die ST_Geometry- und ST_Raster-Bibliotheken verwenden, können Sie Einträge für beide Bibliotheken in einer Zeile aufführen:
SET EXTPROC_DLLS=ONLY:/user/esrilibs/libst_shapelib.so:/user/esrilibs/libst_raster_ora.so
- Speichern und schließen Sie die Datei "extproc.ora".
- Alle Clients, die Zugriff auf die Bibliotheken benötigen (einschließlich Webservices), müssen eine neue Verbindung mit der Datenbank herstellen.
Oracle 10g
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 verwenden, 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 Dienste. Der erste Dienst 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 in "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.
- Speichern Sie die Änderungen, und schließen Sie die Datei "tnsnames.ora".
- Öffnen Sie die Datei "listener.ora" auf dem Oracle-Server.
- Ändern Sie die erforderlichen Einträge, um die Dienste einzurichten, von denen der Listener Anforderungen annimmt.
Das erste Beispiel betrifft ein Windows-Betriebssystem, die ST_Geometry- und ST_Raster-Bibliotheken befinden sich in einem Ordner mit dem Namen "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") ) )
Dieses Beispiel zeigt einen Eintrag für einen Linux- oder UNIX-Server, auf dem die ST_Geometry- und ST_Raster-Bibliotheken unter /arcgis/libs gespeichert 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=/arcgis/libs/libst_shapelib.so:/arcgis/libs/libst_raster_ora.so") ) )
- Ändern und speichern Sie die Datei "listener.ora", und starten Sie den Oracle-Listener neu.