Konfigurieren des Oracle-Listeners 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 "extrproc" 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 der Oracle-Listener muss so konfiguriert werden, dass Funktionen in diesen Bibliotheken durch die externe Verfahrensumgebung von Oracle aufgerufen werden.
Sie können "ST_Geometry" und "ST_Raster" in ArcGIS verwenden, ohne den Oracle-Listener einzurichten. Sie erhalten jedoch nicht die vollständigen Funktion von ArcSDE-Clients und keine Funktionen von SQL-Clients, z. B. SQL*Plus. Es ist beispielsweise nicht möglich, SQL-Funktionen in ST_Geometry-Spalten in Abfrage-Layern in ArcMap oder Versionstabellen mit ST_Raster-Spalten zu verwenden, eine Zeile mit einer ST_Raster-Spalte zu löschen oder SQL-Funktionen von SQL-Clients auszuführen, wenn der Oracle-Listener nicht konfiguriert ist.
Die Installation von "ST_Raster" ist optional. Anweisungen finden Sie unter Installieren des ST_Raster-Typs unter Oracle.
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 Key- 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 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 Service. 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 Projektionsmodus-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, der die Bibliothek ST_SHAPELIB enthält, die für den Zugriff auf ST_Geometry-Typen oder die Sichten GDB_ITEMS_VW und GDB_ITEMRELATIONSHIPS_VW mit SQL benötigt wird, sowie die Bibliothek LIBST_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, wenn Sie ArcSDE auf einem anderen Server als Oracle installiert haben, die Shape- und Raster-Bibliotheken auf den Oracle-Server kopieren müssen. Weitere Informationen finden Sie unter Installieren von Oracle und ArcSDE auf separaten Servern.
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 ist für Windows-Betriebssystem, auf dem ArcSDE 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") ) )
In diesem Beispiel ist ein Eintrag für einen Linux- oder UNIX-Server (ausgenommen IBM-AIX) dargestellt, auf dem sowohl ArcSDE als auch Oracle installiert ist.
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") ) )
In diesem Beispiel ist ein Eintrag für ArcSDE for Oracle unter IBM AIX dargestellt.
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") ) )
- Nachdem Sie die Datei "listener.ora" geändert haben, starten Sie den Oracle-Listener neu.