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