C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
ORACLE+BDE, Проблемы с утечкой памяти в запросах
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.

Вернуться в Работа с базами данных в C++Builder