Skip to main content

Configurar 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. El marco de procedimientos externos de Oracle requiere acceso al archivo físico de la biblioteca ST_SHAPELIB para permitirle realizar cualquiera de las siguientes acciones:

Pasos preparatorios

La biblioteca ST_Geometry se crea para sistemas operativos específicos. Inicie sesión en My Esri y descargue el archivo de biblioteca específico para el sistema operativo en el que se ejecuta Oracle y específico para la versión del cliente ArcGIS que está utilizando.

La instancia de Oracle debe tener acceso a la biblioteca ST_Geometry. Coloque la biblioteca en el equipo de Oracle en un directorio al que pueda acceder la instancia de Oracle.

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

  1. Descargue la biblioteca ST_Geometry desde My Esri y colóquela en un directorio del equipo de Oracle.

    Nota:

    Descargue o copie la biblioteca correcta para su sistema operativo 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 ArcGIS para Oracle para conocer la versión del paquete que se requiere. Si este paquete no está presente en el servidor Oracle, descárguelo desde el sitio web de Microsoft e instálelo.

    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.

  2. Conéctese desde un cliente SQL a la instancia de Oracle como usuario sde 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 extproc.ora de Oracle para que apunte a la ubicación del archivo de la biblioteca ST_Geometry. Consulte la documentación de Oracle para obtener información sobre la sintaxis de Oracle SQL.

  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).

  3. Guarde y cierre el archivo extproc.ora.

    Puede que tenga que reiniciar la instancia de Oracle para que identifique 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.

    Debe conectarse a una base de datos como el usuario sde para crear o volver a crear la biblioteca ST_Geometry.

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

    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 de 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, la consulta devuelve 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_OPERATORS", line 68

Actualizaciones y la biblioteca ST_Geometry

Debe descargar o copiar nuevas versiones del archivo de biblioteca para obtener las correcciones y mejoras incluidas en las nuevas versiones de la biblioteca cada vez que actualice la geodatabase en Oracle o necesite actualizar el tipo ST_Geometry en una base de datos de Oracle.

Oracle puede marcar la biblioteca como no válida al reemplazarla o después de actualizar la instancia de Oracle. Oracle a veces vuelve a compilar automáticamente objetos de base de datos no válidos cuando un cliente hace referencia a dichos objetos, pero hay casos en los que no se compilan automáticamente.

La biblioteca ST_Geometry pertenece al usuario sde. Para verificar el estado de la biblioteca (y todos los archivos propiedad del usuario sde), inicie sesión en un cliente SQL como el usuario sde y ejecute la siguiente instrucción:

SELECT object_name, object_type
FROM USER_OBJECTS
WHERE STATUS = 'INVALID';

Si el cuerpo del paquete de sde.st_geometry_shapelib_pkg se devuelve en la lista de objetos no válidos, vuelva a compilarlo como se describe en el paso 5 de la sección Configurar extproc de más arriba.

Si más de un objeto no es válido, puede recompilar todos los objetos en el mismo esquema. Consulte la documentación de Oracle para conocer los privilegios requeridos e instrucciones para recompilar objetos.