Oracleでのセッションやプロセス数には上限があり、それを超えてしまうとデータベースにアクセス出来ずに予期せぬエラー(ORA-12519)が発生するなどの不具合が発生してしまいます。
Oracleで最大プロセス数や最大セッション数は初期化パラメータを管理しているSPFILEに定義されています。変更前にSPFILEのバックアップを取得しておくのをオススメします。
SPFILEの配置場所
Oracle DB 18cの場合の例です。
- 配置位置:[ORACLE_HOME]/database/SPFILE[ORACLE_SID].ORA
(例)C:\ORACLE\WINDOWS.X64_180000_db_home\database\SPFILEORCL.ORA
最大プロセス数、最大セッション数の変更方法
- 最初に「V$SYSTEM_PARAMETER」から現在の最大プロセス数と最大セッション数の設定値を確認します。「V$SYSTEM_PARAMETER」はインスタンスに現在有効になっている初期化パラメータ情報を示します。
123SELECT NAME, VALUEFROM V$SYSTEM_PARAMETERWHERE NAME IN('processes', 'sessions'); - 次にALETER文でプロセス数の上限を変更します。
1ALTER SYSTEM SET PROCESSES = 1000 SCOPE=SPFILE; - SPFILEの変更はOracleを再起動しないと適用されないため、Oracle DBを再起動します。
詳細は「Oracle Database(Oracleサーバ)の再起動(停止・起動)手順」参照 - 再度プロセス数とセッション数を確認すると上限が変更されているのが確認出来ます。セッション数は明示的に変更しなくてもプロセス数の変更に比例して上限が増えます。
123SELECT NAME, VALUEFROM V$SYSTEM_PARAMETERWHERE NAME IN('processes', 'sessions');
補足
なお、今回ご紹介した Oracle Database における「最大プロセス数(PROCESSES)」および「最大セッション数(SESSIONS)」の変更手順については、環境や用途によって最適値が異なります。以下の点にご留意ください。
-
本番環境では、まずテスト環境で変更を検証したうえで適用することをおすすめします。変更後の再起動により影響が出る可能性があります。
-
PROCESSES の値を単に増やせば良いわけではなく、実際の接続数・負荷・リソース使用量を定期的にモニタリングする必要があります(例:V$SESSION、V$PROCESS、V$RESOURCE_LIMIT など)。
-
セッション数(SESSIONS)は PROCESSES の設定に影響を受けており、一般に「SESSIONS ≒ PROCESSES × 1.1〜1.2」のような目安が用いられますが、具体的には接続方式やアプリケーション構成によって変動します。
-
多数のプロセスを許容する設定にする際は、サーバーのメモリ・CPU・I/Oリソースに対する影響も併せて考慮する必要があります。負荷のピーク時にはリソース競合が起きやすくなります。
-
万一、変更前の値に戻す必要が生じた場合は、適用後のログやパフォーマンス指標を保持しておくことで、トラブルシューティングが容易になります。
以上を踏まえ、環境に適した値の設定および運用体制を整えたうえでパラメータ変更を実施して頂ければと思います。安心して運用を続けるための一助となれば幸いです。


