2012-06-08 2 views
6

Czy istnieje sposób na zatrzymanie lub zakończenie długo działającego zapytania Oracle w JDBC? Często kończy się to restartem serwera aplikacji, aby jdbc mógł odłączyć się od Oracle DB.Zatrzymaj lub zakończ długotrwałe zapytanie w JDBC

Szukasz funkcjonalności podobnej do SQL * Plus - Kill session w Java lub JDBC

w SQL * Plus

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

żadnej wskazówki do wykonania w Javie?

+0

[Rozwiązanie] (http://stackoverflow.com/questions/1526211/how-to-cancel-a-postgres-query-in-java-jdbc) to może realizowane przez sterownik Oracle. – assylias

+3

Tak, powinno być. Zobacz [to pytanie] (http://stackoverflow.com/questions/656162/when-i-call-preparedstatement-cancel-in-a-jdbc-application-does-it-actually-k). – eis

Odpowiedz

6

Prawdopodobnie bit off, ale proponuję użyć zamiast tego JDBC Timeout. Ma dodatkową zaletę, że faktycznie kończy się z gracją zamiast siłą.

Dzięki nowoczesnym serwerom aplikacji można zazwyczaj zdefiniować limit czasu JDBC z konfiguracji źródła danych.

+0

Ok zauważyć. Dzięki. – Azi

+0

Chciałbym pozwolić użytkownikowi zdecydować, kiedy zakończyć zapytanie. Czy można to zmienić w środowisku wykonawczym i zaimplementować coś w rodzaju przesunięcia czasu oczekiwania? – supertonsky

+0

@supertonsky Nie jestem świadomy takiej funkcjonalności. – eis

4

krótko po upłynięciu limitu czasu jdbc, jeśli uruchomisz zapytanie w innym wątku, możesz użyć instrukcji Statement.cancel(), aby ją zabić.

1

Można spróbować Statement.setQueryTimeout