A problem was reported by an maintenance engineer this morning. An appilicaiton program can not startup because error TNS-12537 occured.
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 can't acuqire more resources to set up the client connection. But the system memory is still several GB free, and the parameters shown by the command ulimit -a are also large enough, and all file systems have enough free spaces. And then check the kernel paramters of the system, there is problem in the parameter maxuproc. Its value is the default value 128. It's too small for out project because this parameter denotes maximum number of processes allowed per user.
After communicatinh with the engineer, I knew that they deployed the application on a new machine with maxuproc not modified. Thus any clients can not connect oracle server when the number of processes of oracle user arrives 128. The problem was solved after increasing the value of maxuproc.
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.