Cuando ejecutamos procedimientos muy pesados en Oracle APEX, en algunas ocasiones dependiendo el tiempo de ejecución del procedimiento, se nos puede presentar un error como el siguiente:

Al mismo tiempo, este error también puede mostrar un mensaje como el siguiente durante la ejecución del procedimiento en la interfaz gráfica de Oracle APEX:

Se muestra un error en blanco que no nos brinda mayor información sobre lo que podría estar fallando

Solución:

Este error se debe a que el ORDS tiene un parámetro llamado jdbc.statementTimeout este parámetro por default tiene un valor de 900 segundos y especifica cuánto tiempo puede permanecer una conexión prestada (en uso) antes de que se considere abandonada y se reclame, si el procedimiento que ejecutamos es demasiado pesado, se superará el tiempo y esto hará que se muestre el error 504 gateway time-out.

Es por ello que debemos aumentar ese valor de 900 segundos a un valor mayor.

Para implementar la solución del error, debemos ir al archivo default.xml dentro de la ruta de instalación del ORDS y añadir la siguiente entrada:

<entry key="jdbc.statementTimeout">5000</entry>

En este caso lo aumentaremos a 5000, sin embargo, dependiendo el peso y tiempo de duración del proceso, este valor puede variar.

De manera que se vea así:

Se debe reiniciar el ORDS para que los cambios se apliquen.

Adicionalmente, en caso de que el ORDS esté desplegado en un Tomcat server o algún otro application server, sería bueno revisar la configuración de time out del servidor, ya que es posible que eso este bloqueando la ejecución de la sentencia y no sea un tema únicamente de la configuración del ORDS sino también del application server.

Nota: Para mayor información sobre este y otros parámetros del ORDS puede consultar el siguiente URL:

https://docs.oracle.com/database/ords-17.3/AELIG/about-REST-configuration-files.htm#AELIG7203

Deja una respuesta

Tu dirección de correo electrónico no será publicada.