Разные результаты запросов из временной таблицы Oracle в пределах моей сессии. Почему?

Работаю с Oracle Apex, планирую использовать временную таблицу для сохранения лога загрузки файлов. Вроде бы все просто: при сабмите страницы делаю обработку загружаемого файла и после ее завершения (успешного/неуспешного) кладу в лог-таблицу отчет о результате загрузки.

Т.е пользователь системы, который загружает файлы, по идее должен видеть, какие он файлы загружал, успешно ли файл обработался и т.д. Но после загрузки страница обновляется и таблица лога пустая (хотя запись была добавлена в лог-таблицу). Если ее несколько раз попробовать пообновлять, то можно увидеть строки лога, но это 50 на 50: то строки отображаются, то нет.

Временная таблица создана как "ON COMMIT PRESERVE ROWS", т.е. данные хранятся до завершения сеанса, но при селекте из этой таблицы я то вижу логи своих загрузок, то вообще пустая выборка получается. Не понимаю, почему такая ситуация возникает? Помогите, пожалуйста, разобрать и исправить, чтобы пользователь всегда видел лог своих загрузок в пределах текущей сессии.

UPD: Такое ощущение, что записи добавляются рандомно в несколько разных инстансов этой таблицы и так же потом рандомно выбираются, на какой инстанс попадет.


Ответы (1 шт):

Автор решения: 0xdb

Для одной APEX сессии при обработке запроса страниц создаются или переиспользуются сессии БД из пула соединений.

Таким образом, временные таблицы не могут быть использованы для хранения значений, которые должны быть доступны в рамках одной APEX сессии, так как их записи доступны только для сессии БД их создавшей.

Для сохранения значений при смене или обновлении страниц следует использовать состоние APEX сессии (см. гл. Managing Session State Values).

→ Ссылка