Пожалуйста, убедитесь, что ваш код всегда выбирает все результаты из ResultSet, и убедитесь, что ResultSet и PreparedStatement также всегда закрываются () d. Если вы не гарантируете эти вещи, возможно, курсор не будет автоматически закрыт в DB2.
В вашем случае соединение с базой данных возвращается обратно в пул соединений, но не все ресурсы были освобождены должным образом. Когда точно такой же оператор SQL готовится снова с использованием того же соединения, вы получаете ошибку, о которой идет речь.
Если это ваш собственный код, я бы рекомендовал широко использовать PMD и FindBugs при разработке, потому что они охотно предупреждают о не закрытии всех ресурсов.