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