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.
- Consultar 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.
- Consultar capas de entidades en bins en ArcGIS Pro.
- Publicar una capa web que haga referencia a los datos de la base de datos de Oracle.
- Ejecute la herramienta de geoprocesamiento Seleccionar capa por ubicación con la opción Intersecar (DBMS).
Configure el marco de procedimiento externo de Oracle para llamar a la biblioteca de ST_Geometry para realizar estas tareas.
Sugerencia:
La biblioteca de ST_Geometry se instala con los clientes de ArcGIS Server y ArcMap, o bien puede descargarse desde My Esri. Si tiene instalado ArcGIS Server o ArcMap en el equipo de Oracle, puede configurar su archivo extproc.ora para que apunte a una de las siguientes ubicaciones y omitir los dos pasos preparatorios que se indican a continuación.
- ArcGIS Server en Windows: <ArcGIS Server installation directory>\ArcGIS\Server\DatabaseSupport\Oracle\Windows64
- ArcGIS Server en Linux: <ArcGIS Server installation directory>/arcgis/server/DatabaseSupport/oracle/linux64
- ArcMap: <ArcMap installation directory>\ArcGIS\Desktop<version>\DatabaseSupport\Oracle\Windows64
Si apunta a la ubicación de ArcMap o ArcGIS Server, obtendrá automáticamente las bibliotecas actualizadas cuando instale una versión nueva de ArcMap o ArcGIS Server. Si colocó las bibliotecas en otra ubicación, debe actualizarlas manualmente para obtener las correcciones y mejoras que se incluyen en las versiones nuevas de las bibliotecas de ArcGIS.
Antes de configurar el 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 de Oracle.
Nota:
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.
- 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 Oracle de 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
- 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 Oracle de 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.