Skip to main content

Konfigurieren von "extproc" für den Zugriff auf "ST_Geometry" in Oracle

Die SQL-Funktionen für "ST_Geometry" in Oracle verwenden eine gemeinsame Bibliothek, auf die Oracle über den externen Prozedur-Agenten "extproc" von Oracle zugreift. Um die folgenden Aktionen ausführen zu können, muss das Oracle-Framework für externe Prozeduren Zugriff auf die physische Bibliotheksdatei "ST_SHAPELIB" zugreifen können:

Vorbereitungsschritte

Die "ST_Geometry"-Bibliothek wurde für bestimmte Betriebssysteme erstellt. Melden Sie sich bei My Esri an, und laden Sie die Bibliotheksdatei herunter, die für das Betriebssystem, auf dem Oracle ausgeführt wird, und für die von Ihnen verwendete ArcGIS-Client-Version spezifisch ist.

Die Oracle-Instanz muss auf die "ST_Geometry"-Bibliothek zugreifen können. Legen Sie die Bibliothek in einem Verzeichnis auf dem Oracle-Computer ab, auf das die Oracle-Instanz zugreifen kann.

Führen Sie die folgenden Schritte aus, bevor Sie die Datei "extproc" von Oracle konfigurieren:

  1. Laden Sie die Bibliothek "ST_Geometry" von My Esri herunter, und legen Sie sie in einem Verzeichnis auf dem Oracle-Computer ab.

    Hinweis:

    Laden Sie die richtige Bibliothek für das Oracle-Betriebssystem herunter, oder kopieren Sie sie.

    Bei der Bereitstellung auf einem Microsoft Windows-Server wird für die Bibliothek "ST_Geometry" das Microsoft Visual C++ Redistributable Package (x64) benötigt. Informationen zur erforderlichen Paketversion finden Sie unter ArcGIS-Anforderungen für Oracle. Wenn dieses Paket auf dem Oracle-Server nicht verfügbar ist, laden Sie es von der Microsoft-Site herunter, und installieren Sie es.

    Wenn Sie das Geoverarbeitungswerkzeug Räumlichen Typ erstellen ausführen, um "ST_Geometry" in einer Oracle-Datenbank zu aktivieren, oder eine Geodatabase mithilfe der Geoverarbeitungswerkzeuge Enterprise-Geodatabase erstellen bzw. Enterprise-Geodatabase aktivieren erstellen, legen die Werkzeuge einen Standardpfad für die Bibliothek ST_SHAPELIB fest.

  2. Stellen Sie von einem SQL-Client eine Verbindung als SDE-Benutzer mit der Oracle-Instanz her, und führen Sie den folgenden SQL-Befehl aus, um sich zu vergewissern, dass der vom Werkzeug festgelegte Pfad mit dem Speicherort der "ST_Geometry"-Bibliothek übereinstimmt:

    SELECT file_spec
     FROM user_libraries
     WHERE library_name = 'ST_SHAPELIB';
    

    Wenn der dabei zurückgegebene Pfad nicht mit dem Speicherort der Bibliotheksdatei "ST_Geometry" übereinstimmt, müssen Sie die Bibliothek neu erstellen, nachdem Sie die Datei "extproc" konfiguriert haben.

Konfigurieren von "extproc"

Konfigurieren Sie die Oracle-Datei extproc.ora so, dass sie auf den Speicherort der Bibliotheksdatei "ST_Geometry" verweist. Die Oracle-SQL-Syntax können Sie der Oracle-Dokumentation entnehmen.

  1. Erstellen Sie eine Sicherung der Datei extproc.ora auf dem Oracle-Server.

  2. Öffnen Sie die Datei extproc.ora in einem Texteditor, und ändern Sie sie so, dass sie auf den Speicherort der Bibliothek st_shapelib.dll (Windows) oder der Bibliothek libst_shapelib.so (Linux oder UNIX) verweist.

  3. Speichern und schließen Sie die extproc.ora-Datei.

    Sie müssen die Oracle-Instanz möglicherweise neu starten, damit die Änderungen in der Datei extproc.ora identifiziert werden.

  4. Wenn Sie den Speicherort der Bibliothek "ST_Geometry" vom Standardverzeichnis geändert haben oder kein Speicherort festgelegt wurde, erstellen Sie die Bibliothek "ST_SHAPELIB" in der Oracle-Datenbank.

    Sie müssen als SDE-Benutzer eine Verbindung zur Datenbank herstellen, um die Bibliothek "ST_Geometry" erstellen bzw. neu erstellen zu können.

  5. Wenn Sie die Bibliothek neu erstellt haben, müssen Sie das Paket "sde.st_geometry_shapelib_pkg" neu kompilieren.

    Alle Clients, die Zugriff auf die Bibliothek benötigen (einschließlich Web-Services), müssen erneut eine Verbindung mit der Datenbank herstellen.

Überprüfen der "extproc"-Konfiguration

Sie können die "ST_Geometry"-Bibliothek abfragen, um sicherzustellen, dass "extproc" darauf zugreifen kann.

  1. Melden Sie sich bei einem Oracle-SQL-Client an.

  2. Führen Sie die folgende Abfrage aus:

     SELECT sde.ST_AsText(
       SDE.ST_Geometry('POINT (10 10)', 0)
      )
     FROM dual;
    

    Wenn "extproc" ordnungsgemäß konfiguriert wurde, gibt die Abfrage Folgendes zurück:

    SDE.ST_ASTEXT(SDE.ST_GEOMETRY('POINT(1010)',0))
    -------------------------------------------
    POINT (10.00000000 10.00000000)
    

    Wurde "extproc" nicht ordnungsgemäß konfiguriert, gibt die Abfrage eine oder mehrere der folgenden Fehlermeldungen zurück:

    ORA-06520: PL/SQL: Fehler beim Laden der externen Bibliothek

    ORA-06522: DLL konnte nicht geladen werden

    ORA-06512: at "SDE.ST_GEOMETRY_SHAPELIB_PKG", line 0

    ORA-06512: at "SDE.ST_GEOMETRY_OPERATORS", line 68

Upgrades und die "ST_Geometry"-Bibliothek

Sie müssen neue Versionen der Bibliotheksdatei herunterladen oder kopieren, um die Fixes und Verbesserungen in neuen Versionen der Bibliothek zu erhalten, wenn Sie die Geodatabase in Oracle aktualisieren oder ein Upgrade des Typs "ST_Geometry" in einer Oracle-Datenbank durchführen müssen.

Oracle kennzeichnet die Bibliothek möglicherweise als ungültig, wenn sie ersetzt oder die Oracle-Instanz aktualisiert wurde. Manchmal kompiliert Oracle ungültige Datenbankobjekte automatisch neu, wenn die Objekte von einem Client referenziert werden. Es kann aber auch vorkommen, dass sie nicht automatisch kompiliert werden.

Die "ST_Geometry"-Bibliothek befindet sich im Besitz des SDE-Benutzers. Um den Status der Bibliothek (und aller Dateien im Besitz des SDE-Benutzers) zu überprüfen, melden Sie sich als SDE-Benutzer bei einem SQL-Client an, und führen Sie die folgende Anweisung aus:

SELECT object_name, object_type
FROM USER_OBJECTS
WHERE STATUS = 'INVALID';

Wenn der Paketkörper sde.st_geometry_shapelib_pkg in der Liste der ungültigen Objekte zurückgegeben wird, kompilieren Sie ihn wie in Schritt 5 des Abschnitts zum Konfigurieren von "extproc" weiter oben beschrieben neu.

Wenn mehrere Objekte ungültig sind, können Sie alle Objekte in demselben Schema neu kompilieren. Informationen dazu, welche Berechtigungen erforderlich sind und wie Objekte neu kompiliert werden können, finden Sie in der Oracle-Dokumentation.