DBI file size:The DBI file will be as big as needed to store temp-tables and their records at any given time once when temp table space requirements grow beyond the number of blocks specified by -Bt parameter.
Depending on how many temp-tables and records are involved, the observed size might be the correct expected size of the file when the DBI file size stabilizes.
In
OpenEdge 10, the temporary file database (DBI) uses a Type II Storage Areas instead of a Type I Storage Area (block by block allocation) in Progress 9.
DBI file is not deletedThe DBI file is created by the ABLclient or AppServer when the first temp-table is created (static or not) and the DBI file will remain on the system until that client/server exits normally. This file never shrinks or gets deleted otherwise. In the case of an AppServer, restart of the Broker is not required but trimming the Servers could make the temp files go away.
When if the client does not terminate gracefully then the DBI file will remain. These can be identified by the timestamp of the other DBI files as likely suspects which need to be manually removed.
When temp-tables are not getting deleted after they're used, the DBI file keeps growing, eventually the session will error, for example:
1. Unable to assign file number to temp-table <name>. Number of active temp-tables reached limit of 32767. (9287)Depending on application requirements, consider one or more of the following:
2. SYSTEM ERROR: Attempt to define too many indexes for area <area number> database <db name>. (40) (14675) This is usually caused by temp-tables not getting deleted, which need to be checked in the application logic that is creating this client temp file.
It is not easily possible to associate the DBI file with the application code apart from trying to find the user process that has file handles to the growing file, then from that determine the user and from that generate a stack trace (proGetStack.bat or kill -USR1) and additionally through PROMON statement caching find out what that user is currently running if they're making database requests at the time as opposed to only working on the DBI file. For further advice refer to Article: