Hi John,

> Our main database is Firebird 2.1 running on a windows 2k8 server
>
> In the middle of the night with no real users, a single program was running 
> updating data from a file into the database.  This runs every night, there 
> were no changes to the programs and automatic server updates are turned off.  
> Part way through the program failed and then repeatedly gave the following 
> errors each time it tried to write to the database.
>
> Exception class = TDBXError; message = invalid request handle
> Exception class = TDBXError; message = unable to allocate memory from 
> operating system

TDBXError is an exception from the dbExpress layer, so I guess you are 
using dbExpress? ;-)

Memory usage/exhausting are influenced from quite a few parameters.
The following are out of my mind:

* Client-side: Using buffered/non-buffered result set in your access 
components
* Firebird page cache: RAM to be used for caching data pages. This is 
defined by the database page size, page buffers and your Firebird server 
architecture
* Firebird sort cache: RAM to be used for intermediate results while 
sorting/grouping data before going to disk. E.g. per default with 
Classic or SuperClassic this is 8 MB per connection
* Firebird lock manager size: RAM to be used for the lock manager. Can 
defined in firebird.conf and inspected via fb_lock_print
* Windows 2008 Server, if it isn't the R2 release, AFAIK has a bug, 
which can lead to the Windows file system cache exhausting the available RAM



-- 
With regards,
Thomas Steinmaurer (^TS^)
Firebird Technology Evangelist

http://www.upscene.com/

Do you care about the future of Firebird? Join the Firebird Foundation:
http://www.firebirdsql.org/en/firebird-foundation/

Reply via email to