Die SQL-Funktionen für "ST_Geometry" in Oracle verwenden eine gemeinsame Bibliothek, auf die Oracle über den externen Prozedur-Agenten "extproc" von Oraclezugreift. Oracle muss auf die Datei der physikalischen Bibliothek zugreifen können, damit Sie die folgenden Schritte ausführen können:
- Ausführen der SQL-Funktionen für "ST_Geometry" über SQL-Clients
- Abfragen der XML-Spalten in den Geodatabase-Systemsichten "GDB_ITEMS_VW" und "GDB_ITEMRELATIONSHIPS_VW"
- Definieren eines Abfrage-Layers in ArcMap oder ArcGIS Pro, der SQL-Funktionen in "ST_Geometry"-Spalten ausführt
- Veröffentlichen eines Web-Service, der auf Daten in der Oracle-Datenbank verweist
Konfigurieren des externen Prozedur-Framework von Oracle, sodass die Bibliothek "ST_Geometry" zur Durchführung dieser Tasks aufgerufen wird.
Führen Sie die folgenden Schritte aus, bevor Sie Oracle extproc konfigurieren:
- Wenn Ihre Oracle-Instanz keinen Zugriff auf die oben genannten Installationsverzeichnisse von ArcGIS Server oder ArcMap hat, laden Sie die Bibliothek "ST_Geometry" von My Esri herunter, oder kopieren Sie sie vom ArcGIS-Client-Computer in ein Verzeichnis auf dem Oracle-Computer. Stellen Sie sicher, dass Sie die richtige Bibliothek für das Oracle-Betriebssystem kopieren.
- Mit den Geoverarbeitungswerkzeugen Räumlichen Typ erstellen, Enterprise-Geodatabase erstellen und Enterprise-Geodatabase aktivieren wird ein Standardpfad für die ST_SHAPELIB-Bibliothek festgelegt. 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 zu ermitteln, welcher Pfad aktuell für die Bibliothek "ST_SHAPELIB" festgelegt ist:
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 Sie die Oracle-Datei "extproc.ora" so, dass sie auf den Speicherort der Bibliotheksdatei "ST_Geometry" verweist.
- 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 Bibliothek "st_shapelib.dll" (Windows) oder der Bibliothek "libst_shapelib.so" (Linux oder UNIX) verweist.
In diesem Beispiel ist kein ArcGIS-Client auf dem Windows-Server für Oracle installiert, sodass die Datei "st_shapelib.dll" auf dem Oracle-Computer in ein Verzeichnis namens "mylibraries" kopiert wurde. Die folgende Zeile wird der Datei "extproc.ora" hinzugefügt, um auf die Bibliothek "ST_Geometry" in diesem Verzeichnis zu verweisen:
SET EXTPROC_DLLS=ONLY:C:\\mylibraries\\st_shapelib.dll
In diesem Beispiel auf einem Linux- oder UNIX-Server wird die folgende Zeile hinzugefügt, die auf die Bibliothek "ST_Geometry" 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
- 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" berücksichtigt werden.
- 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.
In diesem Beispiel ist die Bibliothek "ST_SHAPELIB" auf das Verzeichnis "mylibraries" eines Windows-Servers für Oracle festgelegt, auf dem die Datei "st_shapelib.dll" abgelegt wurde.
CREATE or REPLACE LIBRARY ST_SHAPELIB AS 'C:\mylibraries\st_shapelib.dll';
- Wenn Sie die Bibliothek neu erstellt haben, müssen Sie das Paket "sde.st_geometry_shapelib_pkg" neu kompilieren.
ALTER PACKAGE sde.st_geometry_shapelib_pkg COMPILE REUSE SETTINGS;
- Alle Clients, die Zugriff auf die Bibliothek benötigen (einschließlich Web-Services), müssen erneut eine Verbindung mit der Datenbank herstellen.