Friday, August 20, 2010

TNS-12537 error because of inappropriate OS parameter on AIX

This article was originally published in my csdn.net blog on 29 Dec, 2008.


A problem was reported by a maintenance engineer this morning. An application program could not startup because error TNS-12537 occurred.

By checking oracle's listener.log, I found the detailed error message:

TNS-12518: TNS:listener could not hand off client connection
TNS-12549: TNS:operating system resource quota exceeded
TNS-12560: TNS:protocol adapter error
TNS-00519: Operating system resource quota exceeded
IBM/AIX RISC System/6000 Error: 11: Resource temporarily unavailable

It should be becasue of insufficiency of some system resources so that oracle couldn’t acquire more resources to set up the client connection. But the system memory was still several GB free, and the parameters shown by the command ‘ulimit –a’ were also large enough, and all file systems had enough free spaces. And then checked the kernel paramters of the system, there was a problem in the parameter maxuproc. Its value was the default value 128. It's too small for out project because this parameter denotes maximum number of processes allowed per user.

After communicating with the engineer, I knew that they deployed the application on a new machine without modification of maxuproc. Thus any clients could not connect Oracle server when the number of processes of Oracle user arrives 128. The problem was solved after increasing the value of maxuproc.


By the way:

To view the current value of maxuproc, use the lsattr command:

lsattr -E -l sys0 | grep maxuproc

and to change the value of maxuproc, use the chdev command by root user, for example:

chdev -l sys0 -a maxuproc=1024

is to set the value of maxuproc to 1024.

No comments:

Post a Comment