2012-02-22 3 views
1

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

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

вт 21 фев 21:22:47 HKT 2012 : Проверка соединения с тестового запроса ...

на TUE Feb 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 DB?

Update:

Oracle версии:

Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Производство

С секционирования, OLAP, интеллектуального анализа данных и Real Application Testing варианты

+1

База данных Oracle 8? Вау! Расширенная поддержка 8i истек 31 декабря 2006 года и 8 закончилась 30 июня 2003 года! Возможно, вам стоит подумать о том, чтобы рекомендовать обновление до этого десятилетия. – Ollie

+1

Какую версию клиента Oracle вы используете? Какая операционная система (и версия операционной системы) - это как база данных, так и клиент? И какова 4-значная версия базы данных Oracle, которую вы используете? Для точки Олли, если мы предположим, что «Oracle 8» означает «Oracle 8.1.7.4+», а не что-то еще раньше, это было из расширенной поддержки * длинного * времени. Если что-то в окружающей среде меньше десятилетия, вы, вероятно, столкнетесь с проблемами совместимости, которые могут усугубить ваши проблемы. –

+0

@ Олли, мне жаль, что это должно быть опечатка. Вот что я вижу, когда подключаюсь к базе данных через sqlplus: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production С вариантами тестирования разделов, OLAP, интеллектуального анализа данных и реального приложения – krakovjak

ответ

0

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

+0

Какая программа вы имеете в виду? Процесс Oracle? Или мое приложение? Есть ли способ проверить, действительно ли он ждет откат? – krakovjak

+0

AFAIK, «немедленная» версия сеанса убивает триггеры откат также, не так ли? Однако, похоже, у меня нет такой задержки, если сеанс был убит с ключевым словом «немедленное». – krakovjak