Re: lock table overflow
Posted in 1998
The application is apparently running quite a long transaction and the
database is probably using row level locking. The locks on the rows are
not released until the transaction is completed. Note that many locks
can be held for each row if there are indexes.
You could try to increase the number of locks in onconfig up to
something like 500000. This will increase your shared memory size by a
few megabytes. Other less advisable solutions include reverting to page
or table level locking and redesigning the application to avoid such
long transactions.
There are basically two things that can crash a long transaction. The
number of locks was your case and the size of your logical log is the
other. In both cases, Informix should successfully roll back the
transaction and your database will be intact.
Best wishes,
----------------------------------------------------------------------
John H. Frantz Power-4gl: Extending Informix-4gl
john@rl.is http://www.rl.is/~john/pow4gl.html
HK Chan wrote:
>
> hi
>
> i'm running ods7.23uc1 on hp-ux10.20. this application is an off-the-shelf manufacutrin gpkg which runs on top of informix. whenever a particular trnasaction the application bombs out with the errors below:
> %SQLCODE: -244 Could not do a physical-order read to fetch next row.
> %SQLERRD2: -134 ISAM error: no more locks
> and in looking at the log file , i saw this error:
> 19:13:32 Lock table overflow - user id 102, session id 47>
> i'm wondering if anyone has any ideas on this. i did do oncheck on the tables and indices the sql was after, and it came back okay. i'm attaching my onconfig file.
>
> #**************************************************************************
> #
> # INFORMIX SOFTWARE, INC.
> #
> # Title: onconfig.std
> # Description: INFORMIX-OnLine Configuration Parameters
> #
> #**************************************************************************
>
> # Root Dbspace Configuration
>
> ROOTNAME root_dbs # Root dbspace name
> ROOTPATH /PRD1/root # Path for device containing root dbspace
> ROOTOFFSET 10 # Offset of root dbspace into device (Kbytes)
> ROOTSIZE 499980 # Size of root dbspace (Kbytes)>
> # Disk Mirroring Configuration Parameters
>
> MIRROR 0 # Mirroring flag (Yes = 1, No = 0)
> MIRRORPATH # Path for device containing mirrored root
> MIRROROFFSET 0 # Offset into mirrored device (Kbytes)>
> # Physical Log Configuration
>
> PHYSDBS phy_dbs # Location (dbspace) of physical log
> PHYSFILE 95000 # Physical log file size (Kbytes)>
> # Logical Log Configuration
>
> LOGFILES 9 # Number of logical log files
> LOGSIZE 30000 # Logical log size (Kbytes)>
> # Diagnostics
>
> MSGPATH /apps/informix/log/wsm_prd1.log # System message log file path
> CONSOLE /apps/informix/log/console_prd1.log
> # System console message path
> ALARMPROGRAM /apps/informix/etc/no_log.sh # Alarm program path
>
> # System Archive Tape Device
>
> TAPEDEV /mis/dbsave/comets.db # Tape device path
> TAPEBLK 16 # Tape block size (Kbytes)
> TAPESIZE 2000000000 # Maximum amount of data to put on tape (Kbytes)>
> # Log Archive Tape Device
>
> LTAPEDEV /logsave/comets.log # Log tape device path
> LTAPEBLK 16 # Log tape block size (Kbytes)
> LTAPESIZE 2000000 # Max amount of data to put on log tape (Kbytes)>
> # Optical
>
> STAGEBLOB ,1 # INFORMIX-OnLine/Optical staging area
>
> # System Configuration
>
> SERVERNUM 1 # Unique id corresponding to a OnLine instance
> DBSERVERNAME wsm_prd1 # Name of default database server
> DBSERVERALIASES penang_prd1 # List of alternate dbservernames
> NETTYPE ipcshm,1,50,CPU # Configure poll thread(s) for nettype
> NETTYPE soctcp,1,50,NET # Configure poll thread(s) for nettype
> DEADLOCK_TIMEOUT 60 # Max time to wait of lock in distributed env.
> RESIDENT 1 # Forced residency flag (Yes = 1, No = 0)
>
> MULTIPROCESSOR 0 # 0 for single-processor, 1 for multi-processor
> NUMCPUVPS 1 # Number of user (cpu) vps
> SINGLE_CPU_VP 1 # If non-zero, limit number of cpu vps to one
>
> NOAGE 0 # Process aging
> AFF_SPROC 0 # Affinity start processor
> AFF_NPROCS 0 # Affinity number of processors>
> # Shared Memory Parameters
>
> LOCKS 200000 # Maximum number of locks
> BUFFERS 200000 # Maximum number of shared buffers
> NUMAIOVPS 10 # Number of IO vps
> PHYSBUFF 32 # Physical log buffer size (Kbytes)
> LOGBUFF 32 # Logical log buffer size (Kbytes)> LOGSMAX 20 # Maximum number of logical log files
> CLEANERS 10 # Number of buffer cleaner processes
> SHMBASE 0x0 # Shared memory base address
> SHMVIRTSIZE 120000 # initial virtual shared memory segment size
> SHMADD 65536 # Size of new shared memory segments (Kbytes)
> SHMTOTAL 0 # Total shared memory (Kbytes). 0=>unlimited
> CKPTINTVL 300 # Check point interval (in sec)
> LRUS 128 # Number of LRU queues
> LRU_MAX_DIRTY 60 # LRU percent dirty begin cleaning limit
> LRU_MIN_DIRTY 50 # LRU percent dirty end cleaning limit
> LTXHWM 50 # Long transaction high water mark percentage
> LTXEHWM 60 # Long transaction high water mark (exclusive)
> TXTIMEOUT 0x12c # Transaction timeout (in sec)
> STACKSIZE 32 # Stack size (Kbytes)>
> # System Page Size
> # BUFFSIZE - OnLine no longer supports this configuration parameter.
> # To determine the page size used by OnLine on your platform
> # see the last line of output from the command, 'onstat -b'.
>
> # Recovery Variables
> # OFF_RECVRY_THREADS:
> # Number of parallel worker threads during fast recovery or an offline restore.
> # ON_RECVRY_THREADS:
> # Number of parallel worker threads during an online restore.
>
> OFF_RECVRY_THREADS 10 # Default number of offline worker threads
> ON_RECVRY_THREADS 1 # Default number of online worker threads>
> # Data Replication Variables
> # DRAUTO: 0 manual, 1 retain type, 2 reverse type
> DRAUTO 0 # DR automatic switchover
> DRINTERVAL 30 # DR max time between DR buffer flushes (in sec)
> DRTIMEOUT 30 # DR network timeout (in sec)> DRLOSTFOUND /apps/informix/etc/dr.lostfound # DR lost+found file path
>
> # CDR Variables
> CDR_LOGBUFFERS 2048 # size of log reading buffer pool (Kbytes)
> CDR_