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.

HinweisHinweis:

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:

Schritte:
  1. Bevor Sie Änderungen vornehmen, sollten Sie eine Sicherungskopie der Dateien "tnsnames.ora" und "listener.ora" erstellen.
  2. Öffnen Sie die Datei "tnsnames.ora" auf dem Oracle-Server.
  3. Ä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.

  4. Öffnen Sie die Datei "listener.ora" auf dem Oracle-Server.
  5. Ä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")
        )
       )

  6. Nachdem Sie die Datei "listener.ora" geändert haben, starten Sie den Oracle-Listener neu.
9/12/2013