Простой запрос занимает несколько минут, чтобы выполнить в завершенном / неактивном сеансе - PullRequest
1 голос
/ 22 февраля 2012

Я пытаюсь добавить простую функцию отработки отказа в мое приложение, которое взаимодействует с базой данных Oracle 8 11.Чтобы проверить, что моя сессия закончена, я запускаю простой запрос (выберите 1 из двойного).

Теперь, когда я пытаюсь смоделировать сбой в сети, убив мой сеанс Oracle, выполнив "изменить сеанс уничтожения системы 'sid, serial';"и выполнить этот тестовый запрос, приложению потребуется до 5 минут, чтобы обработать его и вернуть ошибку из метода Execute (я использую OCI API, C ++):

Вт 21 фев 21:22:47 HKT 2012: проверка соединения с помощью тестового запроса ...

Вт 21 фев 21:28:13 HKT 2012: Предупреждение - OCI_SUCCESS_WITH_INFO: 3113: ORA-03113: конец файла в канале связи

вт 21 фев. 21:28:13 HKT 2012: сбой тестового соединения, попытка восстановить соединение ...

Если я завершу сеанс с ключевым словом 'немедленное' в концезапроса, то тестовый запрос немедленно возвращает ошибку.

Вопрос 1: почему выполнение моего запроса занимает 5 минут?Существуют ли какие-либо журналы Oracle / PMON, которые могут пролить некоторый свет на то, что происходит во время этой задержки?

Вопрос 2. Является ли хорошим выбором использование «alter system kill session» для симуляции сбоя сети?Насколько близки результаты этого запроса к реальному сетевому отказу между приложением и базой данных Oracle?

Обновление:

Версия Oracle:

Oracle Database 11g Enterprise Edition Выпуск 11.2.0.2.0 - 64-битное производство

С разделением, OLAP, ДанныеВозможности тестирования майнинга и реальных приложений

1 Ответ

0 голосов
/ 22 февраля 2012

Существует высокая вероятность того, что программа ожидает завершения отката.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...