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/