Oracle参数Process
RDBMS: 19.28
参考文档:
IF:How to determine an optimum value for PROCESSES parameter (Doc ID 2012693.1)
All About the Initialization Parameter PROCESSES and the Related Issues (Doc ID 2673195.1)
How to calculate the proper value from processes, sessions, and transactions (Doc ID 1682295.1)
https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/SESSIONS.html
https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/V-PROCESS.html
总结一下,工作中的几个问题
1 数据库参数,process和session的关系。19c是1.5倍+22 ,可以参考上面的参考文档
2 process参数,是否可以滚动修改,从上面的参考文档中看,Multiple instances can have different values.
3 process视图中,前端进程和后端进程,通过字段BACKGROUND区分,1 for a SYSTEM background process; NULL for foreground processes or non-SYSTEM background processes
下面例子测试了修改process参数,或者修改session参数,是否与推导公式吻合,比较有意思。
-- 参数不符合推导公式
SYS@test SQL> show parameter processesNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
processes integer 500
SYS@test SQL> show parameter sessionNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sessions integer 1000
SYS@test SQL>
-- 修改process为800
SYS@test SQL> alter system set processes = 800 scope=spfile;System altered.SYS@test SQL>SYS@test SQL> show parameter processNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
processes integer 800
SYS@test SQL>SYS@test SQL> show parameter sessionNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sessions integer 1222
SYS@test SQL>
从上面看,process=800 ,1.5*process + 22 = 800*1.5+22 = 1222 。
以下测试,在process和session参数关系正常的情况下(符合上面1.5*process + 22),单独更改session或process,会有什么变化
测试1 将process 改大,比如改成810 。 结论: session会随着process变大,而根据公式推导出正确的session
SYS@test SQL> alter system set processes =810 scope=spfile;System altered.SYS@test SQL>SYS@test SQL> show parameter processNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
processes integer 810
SYS@test SQL> show parameter sessionNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sessions integer 1237
SYS@test SQL>
根据公式计算: 810*1.5+22 = 1237 。
测试2 将process 改小,比如改成700 结论: session会随着process变小,而根据公式推导出正确的session
SYS@test SQL> alter system set processes = 700 scope=spfile;System altered.SYS@test SQL>
SYS@test SQL> show parameter processNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
processes integer 700
SYS@test SQL> show parameter sessionNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sessions integer 1072
SYS@test SQL>
根据公式计算: 700*1.5+22 = 1072
测试3 将session 改小,改成800 。 结论: session和process还保持原来的值,并没有变化,并且原来的推导关系还在
SYS@test SQL> alter system set sessions=800 scope=spfile;System altered.SYS@test SQL>
SYS@test SQL> show parameter sessionNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sessions integer 1072
SYS@test SQL> show parameter processNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
processes integer 700
SYS@test SQL>
测试4 将session 改大,改成1500 结论:只是单纯地session变大了,对应的process并没有变化。
SYS@test SQL> alter system set sessions = 1500 scope=spfile;System altered.SYS@test SQL>SYS@test SQL> show parameter sessionNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sessions integer 1500
SYS@test SQL> show parameter processNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
processes integer 700
SYS@test SQL>
测试5 在测试4的基础上,将process变小,设置process为500 ,结论: session并没有变化
SYS@test SQL> alter system set processes=500 scope=spfile;System altered.SYS@test SQL>SYS@test SQL> show parameter sessionNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sessions integer 1500
SYS@test SQL> show parameter processNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
processes integer 500
SYS@test SQL>
测试6 ,在测试5的基础上,将process变大,变大到600,理论上推导出来的session 600*1.5+22 = 922, 没有超过现在的session 1500 。 结论: session没有变化
SYS@test SQL> alter system set processes = 600 scope=spfile;System altered.SYS@test SQL>SYS@test SQL> show parameter sessionNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sessions integer 1500
SYS@test SQL> show parameter processNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
processes integer 600
processor_group_name stringSYS@test SQL>
测试7 ,在测试6的基础上,将process变大,变大到1000,理论上推导出来的session 1000*1.5+22 = 1522, 超过了现在的session 1500 。结论: 符合推导公式
SYS@test SQL> alter system set processes = 1000 scope=spfile;System altered.SYS@test SQL>SYS@test SQL> show parameter sessionNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sessions integer 1522
SYS@test SQL> show parameter processNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
processes integer 1000
SYS@test SQL>
测试8 在测试7的基础上,也就是process和session的值,符合推导公式的时候,将process该小 。结论: session不会变化
SYS@test SQL> alter system set processes = 200 scope=spfile;System altered.SYS@test SQL>
SYS@test SQL> show parameter sessionNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sessions integer 1500
SYS@test SQL> show parameter processNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
processes integer 200
SYS@test SQL>
测试9,测试8的结果,计算出session为322. 更改为322 。 看看process会不会变化 。结论: process没有变化
SYS@test SQL> alter system set sessions = 322 scope=spfile;System altered.SYS@test SQL>SYS@test SQL> show parameter sessionNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sessions integer 322
SYS@test SQL> show parameter processNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
processes integer 200
SYS@test SQL>
END