Hi Michael, cursor_sharing was set to exact. Aftrer searching MOS and the web I also suspected that NLS_LENGTH_SEMANTICS=CHAR that we had set in the beginnig) might play a role, and in a way, it did: NLS_L_S=CHAR means total run-dead on CPU with Mutex S NLS_L_S=BYTE means CPU run-dead up to 1800 cursors, then they reduce by magic to zero, and the circle begins again. Regards Martin Michael Dinh schrieb: > Thanks for sharing. > > What was cursor_sharing set to in your environment? > http://www.usn-it.de/index.php/2010/08/04/oracle112-mutex-s-too-many-child-cursors/ > > Summary: If you use JDBC and set numeric values with setInteger or > setNumber or setNull alternately, you can get excessive numbers of child > cursors for your DML statement. > > Solution: Use setNull.NUMBER or setNull.INTEGER or whatever your > datatype is. > > Why? setNull defaults to VARCHAR2() and this will invalidate your child > cursor... > > By the way, the same happens if you are subsequently extending string > bind variable lenghts, until you reach the maximum length! > > Best regards and thanks for all your help in the past, not only for this > issue -- Usn's IT Blog for Linux, Oracle, Asterisk http://www.usn-it.de -- //www.freelists.org/webpage/oracle-l