Oracle не закроет ваш курсор, если вы явно не попросите его. Вы можете открыть курсор на неактивной таблице, подождать 24 часа, а затем извлечь строки из курсора.
В активных таблицах (таблицы, которые могут обновляться / удаляться / вставляться) через некоторое время вы можете столкнуться с ORA-1555 (таблица была изменена, а информация для восстановления старых версий блоков была перезаписана). Если ваше табличное пространство UNDO установлено как AUTOEXTEND, вы можете безопасно получать данные с любого курсора, открытого менее чем UNDO_RETENTION
секунд назад:
SQL> show parameter undo_retention
NAME TYPE VALUE
------------------------------------ ----------- ------
undo_retention integer 900
В моей БД я могу безопасно выбирать курсоры в течение 900 секунд (15 минут). Это низкий порог (Oracle будет хранить достаточно данных для восстановления старых версий блоков в течение не менее 15 минут).