Die SQL-Funktionen "ST_Geometry" und "ST_Raster" verwenden gemeinsame Bibliotheken, auf die Sie über den externen Prozedur-Agenten "extproc" von Oracle zugreifen können. Oracle muss auf die Dateien der physikalischen Bibliothek zugreifen können, damit Sie die folgenden Schritte ausführen können:
- Ausführen der Funktionen "ST_Geometry" oder "ST_Raster SQL" über Clients
- Zugreifen auf die ArcSDE-XML-Spalten in den Systemansichten "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
- Identifizieren von Features in Datenbanksichten aus ArcMap oder ArcGIS Pro
- Registrieren von Tabellen mit ST_Raster-Spalten als versioniert
- Verwenden eines ArcGIS-Clients zum Löschen einer Zeile, die eine ST_Raster-Spalte enthält
Sie müssen die externe Verfahrensumgebung von Oracle konfigurieren, um die Bibliotheken zur Durchführung dieser Aufgaben aufzurufen.
In den meisten Fällen haben Sie den ST_Raster-Typ so installiert, dass Sie mit SQL auf ihn zugreifen können. Aus diesem Grund sind die Anweisungen zum Konfigurieren von Oracle extproc für die Verwendung mit ST_Raster in dem Thema zur Installation von ST_Raster enthalten. Dieses Thema konzentriert sich auf die Konfiguration der extproc-Datei für ST_Geometry.
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 for Server oder ArcMap hat, laden Sie die Bibliotheken 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 "extrproc.ora" hinzugefügt, um auf die Bibliothek "ST_Geometry" in diesem Verzeichnis zu verweisen:
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".
- 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, kompilieren Sie das Paket "sde.st_geometry_shapelib_pkg" neu.
ALTER PACKAGE sde.st_geometry_shapelib_pkg COMPILE REUSE SETTINGS;
- Alle Clients, die Zugriff auf die Bibliotheken benötigen (einschließlich Webservices), müssen eine neue Verbindung mit der Datenbank herstellen.