Configurar el extproc para acceder a ST_Geometry en Oracle

Las funciones SQL de ST_Geometry en Oracle usan una biblioteca compartida a la que Oracle accede a través del agente de procedimiento externo de Oracle, o extproc. Oracle necesita acceder al archivo de biblioteca físico para realizar cualquiera de las siguientes tareas:

Debe configurar el marco de procedimiento externo de Oracle para llamar a la biblioteca ST_Geometry (ST_SHAPELIB) para realizar las tareas enumeradas anteriormente.

Pasos preparatorios

La biblioteca ST_Geometry se crea para sistemas operativos específicos. Puede copiar el archivo desde una instalación de ArcGIS Server o descargarlo desde My Esri.

Las bibliotecas se instalan con ArcGIS Server en las siguientes ubicaciones:

  • <ArcGIS Server installation directory>\ArcGIS\Server\DatabaseSupport\Oracle\Windows64\st_shapelib.dll
  • <ArcGIS Server installation directory>/arcgis/server/DatabaseSupport/oracle/linux64/libst_shapelib.so
  • <ArcGIS Server installation directory>/arcgis/server/DatabaseSupport/oracle/ibmaix64/libst_shapelib.so
  • <ArcGIS Server installation directory>/arcgis/server/DatabaseSupport/oracle/sunos64/libst_shapelib.so

La instancia de Oracle debe tener acceso a la biblioteca ST_Geometry. Coloque la biblioteca en el equipo Oracle en un directorio al que pueda acceder la instancia o, si ArcGIS Server y Oracle están instalados en el mismo equipo, puede configurar el archivo extproc.ora para que apunte al archivo del directorio de instalación ArcGIS Server.

Nota:

Si configura el archivo extproc.ora para que apunte al archivo del directorio de instalación de ArcGIS Server, puede omitir los pasos preparatorios a continuación. Sin embargo, ejecutar ArcGIS Server y Oracle en el mismo equipo puede causar problemas de rendimiento debido al conflicto de recursos en el equipo.

Antes de configurar el extproc de Oracle, siga estos pasos:

  1. Si su instancia de Oracle no tiene acceso a las ubicaciones de instalación de ArcGIS Server indicadas anteriormente, descargue la biblioteca ST_Geometry desde My Esri o copie el archivo desde un equipo cliente de ArcGIS Server a un directorio del equipo de Oracle.
    Nota:

    Asegúrese de descargar o copiar la biblioteca correcta para su sistema operativo de Oracle.

    La biblioteca ST_Geometry necesita el paquete redistribuible de Microsoft Visual C++ (x64) cuando se implementa en un servidor de Microsoft Windows. Consulte Requisitos de base de datos Oracle para conocer la versión del paquete que se requiere. Si este paquete no está presente en el servidor de Oracle, descárguelo desde el sitio web de Microsoft e instálelo.

  2. Cuando ejecuta la herramienta de geoprocesamiento Crear tipo espacial para habilitar ST_Geometry en una base de datos de Oracle o ejecuta las herramientas de geoprocesamiento Crear geodatabase corporativa o Habilitar geodatabase corporativa para crear una geodatabase, las herramientas establecen una ruta predeterminada para la biblioteca ST_SHAPELIB.
  3. Conéctese a la instancia de Oracle como usuario sde desde un cliente SQL y ejecute el siguiente SQL para confirmar que la ruta establecida por la herramienta coincide con la ubicación de la biblioteca ST_Geometry:

    SELECT file_spec
     FROM user_libraries
     WHERE library_name = 'ST_SHAPELIB';

    Si la ruta obtenida no coincide con la ubicación del archivo de la biblioteca ST_Geometry, cree de nuevo la biblioteca después de configurar extproc.

Configurar extproc

Configure el archivo Oracle de extproc.ora para que apunte a la ubicación del archivo de la biblioteca ST_Geometry.

  1. Realice una copia de seguridad del archivo extproc.ora en el servidor de Oracle.
  2. Abra el archivo extproc.ora en un editor de texto y modifíquelo para que apunte a la ubicación de la biblioteca st_shapelib.dll (Windows) o libst_shapelib.so (Linux o UNIX).

    En este ejemplo, no hay ningún cliente de ArcGIS instalado en el servidor de Oracle Windows, así que st_shapelib.dll se ha copiado en un directorio llamado mylibraries en el equipo Oracle. La línea siguiente se agrega a extproc.ora para que apunte a la biblioteca ST_Geometry en ese directorio:

    SET EXTPROC_DLLS=ONLY:C:\\mylibraries\\st_shapelib.dll

    En este ejemplo en un servidor Linux o UNIX, se agrega la siguiente línea para que señale la biblioteca ST_Geometry del directorio esrilibs del usuario, que se creó en el servidor de Oracle para almacenar la biblioteca:

    SET EXTPROC_DLLS=ONLY:/user/esrilibs/libst_shapelib.so

  3. Guarde y cierre el archivo extproc.ora.

    Puede que tenga que reiniciar la instancia de Oracle para que reconozca los cambios en el archivo extproc.ora.

  4. Si cambió la ubicación predeterminada del archivo de la biblioteca ST_Geometry o si no se definió ninguna ubicación, cree o vuelva a crear la biblioteca ST_SHAPELIB en la base de datos de Oracle.

    En este ejemplo, la biblioteca ST_SHAPELIB está definida en el directorio mylibraries de un servidor de Oracle Windows donde se ubicó el archivo st_shapelib.dll.

    CREATE or REPLACE LIBRARY ST_SHAPELIB
     AS 'C:\mylibraries\st_shapelib.dll';

  5. Si ha creado la biblioteca de nuevo, vuelva a compilar el paquete sde.st_geometry_shapelib_pkg.

    ALTER PACKAGE sde.st_geometry_shapelib_pkg COMPILE
     REUSE SETTINGS;

  6. Cualquier cliente que necesite tener acceso a la biblioteca (servicios Web incluidos) debe volver a conectarse a la base de datos.

Validar la configuración de extproc

Puede consultar la biblioteca ST_Geometry para asegurarse de que extproc pueda acceder a ella.

  1. Inicie sesión en un cliente SQL Oracle.
  2. Ejecute la siguiente consulta:

    SELECT sde.ST_AsText(SDE.ST_Geometry('POINT (10 10)', 0)) FROM dual;

    Si extproc está configurado correctamente, la consulta devolverá lo siguiente:

    SDE.ST_ASTEXT(SDE.ST_GEOMETRY('POINT(1010)',0)) -------------------------------------------------------------------------------- POINT ( 10.00000000 10.00000000)

    Si extproc no está correctamente configurado, puede ver uno o varios de los siguientes mensajes de error:

    ORA-06520: PL/SQL: Error al cargar la biblioteca externa

    ORA-06522: No se puede cargar la DLL

    ORA-06512: en "SDE.ST_GEOMETRY_SHAPELIB_PKG", línea 0

    ORA-06512: en "SDE.ST_GEOMETRY_SHAPELIB_PKG", línea 68