20 минут на запрос в Oracle? Держу пари, у вас нет соответствующих индексов для столбцов в предложении WHERE.
Мертвая распродажа - это РАЗЪЯСНИТЬ ПЛАН по запросу. Если вы видите TABLE SCAN, примите соответствующие меры.
Если вы можете выполнить тот же запрос в SQL * Plus и увидеть, что он возвращается в разумные сроки, тогда я ошибаюсь, и проблема связана с чем-то еще, что вы сделали в коде Java.
Не понимаю, зачем вам нужен отдельный поток для запроса. Я запускаю код прямо, без потока и смотрю, как он себя ведет. Если вы не проиндексированы должным образом, добавьте немного; если запрос возвращает слишком много данных, добавьте предложения WHERE, чтобы ограничить его. Вы приняли необычайные меры, не понимая, в чем причина.