Обратите внимание, что то, что я говорю ниже, основано на наблюдениях и выводах об использовании Oracle и не основано на каком-либо глубоком понимании внутренних органов Oracle. Ничто из этого не должно считаться авторитетным.
То, что ninesided сказал в первом абзаце, верно. Однако остерегайтесь предложенного теста. Не все длительные запросы оракула одинаковы. Похоже, что запросы оцениваются в два этапа: первый этап, который объединяет достаточное количество данных, чтобы знать, как вернуть строки в правильном порядке, и второй этап, который возвращает строки, заполняющие пробелы, которые он не вычислял в первая фаза. На разделение работы между двумя фазами также влияют настройки оптимизатора на основе затрат. например Первые строки против всех строк.
Теперь, если запрос находится на фазе 1, запрос на отмену в лучшем случае представляется в очередь для применения в конце фазы 1, что означает, что запрос продолжает работать.
На этапе 2 строки возвращаются в виде групп, и после каждой группы команда отмены может вступать в силу, поэтому, если драйвер поддерживает эту команду, запрос отмены приведет к уничтожению запроса.
В спецификации для команды отмены JDBC, похоже, не говорится о том, что должно произойти, если запрос не прекращается, и поэтому команда может ожидать подтверждения уничтожения или может выполнить тайм-аут и вернуться с продолжающимся запросом.