mn70 |
Отправлено: 07.09.2005, 16:24 |
|
Не зарегистрирован
|
Соеденяюсь с Oracle через BDE->SQLORA8.dll->OCI.DLL
При переоткрытии приготовленного запроса (c Select-ом)
происходит утечка памяти и в конце концов программа виснет.
Оказалось, что это проблема известная и отражена в FAQ
http://www.rxlib.ru/faqs/faqd_en/21725.html
Цитирую:
"Article #21725: ...
...Every open of a Prepared query with Oracle 8 causes the Heapsize as reported from DbiGetSysInfo to grow. The only workaround at this time is UnPrepare the query after every execution of the Query.
At this time, we believe this problem to be caused by a memory leak in the Oracle client. A future version of the Oracle client may resolve this error. "
Получается, что виноват кривой клиент Oracle и ничего сделать нелзя. Unprepare — не выход, т.к. время запроса возростает в ~2 р. для неподготовленного запроса. Вопрос обсуждался в 2000г. Для Oracle 8.
Я пробовал и Oracle 8 и Oracle 9. Может попробовать 10?
От BDE отказаться нельзя. Помогите. Должно же быть решение!
|
|
AVC |
Отправлено: 07.09.2005, 17:15 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Оформить запрос процедурой и вызывать процедуру.
Пусть Oracle сам разбирается со своей подготовкой так как подготовка BDE это НЕ подготовка Oracle.
(добавлено) А еще можно поиграться с view.
Отредактировано AVC — 08/09/2005, 07:03 |
|
olegenty |
Отправлено: 08.09.2005, 06:00 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
но правильное решение — отказаться от BDE.
|
|