Функции SQL ST_Geometry и ST_Raster в Oracle используют общие библиотеки, доступ к которым выполняется через агент внешней процедуры Oracle или extproc. Oracle должен иметь физический доступ к файлам библиотеки для:
- Выполнения функций ST_Geometry или ST_Raster SQL из клиентов.
- Получения доступа к столбцам ArcSDE XML в системных представлениях GDB_ITEMS_VW и GDB_ITEMRELATIONSHIPS_VW базы геоданных.
- Определения слоя запроса в ArcMap или ArcGIS Pro, который исполняет функции SQL над столбцами ST_Geometry.
- Идентификации объектов в представлениях базы геоданных из ArcMap или ArcGIS Pro.
- Регистрации таблиц со столбцами ST_Raster как версионных.
- Использования клиента ArcGIS для удаления строки, содержащей столбец ST_Raster.
Чтобы выполнять эти задачи, необходимо настроить среду внешних процедур Oracle для вызова библиотек, требующихся для данных операций.
В большинстве случаев, тип ST_Raster устанавливается так, чтобы к нему был доступ через SQL. Поэтому, инструкции по настройке Oracle extproc для работы с ST_Raster входят в раздел по установке ST_Raster. В этом разделе подробно описана настройка extproc для ST_Geometry.
Прежде чем настраивать Oracle extproc, выполните эти шаги:
- Если экземпляр Oracle не имеет доступа к указанному выше месту установки ArcGIS Server или ArcMap, загрузите библиотеки или скопируйте их с компьютера, где установлен клиент ArcGIS, в папку на компьютере с Oracle. Убедитесь, что вы скопировали библиотеку, соответствующую операционной системе на вашем сервере Oracle.
- В инструментах геообработки Создать пространственный тип, Создать многопользовательскую базу геоданных и Включить многопользовательскую базу геоданных к библиотеке ST_SHAPELIB задается путь по умолчанию. Подключитесь к экземпляру Oracle как пользователь sde из клиента SQL и выполните следующую команду SQL, чтобы узнать, как путь сейчас задан для библиотеки ST_SHAPELIB:
SELECT file_spec FROM user_libraries WHERE library_name = 'ST_SHAPELIB';
Если возвращенный путь не соответствует местоположению файла библиотеки ST_Geometry, необходимо пересоздать библиотеку после настройки extproc.
Настройте Oracle extproc.ora на местоположение файла библиотеки ST_Geometry.
- Сделайте резервную копию файла extproc.ora на сервере Oracle.
- Откройте extproc.ora и измените его, чтобы указать местоположение библиотеки st_shapelib.dll (Windows) или libst_shapelib.so (Linux или UNIX).
В этом примере на сервере Windows с Oracle не был установлен клиент ArcGIS, поэтому библиотека st_shapelib.dll была скопирована в папку mylibraries на сервере Oracle. Следующая строка была добавлена в файл extrproc.ora, чтобы указать местоположение библиотеки ST_Geometry в этой папке:
SET EXTPROC_DLLS=ONLY:C:\\mylibraries\\st_shapelib.dll
Если вы используете обе библиотеки, ST_Geometry и ST_Raster, вы можете ввести их в одной строке:
SET EXTPROC_DLLS=ONLY:C:\\mylibraries\\st_shapelib.dll;C:\\mylibraries\\libst_raster_ora.dll
В этом примере на сервере Linux или UNIX, для указания библиотеки ST_Geometry в папке пользователя esrilibs, которая была создана на сервере Oracle для хранения библиотеки, добавляется следующая строка:
SET EXTPROC_DLLS=ONLY:/user/esrilibs/libst_shapelib.so
Если вы используете обе библиотеки, ST_Geometry и ST_Raster, вы можете ввести их в одной строке:
SET EXTPROC_DLLS=ONLY:/user/esrilibs/libst_shapelib.so:/user/esrilibs/libst_raster_ora.so
- Сохраните и закройте файл extproc.ora.
- Если вы изменили расположение файла библиотеки ST_Geometry по умолчанию, и местоположение не указано, создайте или пересоздайте библиотеку ST_SHAPELIB в базе данных Oracle.
В этом примере библиотека ST_SHAPELIB находится в папке mylibraries на сервере Oracle Windows, где расположен файл st_shapelib.dll.
CREATE or REPLACE LIBRARY ST_SHAPELIB AS 'C:\mylibraries\st_shapelib.dll';
- Если вы заново создали библиотеку, перекомпилируйте пакет sde.st_geometry_shapelib_pkg.
ALTER PACKAGE sde.st_geometry_shapelib_pkg COMPILE REUSE SETTINGS;
- Все клиенты, которым требуется доступ к библиотекам (включая веб-сервисы), должны заново подключиться к базе данных.