🔬 shape_lib en Oracle 19c: cómo sobrevivir al parcheo sin perder tu geometría


Por La Botica del DBA | Oracle
🧪 Introducción boticaria
En la botica del DBA, cada componente tiene su lugar, como en una antigua farmacia donde cada frasco tiene su fórmula precisa. En el mundo de Oracle Spatial, shape_lib
es ese ingrediente activo que, si se pierde tras un parcheo, puede hacer que tu entorno GIS se vuelva disfuncional.
Este no es un simple parche. Estamos hablando de Oracle RAC 19c sobre OCI, con bases multitenant (CDB/PDB), Fleet Patching, y external procedures. Cuando el sistema se parchea, y tus funciones espaciales desaparecen... no necesitás suerte: necesitás bisturí técnico y diagnóstico boticario.
🌍 ¿Qué es una Spatial Database?
En la botica del DBA también almacenamos mapas, coordenadas, geometrías y redes. Una Spatial Database no es más que una base de datos que sabe de territorio, caminos y posiciones: almacena, consulta y analiza datos espaciales y geoespaciales.
En el mundo Oracle, esta capacidad cobra vida gracias a Oracle Spatial and Graph, una extensión nativa de Oracle Database, plenamente soportada en la versión 19c, que convierte tu base en un verdadero sistema de información geográfica (GIS) empresarial.
🧠 ¿Qué permite hacer Oracle Spatial and Graph?
Esta potente extensión habilita a desarrolladores, analistas GIS y DBAs expertos a realizar tareas de análisis espacial avanzado, integrando servicios basados en ubicación, visualización cartográfica e incluso IA geoespacial.
🧪 Funciones destacadas en Oracle 19c:
📐 Almacenamiento y consulta 2D/3D
Soporte para geometrías complejas (puntos, líneas, polígonos, modelos urbanos y gemelos digitales).🗺️ Visualización cartográfica avanzada
Mapas interactivos, teselas vectoriales y uso del índice geoespacial jerárquico H3.🧭 Geocodificación y enrutamiento
Obtención de coordenadas desde direcciones, cálculo de rutas óptimas y análisis de redes físicas y lógicas.🤖 Inteligencia Artificial Espacial
Integración de aprendizaje automático sobre datos geoespaciales para patrones y predicciones.🧰 Oracle Spatial Studio
Herramienta de autoservicio para generar mapas y análisis sin necesidad de escribir código.
🔗 Enlaces de referencia:
🧠 ¿Qué es shape_lib
?
shape_lib
es una librería externa (.so
) que Oracle utiliza mediante el proceso extproc
para ejecutar funciones espaciales avanzadas (por ejemplo: SDO_GEOM.SDO_AREA
). Herramientas como ArcGIS o MapInfo dependen de ella.
Para funcionar, necesita una receta precisa en tres frascos clave:
extproc.ora
→ archivo de configuración para procesos externoslistener.ora
ytnsnames.ora
→ rutas y servicios bien definidosDeclaración en la base → vía
CREATE LIBRARY
🧨 El problema post-parcheo: ¡shape_lib desaparece!
Después de aplicar un parche (ya sea con Fleet o manualmente), en un entorno RAC sobre OCI, observamos:
Se sobrescribe
extproc.ora
, y se pierde:SET EXTPROC_DLLS=ANY
Las funciones espaciales en el esquema
SDE
dejan de funcionar.DBA_LIBRARIES
ya no muestra la referencia ashape_lib
.
🔧 Tratamiento boticario paso a paso
✅ 1. Restaurar extproc.ora
Editá el archivo en todos los nodos RAC:
/u01/app/19.x.x.x/grid/hs/admin/extproc.ora
Asegurate de que contenga:
SET EXTPROC_DLLS=ANY
⚠️ Recuerda aplicarlo en todos los nodos: ej.
nodobotica-bbaa1
ynodobotica-aabb2
.
✅ 2. Validar y (re)crear la librería
Desde la PDB (ej: BOTICAD19
) ejecutá:
ALTER SESSION SET CONTAINER = BOTICAD19;
SELECT library_name, file_spec
FROM dba_libraries
WHERE file_spec LIKE '%shape_lib%';
Si no aparece:
CREATE OR REPLACE LIBRARY shape_lib AS '/u01/app/oracle/shape_lib.so';
GRANT EXECUTE ON shape_lib TO SDE;
✅ 3. Reiniciar instancias para recargar extproc
Podés hacerlo manualmente o con Clusterware:
srvctl stop database -d botica19c_oci -f
srvctl start database -d botica19c_oci
🧪 Validaciones post-receta
Desde el usuario SDE
o SYS
:
SELECT SDO_GEOM.SDO_AREA(shape, 0.05)
FROM sde.<tu_tabla_espacial>
WHERE ROWNUM = 1;
Si ves errores como:
ORA-28575: unable to open RPC connection to external procedure agent
ORA-06520
oORA-06522
\=> Algo sigue fallando enextproc.ora
, el listener o el path del.s.o
.
📋 Checklist de la botica
Elemento | Validación rápida |
extproc.ora | Tiene SET EXTPROC_DLLS=ANY |
Librería en DBA_LIBRARIES | Existe en la PDB correspondiente |
Permisos | GRANT EXECUTE aplicado a SDE |
Servicios | srvctl status service -d botica19c_oci |
Funciones espaciales | Ejecutan correctamente (SDO_GEOM ) |
🧪 Bonus SQL para diagnóstico
-- ¿Dónde estoy?
SHOW CON_NAME;
-- Ver librerías externas activas
SELECT library_name, file_spec
FROM dba_libraries
WHERE file_spec IS NOT NULL;
-- Estado de instancias
SELECT instance_name, status FROM v$instance;
-- PDBs abiertas
SELECT name, open_mode FROM v$pdbs;
-- Validar función espacial
SELECT SDO_GEOM.SDO_AREA(shape, 0.05)
FROM sde.<tu_tabla_espacial>
WHERE ROWNUM = 1;
🧪 Conclusión boticaria
En la botica del DBA, una sola línea omitida puede apagar todo un sistema geoespacial. Pero con bisturí técnico, srvctl
, y el diagnóstico adecuado, la geometría vuelve a respirar.
Si enfrentaste un caso similar, o si tienes tu propia fórmula secreta post-parcheo, te invitamos a compartirla con la comunidad.
💬 Escribeme en admin@laboticadeldba.com
🧴 Aquí recetamos soluciones, no excusas.
Subscribe to my newsletter
Read articles from Mauricio Muñoz Palma directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Mauricio Muñoz Palma
Mauricio Muñoz Palma
Bienvenidos a "La Botica del DBA" Donde la pasión por las bases de datos Oracle se transforma en conocimiento y excelencia. Este espacio está diseñado para ser el laboratorio de ideas, soluciones y estrategias que todo DBA necesita para optimizar, innovar y liderar en el mundo de las bases de datos. Desde los fundamentos hasta las últimas tendencias, aquí encontrarás guías prácticas, análisis profundos y herramientas que impulsarán tu carrera y tus proyectos al siguiente nivel.