Настройка extproc для доступа к ST_Geometry в Oracle
Функции SQL ST_Geometry в Oracle используют общую библиотеку, которая работает с Oracle через агент внешней процедуры Oracle, называемый extproc. Среде внешних процедур Oracle требуется доступ к физическому файлу библиотеки ST_SHAPELIB, чтобы выполнять любые из следующих действий:
Запуска функций SQL ST_Geometry из клиентов SQL.
Определения слоя запроса, который исполняет функции SQL над столбцами ST_Geometry.
Выполнения запросов к разделенным на бины векторным слоям в ArcGIS Pro.
Публикации веб-слоя, ссылающегося на данные базы данных Oracle.
Запуска инструмента геообработки Выбрать в слое по расположению с опцией Пересечение (СУБД).
Подготовительные шаги
Библиотека ST_Geometry создана для заданных операционных систем. Войдите в My Esri и загрузите файл библиотеки, соответствующий операционной системе, на которой работает Oracle, и версии клиента ArcGIS, которую вы используете.
Экземпляр Oracle должен иметь доступ к библиотеке ST_Geometry. Поместите библиотеку на компьютере с Oracle в папку, к которой есть доступ у экземпляра Oracle.
Прежде чем настраивать файл extproc Oracle, выполните эти действия:
Загрузите библиотеку ST_Geometry с My Esri и поместите ее в директории на компьютере Oracle.
Примечание:
Скачайте или скопируйте библиотеку, соответствующую вашей операционной системе Oracle.
При развертывании на сервере Microsoft Windows, для библиотеки ST_Geometry требуется Microsoft Visual C++ Redistributable Package (x64). См. Требования ArcGIS к Oracle, чтобы узнать о требующейся версии пакета. Если данный пакет отсутствует на сервере Oracle, загрузите его с сайта Microsoft и установите.
Когда вы запускаете инструмент геообработки Создать пространственный тип, чтобы включить ST_Geometry в базе данных Oracle, или запускаете инструменты геообработки Создать многопользовательскую базу геоданных или Включить многопользовательскую базу геоданных, чтобы создать базу геоданных, инструменты задают путь по умолчанию для библиотеки ST_SHAPELIB.
Подключитесь из клиента SQL к экземпляру Oracle под пользователем sde и выполните следующий запрос SQL, чтобы убедиться, что путь, заданный инструментом, совпадает с местоположением библиотеки ST_Geometry:
SELECT file_spec FROM user_libraries WHERE library_name = 'ST_SHAPELIB';Если возвращенный путь не соответствует местоположению файла библиотеки ST_Geometry, необходимо пересоздать библиотеку после настройки extproc.
Настройка extproc
Настройте в файле Oracle extproc.ora местоположение файла библиотеки ST_Geometry. Обратитесь к документации Oracle для синтаксиса SQL.
Сделайте резервную копию файла
extproc.oraна сервере Oracle.Откройте файл
extproc.oraв текстовом редакторе и измените его, чтобы задать местоположение библиотекиst_shapelib.dll(Windows) илиlibst_shapelib.so(Linux или UNIX).Сохраните и закройте файл
extproc.ora.Может потребоваться перезапуск экземпляра Oracle для считывания изменений в файле
extproc.ora.Если вы изменили расположение файла библиотеки ST_Geometry по умолчанию, и местоположение не указано, создайте или пересоздайте библиотеку ST_SHAPELIB в базе данных Oracle.
Вы должны подключиться к базе данных как пользователь sde и создать или перестроить библиотеку ST_Geometry.
Если вы пересоздали библиотеку, перекомпилируйте пакет
sde.st_geometry_shapelib_pkg.Все клиенты, которым требуется доступ к библиотекам (включая веб-сервисы), должны заново подключиться к базе данных.
Проверка конфигурации extproc
Вы можете запросить библиотеку ST_Geometry, чтобы убедиться, что extproc может получить к ней доступ.
Войдите в клиент Oracle SQL.
Запустите следующий запрос:
SELECT sde.ST_AsText( SDE.ST_Geometry('POINT (10 10)', 0) ) FROM dual;Если extproc настроен правильно, запрос вернет следующее:
SDE.ST_ASTEXT(SDE.ST_GEOMETRY('POINT(1010)',0)) ------------------------------------------- POINT (10.00000000 10.00000000)Если extproc настроен некорректно, запрос вернёт одно или несколько следующих сообщений об ошибке:
ORA-06520: PL/SQL: Ошибка при загрузке внешней библиотеки
ORA-06522: Не удалось загрузить карту DLL
ORA-06512: В "SDE.ST_GEOMETRY_SHAPELIB_PKG", строка 0
ORA-06512: В "SDE.ST_GEOMETRY_OPERATORS", строка 68
Обновления и библиотека ST_Geometry
Необходимо загружать или копировать новые версии файла библиотеки, чтобы получать исправления и улучшения, которые содержатся в новых версиях библиотеки, всякий раз, когда вы обновляете базу геоданных Oracle или необходимо обновить тип ST_Geometry в базе данных Oracle.
Oracle может пометить библиотеку как недействительную при ее замене или после обновления экземпляра Oracle. Oracle иногда автоматически перекомпилирует недопустимые объекты базы данных, когда на объекты ссылается клиент, но в некоторых случаях они не компилируются автоматически.
Библиотека ST_Geometry принадлежит пользователю sde. Чтобы проверить статус библиотеки (и всех файлов, принадлежащих пользователю sde), войдите в клиент SQL как пользователь sde и запустите следующее выражение:
SELECT object_name, object_type
FROM USER_OBJECTS
WHERE STATUS = 'INVALID';
Если тело пакета sde.st_geometry_shapelib_pkg возвращается в списке недопустимых объектов, перекомпилируйте его, как это описано на шаге 5 расположенного выше раздела Настройка extproc.
Если некорректными являются несколько объектов, вы можете перекомпилировать все объекты в одной схеме. См. документацию Oracle для изучения необходимых прав доступа и инструкций по перекомпиляции объектов.