Additional
dbCAP
AnyDAC
ThinDAC
NCOCI8
Topic: Out of memory
Out of memory
Posted: 2008/01/22 10:32
 
Здравствуйте!

Установлены AnyDac 1.12, СУБД Oracle 9, клиентский ODBC драйвер instantclient-odbc-win32-10.2.0.3.

Выполняется sql запрос результатом которого является достаточно большой набор данных. Проход по ADDataSet однонаправленный (Unidirectional = True). Внутри цикла прохода по датасету при каждом фетче записи (TADDataSet.InternalFetchRows) теряется порядка 1м оперативной памяти (FTable.Clear освобождает меньше чем выделяется в TODBCStatementBase.Fetch), в конечном итоге выдается Out of memory примерно на 65000-ой записи.

Интересует известна ли вам эта проблема при работе с Оракл через ОДБС или возможно что-то исправлено в версии 2.0? Что бы вы могли посоветовать сделать, чтобы исправить эту ошибку?

Заранее спасибо!
Re:Out of memory
Posted: 2008/01/22 10:38
 
Я не в ответе за Oracle ODBC драйвер
Почему вы не используете родной AnyDAC Oracle драйвер ?
DriverID=Ora
Re:Out of memory
Posted: 2008/01/22 11:38
 
Т.е в принципе такое может зависеть от самого драйвера?
Вот на всякий случай
Меmory Allocation Error, стек:
ADException(???,???)
TODBCHandle.Check(???)
TODBCStatementBase.Fetch(???)
TADPhysODBCCommand.InternalFetchRowSet($B7E9F0,nil,50)
DoFetch(50)
TADPhysCommand.FetchBase($B7E9F0,???,0)
TADPhysCommandAsyncFetch.Execute
TADStanAsyncExecutor.Run
TADPhysCommand.FetchMain(???,???,amBlocking,4294967295)
TADPhysCommand.Fetch(???,???)
TADDAptTableAdapter.Fetch(True)
TADCustomTableAdapter.Fetch(???)
TADAdaptedDataSet.DoFetch(???,???)
TADDataSet.InternalFetchRows(False,???)

Я уже думаю попробовать использовать родной драйвер, но пока хотелось бы разобраться что в данном случае происходит.
Re:Out of memory
Posted: 2008/01/22 11:54
 
У меня нету времени на разбирательства с Oracle ODBC драйвером. Сорри.