miércoles, 12 de noviembre de 2025

ORA-06590: PL/SQL: Native mode requires execute privileges on the shared memory object directory después de aplicar RU 19.28 en Oracle Linux 8.x


Si tienes "Oracle Database 19c Release 19.0.0.0.0 - Production Version 19.28.0.0.0 y quieres compilar en modo NATIVE una unidad de programación, vas a recibir el error: "ORA-06590: PL/SQL: Native mode requires execute privileges on the shared memory object directory". 

El error también se reproduce en RU 19.29, si haz aplicado desde otro parcheo distinto a RU 19.27.

El mismo ambiente que con 19.27 no genera error. Funciona correctamente sin inconvenientes, hasta la aplicación del parche.

Recuerden la idea de compilar funciones, procedimientos o paquetes en modo NATIVE es que en lugar de generar bytecode, se genere código C que luego se traduce a una biblioteca compartida compilada. El código fuente de PL/SQL se compila directamente a código máquina, dando como resultado una ejecución más rápida.

El problema es con /dev/shm la carpeta especial en Linux que representa una porción de memoria RAM utilizada como sistema de archivos temporal. El sistema /dev/shm sirve para que distintos procesos puedan intercambiar información rápidamente sin pasar por el disco, utilizando la memoria compartida del kernel.

En Oracle Linux 8 de facto se monta /dev/shm con el atributo "noexec" que es la opción de montaje del sistema que impide la ejecución de cualquier binario o script almacenado en esa ubicación.

Lo que se debe hacer es remontar /dev/shm con: mount -o remount,exec /dev/shm y luego cambiar la línea en el archivo /etc/fstab como se ve a continuación, para evitar que en el siguiente reinicio, vuelva a la configuración original.

# Error en compilacion de objetos NATIVE en Oracle Database
# ORA-06590: PL/SQL: Native mode requires execute privileges on the shared memory object directory
# tmpfs          /dev/shm        tmpfs  defaults,nodev,nosuid,noexec   0 0
tmpfs          /dev/shm            tmpfs  defaults,nodev,nosuid   0 0


Esto se reproduce a partir de la aplicación del Release Update 19.28 en el motor de la base de datos Oracle 19c.

La solución fue prevista por el MOS en atención al SR 3-42843259511 : Error when compiling an object in NATIVE code Oracle Database 19c RU 19.28, por tanto, se encuentra documentado.

Gracias a la ayuda de Sakthivel Subramanian, Oracle Support

Veamos el caso en detalle, tengo el siguiente código en la base de datos correspondiente a un procedimiento almacenado del esquema HR.


Con el R.U. 19.27 puedo cambiar los valores del parámetro PLSQL_CODE_TYPE de INTERPRETED a NATIVE y compilar sin problemas.


Ahora procedemos a parchar la base de datos con el R.U. 19.28


Al recompilar el procedimiento con el valor del parámetro PLSQL_CODE_TYPE en NATIVE, se reproduce el error.

Pueden observar más claramente el error de compilación en la vista DBA_ERRORS


Todos los componentes de la base de datos, están en estado VALIDO


Después de hacer los ajustes en el remontaje del sistema de archivos, el error desaparece









 

No hay comentarios:

Publicar un comentario

Te agradezco tus comentarios. Te esperamos de vuelta.

Todos los Sábados a las 8:00PM