Поскольку вы говорите, что процесс зависает, есть ли вероятность, что ваш курсор делает «выбор для обновления» вместо «выбор»? Поскольку вы говорите, что выборка нескольких записей не вызывает этой ошибки, это может быть не так.
Можете ли вы показать нам код (или воспроизводимый небольшой тест / образец) для вашего выбора и выборки.
Кроме того, вы можете проверить v $ locked_objects, используя следующий запрос и указав в именах таблиц, чтобы убедиться, что рассматриваемый объект заблокирован. Опять же, если ваш текущий запрос не имеет «для обновления», эта выборка не должна зависать.
select do.*
from v$locked_objects vo,
dba_objects do
where vo.object_id = do.object_id
and vo.object_name = '<your_table_name>'