Comment intercepter les ORA-02055, “distribués opération de mise à jour a échoué; la restauration nécessaire” et, éventuellement, obtenir à la cause racine

Dans une procédure stockée sur un serveur Oracle, je tente d'insérer un enregistrement dans une table, sur un deuxième serveur Oracle et il échoue à l'exception de "distribué opération de mise à jour a échoué; la restauration nécessaire"

Bien que mon code est enveloppé dans un COMMENCER de FIN d'EXCEPTION, le gestionnaire d'erreur ne parvient pas à intercepter l'erreur.

J'ai même jeté à l'intérieur d'un deuxième gestionnaire d'erreur avec aucun effet. Aucune idée de pourquoi je ne peux pas rattraper cette erreur. La Procédure se compile sans problème.

Mon principal objectif est d'intercepter l'erreur pour que je puisse retourner quelque chose d'utile à mon utilisateur. En plus j'ai envie d'aller à la racine de l'erreur, si possible.

Note 1: Si je dé-commenter la ligne qui pose la "Distance d'Erreur", puis il est pris comme prévu.

Note 2: La connexion au serveur distant est solide comme je peux l'interroger sans problème.

Les deux serveurs sont: Oracle Database 11g Release 11.2.0.3.0 - 64bit Production

BEGIN                                                                 
    begin
      --raise_application_error( -20001, 'Remote Error' );
      insert into RemoteSchema.RemoteObject@RemoteSystem
        (field_one, field_two)
        select value_one, value_two from dual;
     exception
       when others then
         raise_application_error( -20000, 'Remote Error:' || sqlerrm );
     end;
 exception
   when others then
     raise_application_error( -20000, 'Caught Remote Error:' || sqlerrm );
 end;

OriginalL'auteur AnthonyVO | 2012-09-12