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:
- Ejecutar funciones SQL de ST_Geometry desde clientes SQL.
- Acceder a las columnas XML en las vistas de sistema de geodatabase GDB_ITEMS_VW y GDB_ITEMRELATIONSHIPS_VW.
- Definir una capa de consulta en ArcMap o ArcGIS Pro que ejecute funciones SQL en columnas de ST_Geometry.
- Publicar datos provenientes de la base de datos Oracle.
Configurar el marco de procedimiento externo de Oracle para llamar a la biblioteca de ST_Geometry para realizar estas tareas.
Antes de configurar extproc de Oracle, siga estos pasos:
- Si su instancia de Oracle no tiene acceso a las ubicaciones de instalación de ArcGIS Server o ArcMap indicadas anteriormente, descargue la biblioteca de ST_Geometry desde My Esri o copie el archivo desde el equipo cliente de ArcGIS a un directorio del equipo de Oracle. Asegúrese de copiar la biblioteca correcta para su sistema operativo Oracle.
- Las herramientas de geoprocesamiento Crear tipo espacial, Crear geodatabase corporativa y Habilitar geodatabase corporativa definen una ruta predeterminada para la biblioteca ST_SHAPELIB. Conéctese a la instancia de Oracle como usuario SDE desde un cliente SQL y ejecute el siguiente SQL para ver la ruta que está definida actualmente para la biblioteca ST_SHAPELIB:
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.
Configure el archivo extproc.ora de Oracle para que apunte a la ubicación del archivo de la biblioteca ST_Geometry.
- Realice una copia de seguridad del archivo extproc.ora en el servidor de Oracle.
- Abra el archivo extproc.ora 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 línea siguiente 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
- 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.
- 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';
- Si volvió a crear la biblioteca, vuelva a compilar el paquete sde.st_geometry_shapelib_pkg.
ALTER PACKAGE sde.st_geometry_shapelib_pkg COMPILE REUSE SETTINGS;
- Cualquier cliente que necesite tener acceso a la biblioteca (servicios Web incluidos) debe volver a conectarse a la base de datos.