Feedback
Did this article resolve your question/issue?

   

Article

How to fix Lock Table Overflow errors?

Information

 
TitleHow to fix Lock Table Overflow errors?
URL NameP44646
Article Number000139009
EnvironmentProduct: OpenEdge
Version: All supported versions
OS: All supported platforms
Question/Problem Description
How to fix Lock Table Overflow errors?
How to diagnose and fix the Lock table overflow (915) errors?
 
Steps to Reproduce
Clarifying Information
Error MessageLock table overflow, increase -L on server (915)
Defect Number
Enhancement Number
Cause
Resolution
Lock Table Overflow is caused by the current application code design with respect to transaction and record scoping.
Application code needs to be designed so that transactions scope only locks as many records that are strictly needed and that those locks on records are held for the minimum possible time.  

To review application transaction and record scope:
  1. Compile the code using the LISTING option. This will indicate where blocks start and end (sub-)transactions. Alternatively, since OpenEdge 10.1B and later, run suspect jobs with 4GLTrans logging active to show the transaction scope at runtime.
  2. Use the TRANSACTION and LOCKED ABL functions to determine which records are locked and if a transaction is active.
  3. Avoid SHARE-LOCK where possible and specify a record lock only when retrieving a record for updates.
  4. Use the -NL startup parameter, but test thoroughly before deploying this parameter.  This will affect future deployed code that relies on the implicit default SHARE-LOCKs.
  5. Run the application code in single user mode if it is impossible to change the application. Relatively easy to implement for batch processes, but requires downtime for other processing while the program is running.
  6. For further information refer to Article  How to debug "Increase -L" error (915), record locking, transactions?     
If the application code is structured correctly for the task it needs to do then the number of lock table entries on the database server need to be increased.  This is done by setting the -L startup parameter for the database broker process, in the .pf/command line used with the proserve command, or via the appropriate settings in Progress Explorer/OpenEdge Explorer when the database is managed by the AdminServer. Since OpenEdge 10.1C it can be increased online, refer to Article To monitor Lock Table entries when isolating "Lock Table Overflow (915)" application transaction scope, the _DBStatus VST can be used.
 
Workaround
Notes
References to Written Documentation:

Progress Programming Handbook, Section 3 "Block Properties"
Progress Programming Handbook, Section 12 "Transactions"

Progress Articles: 

 How many Lock Tables entries are being used for a database?   
 How to debug "Increase -L" error (915), record locking, transactions?   
 
Last Modified Date11/20/2020 7:27 AM
Attachment 
Files
Disclaimer The origins of the information on this site may be internal or external to Progress Software Corporation (“Progress”). Progress Software Corporation makes all reasonable efforts to verify this information. However, the information provided is for your information only. Progress Software Corporation makes no explicit or implied claims to the validity of this information.

Any sample code provided on this site is not supported under any Progress support program or service. The sample code is provided on an "AS IS" basis. Progress makes no warranties, express or implied, and disclaims all implied warranties including, without limitation, the implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample code is borne by the user. In no event shall Progress, its employees, or anyone else involved in the creation, production, or delivery of the code be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample code, even if Progress has been advised of the possibility of such damages.