Настройка Oracle extproc для доступа к базе геоданных с использованием SQL
Функции SQL ST_Geometry и ST_Raster в Oracle используют общие библиотеки, доступ к которым выполняется через агент внешней процедуры Oracle или extproc. Для использования SQL с ST_Geometry или ST_Raster, а также выполнения доступа к столбцам ArcSDE XML в видах GDB_ITEMS_VW и GDB_ITEMRELATIONSHIPS_VW, Oracle должен иметь возможность доступа к библиотекам. Поэтому библиотеки должны присутствовать на сервере Oracle и вызываться через среду внешней процедуры Oracle.
Использование ST_Geometry и ST_Raster в ArcGIS возможно без настройки приемника Oracle. Однако вы не будете обладать всей функциональностью клиентов ArcGIS, а также функциональностью клиентов SQL, например SQL*Plus. Например, вы не сможете использовать функции SQL в столбцах ST_Geometry слоев запроса ArcMap, таблицы версий, содержащие столбцы ST_Raster, удалять столбец, который содержит столбец ST_Raster, а также выполнять функции SQL клиентов SQL без конфигурирования приемника Oracle. Кроме того, вы не сможете публиковать данные, используемые типом ST_Geometry, в качестве сервиса объекта для сервера пространственных данных, если не выполнили конфигурирование приемника Oracle.
Установка ST_Raster является опцией. См. Установка типа ST_Raster в Oracle для получения дополнительных инструкций.
Если ваша база данных Oracle установлена на сервере Windows, но у вас нет установленного сервера приложения ArcSDE, вам может потребоваться установка пакета Microsoft Visual C++ 2008 SP1 Redistributable Package (x64). Если на сервере Oracle нет пакета Microsoft Visual C++ 2008 SP1 Redistributable Package (x64), загрузите его с сайта Microsoft и выполните установку.
Если вы используете Oracle 11g, выполните редактирование файла extproc.ora для вызова функций с использованием среды внешней процедуры Oracle. Если вы используете Oracle 10g, выполните конфигурирование приемника Oracle.
Oracle 11g
Oracle рекомендует выполнять настройку EXTPROC редактированием файла extproc.ora, вместо настройки listener для Oracle 11g. Файл extproc.ora расположен в директории ORACLE_HOME\hs\admin.
После перемещения библиотеки ST_Geometry (st_shapelib) и/или ST_Raster на ваш сервер Oracle измените файл extproc.ora для указания места хранения библиотек.
На вашем сервере Windows необходимо добавить следующие линии:
EXTPROC_DLLS=ONLY:C:\\mylibraries\\st_shapelib.dll
EXTPROC_DLLS=ONLY:C:\\mylibraries\\libst_raster_ora.dll
если вы используете обе библиотеки, вы можете расположить их на одной линии:
EXTPROC_DLLS=ONLY:C:\\mylibraries\\st_shapelib.dll;C:\\mylibraries\\libst_raster_ora.dll
В данных примерах библиотеки расположены в папке mylibraries, которая была создана на сервере Oracle для хранения библиотек.
На сервере Linux или UNIX:
SET EXTPROC_DLLS=ONLY:/user/esrilibs/libst_shapelib.so
SET EXTPROC_DLLS=ONLY:/user/esrilibs/libst_raster_ora.so
если вы используете обе библиотеки, вы можете расположить их на одной линии:
SET EXTPROC_DLLS=ONLY:/user/esrilibs/libst_shapelib.so:/user/esrilibs/libst_raster_ora.so
В данных примерах библиотеки расположены в папке пользователя esrilibs, которая была создана на сервере Oracle для хранения библиотек.
Oracle 10g
Приемники Oracle обладают высокой степенью гибкости. Например, может существовать множество приемников, связанных с вашей базой данный и каждый из них может управлять обработкой запросов различных типов. Это сложная тема, множественные варианты которой не освещены в настоящем документе. Для конфигурирования ваших приемников важно обратиться к руководству администратора Oracle Database Net Services.
Основным моментом конфигурирования приемника является указание extproc места хранения общих библиотек. Вам необходимо изменить конфигурацию приемника для указания расположения общих библиотек, а затем перезапустить процесс приемника Oracle для вступления в силу изменений конфигурации.
Применяется два стандартных файла конфигурации приемника Oracle: tnsnames.ora и listener.ora. Обычно эти файлы находятся по пути ORACLE_HOME/net/admin. Настоящий документ содержит необходимые параметры конфигурации.
Существует несколько способов управления параметрами. Вы можете выполнить редактирования текстовых файлов с применением текстового редактора, использовать Oracle Net Manager или Oracle Net Configuration Assistant. Компания Oracle предоставляет документацию по конфигурированию приемника. Дополнительные сведения см. в руководстве администратора Oracle Database Net Services.
Файл tnsnames.ora содержит папку известных сервисов базы данных. Данный файл может определять сервисы в локальной базе данных или на удаленных серверах. Одна запись применяется специально для сервера локальной базы данных с целью использования связи между процессами (IPC) для отправки вызова функции к extproc. Данная запись называется EXTPROC_CONNECTION_DATA. В данной записи вы можете изменять значения ключа и SID.
Данные элементы используются для связи указанной записи с соответствующей информацией в файле listener.ora. Ключом может быть любое короткое имя, но оно должно совпадать в файлах listener.ora и tnsnames.ora. Для данных значений учитывается регистр. Они используются только процессом приемника, а не пользователями или приложениями.
Файл listener.ora описывает некоторые (не обязательно все) сервисы, для которых приемник осуществляет прием запросов.
В данном файле можно изменять следующие значения:
- SID_LIST_LISTENER
Данной подписью начинается список SID, управляемый приемником с именем LISTENER (имя приемника по умолчанию).
- SID_LIST и SID_DESC
Записи SID_DESC под заголовком SID_LIST определяют сервисы. Первый в списке управляет запросами extproc, второй управляет сеансами клиента.
- SID_NAME
Значение для данного параметра должно соответствовать SID, указанному для extproc в файле tnsnames.ora.
- ORACLE_HOME
Определяет расположение Oracle home для данного сервиса. Файлы программы extproc загружаются из папки, указанной в данном месте.
- PROGRAM
Указывает имя исполняемого файла extproc. Данное имя учитывает регистр и может быть extproc или extproc.exe в зависимости от типа операционной системы. Файл расположен в ORACLE_HOME/bin.
- ENVS
Это перечень переменных среды, которые использует во время работы extproc. Список разделяется двоеточием. Данный список должен включать в себя определение переменной среды EXTPROC_DLLS и остальных переменных среды, необходимых для работы extproc, к ним обычно относятся LD_LIBRARY_PATH, SHLIB_PATH или LIBPATH для UNIX и Linux систем, а также PATH для серверов Windows. Переменная пути path обычно содержит расположение библиотек геометрии и параметров проекции.
- EXTPROC_DLLS
Эта переменная среды определяет список библиотек, которые может загружать extproc и из которых он может выполнять прямой вызов функций. Путь к файлу, содержащему библиотеку геометрии, которая необходима для доступа к типам ST_Geometry или для просмотра GDB_ITEMS_VW и GDB_ITEMRELATIONSHIPS_VW с помощью SQL, и библиотеку st_raster, необходимую для доступа к типу ST_Raster с помощью SQL, задается здесь.
Список разделен двоеточием для серверов Oracle, установленных на UNIX, и точкой с запятой для серверов Oracle, установленных на Windows. Все пути должны быть абсолютными и указывать на локальные директории или путь UNC, к которому имеет доступ пользователь системы Oracle. Это также означает, что если вы установили сервер приложения ArcSDE на сервер, отличный от Oracle, то вы должны выполнить копирование библиотек формы и растра из папки bin в SDEHOME на сервер Oracle.
Подстановка переменной среды не доступна.
Для ослабления или ограничения использования extproc файлов библиотеки возможно использование дополнительных ключевых слов ANY и ONLY. Если вы укажите в начале пути ключевое слово ANY, Oracle сможет загрузить любую библиотеку по указанному пути, имя библиотеки указывать не нужно. Если вы укажите в начале пути ключевое слово ONLY, Oracle сможет загрузить только ту библиотеку, путь к которой вы указали.
- KEY
Значение, присваиваемое данному элементу, используются для связи данного приемника с соответствующей записью сервиса в файле tnsnames.ora. Он используется для того, чтобы отличить данный приемник от других приемников IPC, которые могут находиться на одном сервере базы данных. Ключом может быть любое короткое имя, но оно должно совпадать в файлах listener.ora и tnsnames.ora. Ключ чувствителен к регистру.
- Перед внесением любых изменений сделайте резервные копии файлов tnsnames.ora и listener.ora.
- Откройте файл tnsnames.ora на сервере Oracle.
-
Измените значения Key и SID в EXTPROC_CONNECTION_DATA файла tnsnames.ora.
EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(Key = EXTPROC1)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )
Данная запись должна всегда иметь подпись EXTPROC_CONNECTION_DATA. Данная запись используется сервером базы данных для связи между процессами с целью отправки вызова функции к extproc.
- Откройте файл listener.ora на сервере Oracle.
-
Измените необходимые поля для настройки сервисов, от которых приемник осуществляет прием запросов.
Первый пример приведен для операционной системы Windows, на которой установлен сервер приложения ArcSDE и Oracle:
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) (ADDRESS = (PROTOCOL = TCP)(HOST = svr1.dmn1.com)(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = C:\oracle\product\10.2.0\db_1) (PROGRAM = extproc) (ENVS="EXTPROC_DLLS=C:\ArcSDE\sdeexe\bin\st_shapelib.dll;c:\ArcSDE\sdeexe\bin\libst_raster_ora.dll") ) )
На этих примерах показаны записи для серверов Linux или UNIX, на которых одновременно установлены сервер приложений ArcSDE и Oracle.
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) (ADDRESS = (PROTOCOL = TCP)(HOST = svr1.dmn1.com)(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /servit/oracle/product/10.2.0/db_1) (PROGRAM = extproc) (ENVS="EXTPROC_DLLS=/servit/ArcSDE/sdeexe/lib/libst_shapelib.so:/servit/ArcSDE/sdeexe/lib/libst_raster_ora.so") ) )
- После изменения файла listener.ora перезапустите приемник Oracle.