Re: -113 ISAM error: - the file is locked
Posted in 1996
We recently encountered this problem, but it was contention for a lock on a _system_ table while executing a stored procedure. We hit locks on both sysprocauth and sysprocplan tables. To note: o System tables have page level locking. We're not supposed to change this. o It seems to be related to two users trying to run the same stored procedure at the same time -- why are system tables being locked for this??? According to Informix it is to prevent any one else from _modifying_ these system tables while the stored procedure is running. o It seems that exclusive locks are being placed on these tables rather then shared locks. Why??? o This seems to imply that any stored procedures that have rows in these system tables falling on the same disk page cannot be executed at the same time by different users!!! Not very good concurrency I'd say. o So, our only choice is to set lock mode to wait. This in effect serializes execution of stored procedures in the Informix Server if they have entries on the same disk page for these tables. This is running Online 7.10 UC1 on a UnixWare 2.0x platform. Anyone know any more about this issue?? dan. In article <4q6goj$l2e@atglab10.atglab.bls.com>, Melvin Mariney <melvin.mariney2@bridge.bellsouth.com> wrote: >dewitt@interramp.com (Kevin DeWitt) wrote: > >>I receive this message when two users do an INSERT at very nearly the same >>time. The table being updated has one key column defined as SERIAL. >>We were experiencing this problem prior to making the key SERIAL. > >>Does anyone have any suggestions? We are running Informix 7.x under INET 5.1 >>on a Sun server. I don't believe our database environment uses files for >>locking. > >You make want to check your locking mode on the table. If this is a >highly volatile table(lots of updates), you probably want to set the >lock mode to row level locking. The default is page level locking. >this would help keep your users from bumping into each other on >updates. If the table is currently using row level locking, the other >thing to do is in the application, use the 'set lock mode to wait xx' >where xx is some number of seconds where a process will wait for a >lock to be released. The default is 'not wait' which means if the >process can not obtain a lock immediately, an error code such as 113 >is return. Hope this helps. > > >-- > >Melvin Mariney, Informix DBA >e-mail: melvin.mariney2@bridge.bellsouth.com > -- -- dan jatnieks Siemens Rolm Communications Inc. dan.jatnieks@siemensrolm.com http://www.siemensrolm.com/