Функции SQL ST_Geometry в Oracle используют общую библиотеку, которая работает с Oracle через агент внешней процедуры Oracle, называемый extproc. Oracle требует физического доступа к файлам библиотеки для:
- Выполнения функций ST_Geometry SQL из клиентов SQL.
- Определения слоя запроса в ArcMap или ArcGIS Pro, который исполняет функции SQL над столбцами ST_Geometry.
- Выполнения запросов к разделенным на бины векторным слоям в ArcGIS Pro.
- Публикации веб-слоя, ссылающегося на данные базы данных Oracle.
- Запуска инструмента геообработки Выбрать в слое по расположению с опцией Пересечение (СУБД).
Чтобы выполнять эти задачи, необходимо настроить среду внешних процедур Oracle для вызова библиотеки ST_Geometry.
Подсказка:
Библиотека ST_Geometry устанавливается вместе с клиентами ArcGIS Server и ArcMap, или ее можно загрузить с My Esri. Если на компьютере с Oracle установлен ArcGIS Server или ArcMap, можно настроить файл extproc.ora на обращение в одно из следующих местоположений, а два предварительных шага, указанных ниже, можно пропустить.
- ArcGIS Server на Windows: <ArcGIS Server installation directory>\ArcGIS\Server\DatabaseSupport\Oracle\Windows64
- ArcGIS Server на Linux: <ArcGIS Server installation directory>/arcgis/server/DatabaseSupport/oracle/linux64
- ArcMap: <ArcMap installation directory>\ArcGIS\Desktop<version>\DatabaseSupport\Oracle\Windows64
Если вы задаете местоположение ArcMap или ArcGIS Server, вы автоматически получите обновленные библиотеки при установке новых версий ArcMap или ArcGIS Server. Если вы разместили библиотеки в другом месте, необходимо вручную обновить их, чтобы получить исправления и улучшения, внесенные в новые версии библиотек ArcGIS.
Прежде чем настраивать Oracle extproc, выполните эти шаги:
- Если экземпляр Oracle не имеет доступа к указанному выше месту установки ArcGIS Server или ArcMap, загрузите библиотеку ST_Geometry с My Esri или скопируйте файл с компьютера, где установлен клиент ArcGIS, в папку на компьютере с Oracle. Убедитесь, что вы скопировали библиотеку, соответствующую вашей операционной системе Oracle.
Примечание:
При развертывании на сервере Microsoft Windows для библиотеки ST_Geometry требуется Microsoft Visual C++ Redistributable Package (x64). См. требования к базе данных Oracle, чтобы узнать о требующейся версии пакета. Если данный пакет отсутствует на сервере Oracle, загрузите его с сайта Microsoft и установите.
- В инструментах геообработки Создать пространственный тип, Создать многопользовательскую базу геоданных и Включить многопользовательскую базу геоданных к библиотеке 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).
В этом примере на Oracle Windows сервере не был установлен клиент ArcGIS, поэтому библиотека st_shapelib.dll была скопирована в директорию mylibraries на компьютере Oracle. Следующая строка была добавлена в extproc.ora, чтобы указать местоположение библиотеки ST_Geometry в этой директории:
SET EXTPROC_DLLS=ONLY:C:\\mylibraries\\st_shapelib.dll
В этом примере на сервере Linux или UNIX, для указания библиотеки ST_Geometry в директории пользователя esrilibs, которая была создана на сервере Oracle для хранения библиотеки, добавляется следующая строка:
SET EXTPROC_DLLS=ONLY:/user/esrilibs/libst_shapelib.so
- Сохраните и закройте файл extproc.ora.
Может потребоваться перезапуск экземпляра Oracle для считывания изменений в файле 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;
- Все клиенты, которым требуется доступ к библиотекам (включая веб-сервисы), должны заново подключиться к базе данных.