Modifier / Préface: Cette question a été migrée depuis SO car je suis particulièrement intéressé par la question des délais d'attente sur les requêtes de lien DB. La solution de contournement fournie par SO est quelque peu correcte, mais je suis vraiment intéressé par la question elle-même.
Motivation:
j'ai eu une requête exécutée "pour toujours" (plus de 2 jours, jusqu'à ce que j'ai tué la session), qui utilisait un lien de base de données. Le problème semble être que la base de données distante est devenue indisponible et pour une raison inconnue, aucune n'a ORA-02068
été soulevée (à ne pas discuter ici) et la requête a simplement attendu et attendu.
(La requête est émise par un travail dbms_scheduler, qui exécute une procédure dans un package PL / SQL. Par conséquent, le travail a également été bloqué. Mais cela n'a pas un intérêt particulier pour le cœur de cette question)
J'ai simulé cette situation en mettant une de mes bases de données de test en mode repos et en la questionnant sur un lien de base de données. Comme prévu, la requête attendait jusqu'à ce qu'elle soit annulée manuellement ou que la base de données distante soit suspendue.
Question:
Je n'ai aucun contrôle sur le comportement et la disponibilité de la base de données distante, je suis donc à la recherche d'une possibilité de définir un délai d'expiration sur une requête qui utilise un lien de base de données.
J'ai déjà examiné les profils ( CPU_PER_CALL
etc.), les sqlnet.ora
paramètres, l'ajout de paramètres de dénomination locaux directement dans la chaîne de connexion (comme l'ajout (connect_timeout=10)
à la définition de lien de base de données), l'exécution d'une commande avec ... for update wait 1
, mais ils fonctionnent soit pour les sessions occupées soit inactives, mais pas pour les sessions en attente.
Je suis donc à la recherche d'une option du côté "local" du lien de base de données, ce qui définit un délai d'attente pour les requêtes sur les liens de base de données.
Une solution comme alter session set xyz
ou select ... from a@b "wait 100" --(yes, I know this syntax doesn't exist)
serait appréciée, car je n'ai aucun droit DBA sur ces bases de données particulières.
Je suis actuellement sur 10gR2 mais je passe à 11gR2 dans quelques semaines, donc des idées pour l'une de ces versions seront utiles.