DB version: 19c Enterprise Edition
OS : Oracle Linux 8.2
Hardware specs:
Dell PowerEdge series with 32 cores(AMD Epyc), 256 GB RAM
I am building a 2-node RAC DB which should be capable of accepting a total of 2500 user connections (sessions).
I will be building a container DB with two PDBs
Application 1 will spawn 2000 sessions(Peak) to PDB1
Application 2 will spawn 500 sessions(peak) to PDB2
Following are what I am going to handle these user sessions.
1. At container DB (root) level, configure SGA_TARGET=128GB and PGA_AGGREGATE_TARGET=50GB but I don't set anything at PDB level.
2. Setting PROCESSES parameter:
I need a total of 2500 user connections to be serviced for both PDB1 and PDB2.
Documentation is not clear whether PROCESSES is at instance level or DB level, it just says
"PROCESSES specifies the maximum number of operating system user processes that can simultaneously connect to Oracle"
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/refrn/PROCESSES.html#GUID-B757AF80-DA38-4167-A914-FE376A3AD4FE
Assuming PROCESSES parameter is at Instance level, splitting that across 2 instances 2500/2 = 1250
As per the documentation, PROCESSES parameter 'should allow' for all background processes such as locks, job queue processes, and parallel execution processes. So, I throw in another 150
So, 1250 + 150 = 1400
Is setting PROCESSES=1400 for each instance enough ? I may use parallelism for reporting queries during off-peak hours. But, not more than 20 DOP.
3. At the linux ulimit, level I will be setting "max user processes" (nproc) hard limit to 1500 for each Oracle Linux servers.
4. Given that SGA_TARGET is 128GB, I will set shmmax to 130GB and shmall to 150GB
Are the above mentioned 4 configurations correct ? Are they enough or am I missing something ?