Solucionado: Error en ORDS, ORA-00604, error occurred at recursive SQL level 1, ORA-01031 insufficient privileges

Un día cualquiera trabajando con Oracle APEX, cuando los usuarios me reportan problemas al acceder a los servicios REST.

Reviso el log del tomcat en el cual esta desplegado mi ORDS y me encuentro con el siguiente error:

Caused by: Error : 604, Position : 0, Sql = select nvl(h.items_per_page,m.items_per_page) items_per_page, t.etag_type, t.etag_query, h.source_type, cursor(select p.name, p.bind_variable_name, p.source_type,p.access_method, p.param_type from user_ords_parameters p where p.handler_id = h.id) parameters, h.source from user_ords_modules m, user_ords_templates t, user_ords_handlers h where m.status = 'PUBLISHED' and t.id = h.template_id and m.id = t.module_id and h.id = :1 , OriginalSql = select nvl(h.items_per_page,m.items_per_page) items_per_page, t.etag_type, t.etag_query, h.source_type, cursor(select p.name, p.bind_variable_name, p.source_type,p.access_method, p.param_type from user_ords_parameters p where p.handler_id = h.id) parameters, h.source from user_ords_modules m, user_ords_templates t, user_ords_handlers h where m.status = 'PUBLISHED' and t.id = h.template_id and m.id = t.module_id and h.id = ?,

Error Msg = ORA-00604: error occurred at recursive SQL level 1
ORA-01031: insufficient privileges


Los síntomas eran al acceder al cualquier servicios RESTFul y un mensaje de error 500 en la pantalla del ORDS.


Oracle me recomendaba para reproducir el error, ejecutar la siguiente consulta:

SELECT
nvl(h.items_per_page,m.items_per_page) items_per_page,
t.etag_type,
t.etag_query,
h.source_type,
CURSOR (
SELECT
p.name,
p.bind_variable_name,
p.source_type,
p.access_method,
p.param_type
FROM
user_ords_parameters p
WHERE
p.handler_id = h.id
) parameters,
h.source
FROM
user_ords_modules m,
user_ords_templates t,
user_ords_handlers h
WHERE
m.status = 'PUBLISHED'
AND t.id = h.template_id
AND m.id = t.module_id

Al parecer todo se debia a un BUG no publicado Bug 27926255 

El problema al parecer se produce al usar una version de ORDS no soportada con la DBCS, lo cual no me hacia sentido ya que venia mas de un año trabajando bien, sin embargo la workaround segerido era aplicar manualmente los siguientes permisos:

grant select on ORDS_METADATA.ORDS_PARAMETERS to <your_user>;
grant select on ORDS_METADATA.ORDS_SCHEMAS to <your_user>;


Ejecute la solución sugerida, reinicie el tomcat, espero esto no soluciono mi problema. Lo dejo aquí para que sea el primera paso por si a alguno le es de utilidad.


Buscando un poco mas me encontré con  el mismo comportamiento reportado, que aplicaba para versión 19.1 de ORDS en adelante (19.4) sobre cualquier plataforma.

Mismos síntomas:

Error Msg = ORA-00604: error occurred at recursive SQL level
ORA-01031: insufficient privileges


En este caso se refiere el fabricante a otro error bug no publicado  Bug 29049673. La nota indica que ha sido identificado como un defecto del producto.

La solución sugerida es que deshabilitar el parche (fix) para 20648883 en la sesión (que no me hace sentido) o a nivel del sistema (me solvento el problema).

alter session set "_fix_control"='20648883:OFF';
alter system set "_fix_control"='20648883:OFF';

Eureka, luego de aplicar estos cambios volvió a operar mi ORDS con normalidad. 

Al parecer en futuras versiones este problema será corregido, espero que algún alma necesita le sirva esta entrada.

Comentarios

  1. Muchas gracias. De no ser por esta nota, seguiríamos buscando la causa raíz vía el bug 2439386.1 que, en realidad, apunta a un problema con BD en nube cuya corrección es instalando una versión de ORDS más reciente, lo cual no era nuestro escenario.

    ResponderEliminar
  2. Gracias, la solución es adecuada para la versión DB 19.19. Eres el mejor

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Instalar OCI8 en CentOS

ORA-30036: Unable to extend segments in undo tablespace 'UNDO' en Oracle Database 10g Express Edition