Editar / Prefacio: esta pregunta se ha migrado de SO, ya que estoy particularmente interesado en la pregunta sobre los tiempos de espera en las consultas de enlace de base de datos. La solución provista por SO está bastante bien, pero estoy realmente interesado en la pregunta en sí.
Motivación:
tuve una consulta ejecutándose "para siempre" (más de 2 días, hasta que finalicé la sesión), que usaba un enlace de base de datos. El problema parecía ser que la base de datos remota no estaba disponible y, por alguna razón desconocida, no ORA-02068
se planteó ninguna (no se discutirá aquí) y la consulta simplemente esperó y esperó.
(La consulta es emitida por un trabajo dbms_scheduler, que ejecuta un procedimiento en un paquete PL / SQL. Como consecuencia, el trabajo también se atascó. Pero eso no es de especial interés para el núcleo de esta pregunta)
Simulé esta situación poniendo uno de mis DB de prueba en modo inactivo y lo consulté a través de un enlace de base de datos. Como se anticipó, la consulta estaba esperando hasta que se cancelara manualmente o la DB remota no fuera inmovilizada.
Pregunta:
No tengo control sobre el comportamiento y el tiempo de actividad de la base de datos remota, por lo que estoy buscando alguna posibilidad de establecer un tiempo de espera en una consulta que utiliza un enlace de base de datos.
Ya he examinado los perfiles ( CPU_PER_CALL
etc.), los sqlnet.ora
parámetros, agregando parámetros de nombres locales directamente en la cadena de conexión (como agregar (connect_timeout=10)
a la definición del enlace de la base de datos), ejecutando un comando con ... for update wait 1
, pero funcionan para sesiones ocupadas o inactivas, pero no para sesiones en espera.
Así que estoy buscando alguna opción en el lado "local" del enlace de la base de datos, que establece un tiempo de espera para las consultas sobre los enlaces de la base de datos.
Alguna solución como alter session set xyz
o select ... from a@b "wait 100" --(yes, I know this syntax doesn't exist)
sería apreciada, ya que no tengo derechos de DBA en estos DB en particular.
Actualmente estoy en 10gR2 pero actualizo a 11gR2 en unas pocas semanas, por lo que las ideas para cualquiera de estas versiones serán útiles.