Help us understand the problem. What is going on with this article?

[OracleDB]「ORA-00020」エラー対処法

はじめに

OracleDBを使用したプログラムを起動した時に、ORA-00020エラーが出た場合の対処法です。

このエラーが出る原因は、同時に起動しているプロセス数が初期化パラメータPROCESSESの上限値に達することです。

プロセス数上限値を大きくする

現在の上限値を調べるには、V$RESOURCE_LIMITのLIMIT_VALUEを見ます。

SELECT *
FROM V$RESOURCE_LIMIT
WHERE NAME = 'processes' OR 'sessions'

V$RESOURCE_LIMITの各カラムの意味は以下のとおりです。
(Oracle® Databaseリファレンより一部引用)

RESOURCE_NAME:リソース名
CURRENT_UTILIZATION:現在使用されている(リソースまたはロック、プロセスの)数
MAX_UTILIZATION:最後にインスタンスを起動してからのこのリソースの最大消費量
INITIAL_ALLOCATION:初期の割当て。初期化パラメータ・ファイルに指定したリソースの値と同じ。無制限の場合はUNLIMITED。
LIMIT_VALUE:上限値。リソースおよびロックの場合は無制限。無制限の場合はUNLIMITED。

では、プロセス数上限値の変更方法です。
初期化パラメータ・ファイル(SPFILE)で上限値を指定し、DBを再起動することになります。
プロセス数だけでなく、セッション数の変更も行う必要があります。

ALTER SYSTEM SET PROCESSES = (上限値) SCOPE = SPFILE
ALTER SYSTEM SET SESSIONS = (上限値) SCOPE = SPFILE

プロセス数の上限値は、同時に起動する可能性がある最大プロセス数に、バックグラウンド・プロセス数を加算した数になります。
バックグラウンド・プロセスの最大値は一概に決めることは出来ないので、現状を顧みて決定します。

セッション数の上限値は、プロセス数の最大値に、バックグラウンド・プロセスの数を加えて、さらに再帰セッションの約10%を加えた値となります。
求め方は以下のようになります。

(1.5 × PROCESSES) + 22

設定が完了したら、DBを再起動してください。

おわりに

セッション数の上限値は推奨値(参考値)となりますので、実際の運用に合わせて変更する場合もあります。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away