«Мне нужно определить, выполняет ли один и тот же процесс один и тот же запрос в течение длительного времени (скажем, 15 секунд), затем мне нужно отключиться и восстановить соединения с базой данных».
Не уверен, к какой проблеме вы обращаетесь.
Если вы потеряете соединение, то сеанс базы данных может продолжаться в течение некоторого времени. Потенциально все еще держит замки тоже.
Кроме того, если блок PL / SQL зацикливается и выполняет 1000 запросов, каждый из которых занимает одну десятую секунды, должен ли это считаться 1 оператором для вашей логики прерывания?
Вы можете посмотреть на V $ SESSION и SQL_ID или SQL_HASH_VALUE. Затем проверьте снова через пятнадцать секунд и посмотрите, изменилось ли оно. Вы также можете посмотреть на v $ sessstat / v $ statname для таких вещей, как «число выполнения» или «пользовательские вызовы», чтобы определить, является ли это один и тот же SQL, выполняющийся в течение длительного времени, или несколько вызовов SQL.