This tells that the upper limit set for the locks at shared memory has ran out of allocated resource. I would suggest following solutions.
1. You can increase the parameter LOCKS in the onconfig file residing in the $INFORMIXDIR/etc. But doing so you will be draining the Real/Virtual memory that is available in your database server.
2. Change the logic in your application in such way that it commits the rows as frequently as possible. That is try you keep your transaction size to minimum.
3. If you have to do some major manipulation (Insert/Update/Delete) in your application, you can lock the taget table in exclusive mode by issuing the SQL command: LOCK TABLE <tabname> IN EXCLUSIVE MODE. By doing so you will be draining only 1 (one) lock per table than lock per Rows basis.
4. See how the target table has configured for locking level(PAGE/ROW). To see the current status of a table issue the following SQL using dbaccess. SELECT LOCKLEVEL FROM systables WHERE tabname='<tabname>'.
If target table contains huge rows, it is suggested to change the lock level to page. To do this you can issued the SQL: ALTER TABLE <tabname> LOCK MODE (PAGE).
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.