Logins to the RSA Identity Governance & Lifecycle application server as the oracle operating system user fail with the following error:
su: cannot set user id: Resource temporarily unavailable
This error occurs when logging in directly as the oracle user, or when using the su - oracle command.
Another symptom is excessive oracle processes with names ora_p001_AVDB through ora_p02n_AVDB. Login as the root user and execute the following command to check for these oracle processes:
ps -ef | grep ora_
This error indicates that there are no more threads available for the oracle operating system user.
By default, the /etc/security/limits.conf file is configured as follows:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
To check on used threads that would affect the above settings, execute this command as the root user:
ps -u oracle -L | wc -l
You will notice that your number of threads has reached the hard limit for nproc set in the /etc/security/limits.conf file.
Causes for reaching the nproc limit vary but in the case for which this RSA Knowledge Base Article was written, the nproc limit had been reached because the default parameter settings for parallel processing had been modified which created a large amount of parallel slave processes by default at every database restart, and each process used multiple threads which quickly exhausted the limits.
As mentioned, this issue may have different root causes, which require separate analysis.
In this case, setting the parallel server process numbers back to their default values fixed the problem.
Login as SYSDBA:
If you can login to the server as the oracle user, use this command to login to SQL*Plus:
sqlplus / as sysdba
If nproc is still maxed out, login to the server as the root user and use this command to login to SQL*Plus:
sqlplus sys/<password> as sysdba
Modify the system settings back to their default values:
SQL> alter system set parallel_max_servers = 80 scope = both;
SQL> alter system set parallel_min_servers = 8 scope = both;
SQL> alter system set parallel_servers_target = 32 scope = both;