Kbase P104536: MM exception - status = -16001 when executing a large SQL-92 query
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  10/6/2010 |
|
Status: Verified
SYMPTOM(s):
MM exception - status = -16001 when executing a large SQL-92 query
Executing a large SQL-92 query
MM exception - status = -16001
SQLSRV: SYSTEM ERROR: Memory violation. (49)
Stack trace from _sqlsrv2 reads:
xec_clear_rsshdls__16sql_qt_project_tFP14sql_qexpinfo_t + 0x234 [/opt/dlc9/lib/libprosqlrds.sl]
xec_clear_rsshdls__12sql_select_tFv + 0x3c [/opt/dlc9/lib/libprosqlrds.sl]
release_stmt_hdls_heap__FP9rds_env_tP9ssm_env_tP16ssm_stmtinfo_tagP9sql_cmd_tUcT + 0x90 [/opt/dlc9/lib/libprosqlrds.sl]
ssm_close__FP9rds_env_tPCcP12sql_stmuid_tUcT2P5sqlca + 0x320 [/opt/dlc9/lib/libprosqlrds.sl]
FACT(s) (Environment):
Progress 9.1E
HP-UX 11.0 32-bit
UNIX
Windows 32 Intel
CAUSE:
Data Exception MM-No data block.
This failure (writing some temp table data) can happen for a few different reasons. The resolution depends on the reason for the problem.
Temp table data is written to the directory $WRKDIR (if defined) or to the database server's current working directory. This directory must be writable to the userid which starts the server.
On Windows, if the database starts as a Windows service, it may not have a current working directory, the working directory may not be writable or the disk has to have enough physical space.
If all the above is OK, then it could be that the query is sorting a very large amount of data, or is running in a transaction where some other query has, or is, sorting a large amount of data. In this case the default value for the temp table disk space startup parameter -SQLTempDisk may not be sufficient.
FIX:
Option #1
If running on Windows make sure that WRKDIR is defined in the registry. Check the WorkPath entry in the following locations:
HKEY_CURRENT_USER\Software\PSC\PROGRESS\<version>\
HKEY_LOCAL_MACHINE\Software\PSC\PROGRESS\<version>\
The directory specified in the WorkPath entry must be writable and have enough physical space. It should have at least 500M free when the database server starts.
For sorting a very large amount of data set the startup parameter -SQLTempDisk appropriately when starting the database. For example:
proserve sports2000 -S 9999 -H localhost -SQLTempDisk 1000000