Настройка 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 описывает некоторые (не обязательно все) сервисы, для которых приемник осуществляет прием запросов.

В данном файле можно изменять следующие значения:

Шаги:
  1. Перед внесением любых изменений сделайте резервные копии файлов tnsnames.ora и listener.ora.
  2. Откройте файл tnsnames.ora на сервере Oracle.
  3. Измените значения 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.

  4. Откройте файл listener.ora на сервере Oracle.
  5. Измените необходимые поля для настройки сервисов, от которых приемник осуществляет прием запросов.

    Первый пример приведен для операционной системы 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")
        )
       )

  6. После изменения файла listener.ora перезапустите приемник Oracle.
12/10/2012