2012-06-08 2 views
6

Есть ли способ остановить или прекратить длительный запрос Oracle в JDBC? Это часто приводит к перезапуску сервера приложений, чтобы заставить jdbc отключиться от Oracle DB.Остановить или завершить длинный запрос в JDBC

В поисках функциональности аналогично SQL Plus - Kill session в Java или JDBC

в SQL Plus

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

любой ключ для выполнения в Java?

+0

[Это решение] (http://stackoverflow.com/questions/1526211/how-to-cancel-a-postgres-query-in-java-jdbc), может быть, реализованный драйвером Oracle. – assylias

+3

Да, должно быть. См. [Этот вопрос] (http://stackoverflow.com/questions/656162/when-i-call-preparedstatement-cancel-in-a-jdbc-application-does-it-actually-k). – eis

ответ

6

Возможно, бит выключен, но я бы предложил вместо этого использовать JDBC Timeout. Это имеет дополнительное преимущество, фактически прекращая изящно, а не силой.

С современными серверами приложений вы обычно можете определить тайм-аут JDBC из конфигурации источника данных.

+0

Хорошо отметил. Благодарю. – Azi

+0

Я хочу, чтобы пользователь решил, когда нужно завершить запрос. Может ли это быть изменено во время выполнения и реализовать что-то вроде скользящего тайм-аута? – supertonsky

+0

@supertonsky Я не знаю о такой функциональности. – eis

4

не хватает времени ожидания jdbc, если вы запустите свой запрос в другом потоке, вы можете использовать Statement.cancel(), чтобы его убить.

1

Вы можете попробовать Statement.setQueryTimeout

Смежные вопросы