8
votes

Arrêtez ou terminez la requête longue en cours d'exécution dans JDBC

Y a-t-il un moyen d'arrêter ou de mettre fin à une requête Oracle longue dans JDBC? Cela finit souvent par le serveur d'applications de redémarrage pour que JDBC se déconnecte de Oracle DB.

Recherche de fonctionnalités similaires à SQL Plus - Tuer Session Code> dans Java ou JDBC P>

dans SQL Plus P>

SQL> ALTER SYSTEM KILL SESSION 'sid,serial#';


2 commentaires

Cette solution est peut-être mise en œuvre par le pilote Oracle.


Oui, ça devrait être. Voir Cette question .


3 Réponses :


6
votes

éventuellement mord, mais je proposerais d'utiliser Timeout JDBC à la place. Il a l'avantage supplémentaire de se termine réellement gracieusement au lieu de la force.

Avec des serveurs d'applications modernes, vous pouvez généralement définir le délai d'attente JDBC de la configuration de DataSource.


2 commentaires

Je voudrais laisser l'utilisateur à décider quand résilier la requête. Cela peut-il être changé au moment de l'exécution et implémenter quelque chose comme un délai de temporisation?


@supertonsky Je ne suis pas au courant de cette fonctionnalité.



8
votes

Short du délai d'attente JDBC, si vous exécutez votre requête dans un autre thread, vous pouvez utiliser la relevé.cancel () pour le tuer.


0 commentaires

2
votes

Vous pouvez essayer énoncé.sequeryTimeout


0 commentaires