Самопроизвольное закрытие БД

Romanick
Дата: 05.06.2006 14:42:59
Столкнулся с непонятной мне ошибкой. После некоторого времени работы программы при попытке вызова методов пакета (которые обновляют данные в БД) происходит закрытие БД без всяких ошибок и предупреждений.

Просто закрывается и всё...
Если попытаться не выходя из программы заново подключиться, то это получается без проблем?

Где начать копать?
Я
Дата: 05.06.2006 14:45:59
Romanick
Просто закрывается и всё...

...

Если попытаться не выходя из программы заново подключиться, то это получается без проблем?


Т.е. типа база сама открывается? Видимо происходит отбрыв сессии, а не закрытие БД?
Alexey Polovinkin
Дата: 05.06.2006 14:58:02
Romanick
Столкнулся с непонятной мне ошибкой. После некоторого времени работы программы при попытке вызова методов пакета (которые обновляют данные в БД) происходит закрытие БД без всяких ошибок и предупреждений.

Просто закрывается и всё...
Если попытаться не выходя из программы заново подключиться, то это получается без проблем?

Где начать копать?


Что, Где, Когда закрывается?
Что вы понимаете под базой данных?
Что вы понимаете под словом закрывается?
Romanick
Дата: 05.06.2006 15:00:24
Я
Romanick
Просто закрывается и всё...

...

Если попытаться не выходя из программы заново подключиться, то это получается без проблем?


Т.е. типа база сама открывается? Видимо происходит отбрыв сессии, а не закрытие БД?


Да, наверное. Использую ODAC: там если открывается чего-нибудь обращается к БД, последняя открывается автоматом. LoginPrompt=false (так нужно).

Точно проверить пока не смог - ошибка появляется как назло не во время отладки и во время работы юзеров. Однознано могу сказать, что закрываются все открытые курсоры.

Может чего в логах сервера глянуть? Только я не знаю где их искать...
tru55
Дата: 05.06.2006 15:03:32
Скорее всего, то что нет сообщения об ошибке - результат неправильно построенного try ... except в программе. Видимо, там перехватывается сообщение Oracle и ничего не выдается...
Romanick
Дата: 05.06.2006 15:04:19
Alexey Polovinkin
Что, Где, Когда закрывается?

я по-крайней мере вижу, что закрываются все курсоры. Об остальном сказать не могу, - ошибка появляется не всегда
Что вы понимаете под базой данных? ORACLE
Что вы понимаете под словом закрывается?[/quot] см. выше
Romanick
Дата: 05.06.2006 15:06:18
tru55
Скорее всего, то что нет сообщения об ошибке - результат неправильно построенного try ... except в программе. Видимо, там перехватывается сообщение Oracle и ничего не выдается...


except
  dm.os.Rollback;
  raise;
end;

по-моему правильнее уже некуда...
Alexey Polovinkin
Дата: 05.06.2006 15:07:11
Romanick
Alexey Polovinkin
Что, Где, Когда закрывается?

я по-крайней мере вижу, что закрываются все курсоры. Об остальном сказать не могу, - ошибка появляется не всегда
Что вы понимаете под базой данных? ORACLE
Что вы понимаете под словом закрывается?
см. выше[/quot]

Вот вы работали в программе, работали, работали ..... тут БАХ! жмете кнопку, а оно вам "база данных закрыта!"

или что молча закрывается, тогда как вы пришли к выводу что она зыкрылась, и причем тут курсоры?
SeaGate
Дата: 05.06.2006 15:12:28
Включите трассировку 10046 и посмотрите на сгенерированный tracefile, в faq это есть.
Romanick
Дата: 05.06.2006 15:14:35
Alexey Polovinkin
Romanick
Alexey Polovinkin
Что, Где, Когда закрывается?

я по-крайней мере вижу, что закрываются все курсоры. Об остальном сказать не могу, - ошибка появляется не всегда
Что вы понимаете под базой данных? ORACLE
Что вы понимаете под словом закрывается?
см. выше


Вот вы работали в программе, работали, работали ..... тут БАХ! жмете кнопку, а оно вам "база данных закрыта!"

или что молча закрывается, тогда как вы пришли к выводу что она зыкрылась, и причем тут курсоры?[/quot]

При попытке сделать Locate у только что обновлённого при помощи вышеупомянутого пакета набора данных (TOraQuery) Delphi выдаёт сообщение "Не могу выполнить операцию на закрытом НД", хотя я его не закрывал. Но это фигня, закрываются все открытые НД. Отсюда я делаю вывод, что что-то нехорошее происходит при выполнении метода пакета и сессия закрывается. Разве я не прав?