2013-06-14 6 views
0

Nous obtenons l'erreur suivante en utilisant Oracle:erreur Oracle: le basculement d'application ne prend pas en charge la déclaration non-simple SELECT

[Oracle JDBC Driver] basculement d'application ne prend pas en charge la déclaration non-simple SELECT

L'erreur se produit lorsque nous essayons d'effectuer une suppression ou une insertion sur un grand nombre de lignes (des dizaines de millions de lignes).

Je sais que le script fonctionne, car il a fonctionné pendant presque un an avant que ces messages d'erreur commencent à apparaître.

Nous savons que personne ne change la configuration de la base de données, donc nous nous apercevons que le problème doit être sur le volume de données traitées (le nombre de lignes augmente au fil du temps ...).

Mais nous ne voyons jamais ce genre d'erreur avant! Qu'est-ce que ça veut dire? Il semble qu'un moteur de reprise essaye de se remettre d'une erreur, mais quand Oracle est "pris en charge" par ce moteur, il entre dans un état plus restreint, où certains types de requêtes ne fonctionnent pas (comme Windows Safe Mode ...)

Eh bien, si c'est ce qui se passe, comment puis-je obtenir le vrai message d'erreur? Celui qui déclenche le mécanisme de basculement?

BTW, ci-dessous est l'un des suppressions qui déclenche l'erreur:

supprimer odf_ca_rnv_av_snapshot_week

(nous avons essayé celui-ci juste pour tester supprimer le plus simple que nous pourrions penser ... un troncature gagné » t nous aider avec la vraie affaire :))

+0

Y a-t-il une chance qu'il y ait des déclenchements ou quelque chose comme ça qui se déclencherait lorsque vous effectuez la suppression? –

+0

Je vais vérifier les déclencheurs ... nous n'avons pas ajouté de déclencheurs, mais nous travaillons dans un cadre plus grand qui crée automatiquement des déclencheurs d'audit. Nous n'avons pas demandé d'audit sur les tables sur lesquelles nous travaillons, mais je dois vérifier si des triggers vides n'ont pas été créés. –

+0

Considérez également les clés étrangères et cascade supprimer –

Répondre

0

check this link

l'erreur semble venir d'Oracle ou pas JDBC, mais de « progrès ». Cela signifie qu'il ne peut récupérer que des instructions SELECT et non de DML.

Vous devrez comprendre pourquoi le basculement se produit en premier lieu.

+0

J'ai oublié que j'avais demandé cette requête! Pardon! –

+0

J'ai oublié que j'avais demandé cette requête! Pardon! La semaine était assez intense ... après un certain temps nous avons découvert que la suppression avait soufflé de la mémoire interne du serveur Oracle. À partir de ce moment, certaines fonctionnalités de la base de données ont cessé de fonctionner. Les DBA ont demandé (orderered ...) que nous interrompions l'opération de suppression dans plus d'une suppression, supprimant chacun des morceaux plus petits de la table (truncate n'était pas une option car la suppression réelle avait une clause where ...). –

Questions connexes