Processes
Overview
PROCESSES specifies the maximum number of operating system user processes that can simultaneously connect to Oracle. Its value should allow for all background processes such as locks, job queue processes, and parallel execution processes.
The default values of the SESSIONS and TRANSACTIONS parameters are derived from this parameter. Therefore, if you change the value of PROCESSES, you should evaluate whether to adjust the values of those derived parameters.
In Linux the nproc parameter in the /etc/security/limits.conf file defines the OS limit for the number of processes per user.
Current OS usage:
ps h -Led -o user | sort | uniq -c | sort -n
Processes vs. Sessions Fun Facts
The PROCESSES parameter should typically be set lower than the SESSIONS parameter. Each database session may require one or more background or foreground processes to support it, but not every session maps 1:1 to a separate OS-level process.
Oracle uses PROCESSES to define the maximum number of OS processes (like server processes, background workers, etc.), while SESSIONS includes all user and internal sessions.
By default, Oracle sets SESSIONS = (1.1 * PROCESSES) + 5, which accounts for this relationship.
It’s best to keep SESSIONS slightly higher than PROCESSES to avoid unexpected errors or limits being hit.
Display
SELECT pid, spid, username, terminal, program FROM v$process; PID SPID USERNAME TERMINAL PROGRAM ---- ------ --------- --------------- ------------------------------ 116 14486 oracle UNKNOWN oracle@lnx01.local (PMON) 117 14547 oracle UNKNOWN oracle@lnx01.local (VKTM) 118 14549 oracle UNKNOWN oracle@lnx01.local (CKPT) ... SELECT resource_name, current_utilization, max_utilization, limit_value FROM v$resource_limit WHERE resource_name in ('sessions', 'processes'); RESOURCE_NAME CURRENT_UTILIZATION MAX_UTILIZATION LIMIT_VALU ------------------------------ ------------------- --------------- ---------- processes 116 140 300 sessions 76 104 480