Oracleのプロセス数とセッション数

当ページのリンクには広告が含まれています。

こんにちは、KiYOです。

システムエンジニア歴20年オーバーの経歴です。

Oracleを使用してて、急に以下のエラーで接続できなくなる事があった場合、Oracleのプロセス数とセッション数の現在値を確認し、見直す必要があります。

  • 「ORA-00020 最大プロセス数を超えました」
  • 「ORA-00018 最大セッション数を超えました」
目次

現状のプロセス数とセッション数を把握し、原因を特定

V$RESOURCE_LIMITのオブジェクトを参照できるユーザー(system or sys)でSQLを実行します。

SELECT
   RESOURCE_NAME リソース名,
   CURRENT_UTILIZATION 現在数,
   MAX_UTILIZATION 最大数,
   LIMIT_VALUE 上限
FROM
   V$RESOURCE_LIMIT
WHERE
   RESOURCE_NAME IN ('processes','sessions');

・意味
processes → 同時接続できるOSプロセス最大数
sessionsS → セッション最大数

上限に達していれば、原因は設定値より多くの接続数が発生したことになります。

対処法

DBにログイン

$ sqlplus /nolog
SQL> connect / as sysdba
接続されました。

パラメータファイルの確認

pfile(初期化パラメータファイル)かspfile(サーバパラメータファイル)のどちらが優先になっているか確認。

下記コマンドでSPFILEのパスが表示されたら、SPFILEを使用
VALUEがNULLLだったらPFILE
SQL> SHOW PARAMETER spfile

NAME                       TYPE        VALUE
-------------------------- ----------- ---------------------------------------------
spfile                     string      %ORACLE_HOME%¥DATABASE¥SPFILE%ORACLE_SID%.ORA

最適なプロセス数とセッション数の算出

現状把握した際の上限より多くプロセス数を設定

セッションはプロセス数の約10%程度大きくしていた方がいいです。

SESSIONSのデフォルト値 = (1.1 x PROCESSES) + 5

パラメータファイルに適用

以下のコマンドを実行。xxxには上記で算出した値をそれぞれの箇所に設定します。

alter system set processes = xxx scope=spfile;
alter system set sessions = xxx scope=spfile;

パラメータファイルの反映

Oracleの再起動で値が反映されます。

上記のV$RESOURCE_LIMITのSQLで変わったかどうか確認してください。

(1)Oracle 停止(shutdown immediate)
(2)Oracle 起動(startup)

以上で、対応完了となります。

トラブルにならないよう、業務要件にあったOralce設計が大事ですね。これらの本とかシステム構築・運用する上で大変お勧めです。

Udemyというオンライン講座でもデータベースの学習はできます。 再生速度を早めてみたり、何度も見返すことができるのでおすすめです! 私も色々なデータベースをここで学習しています。

[affi id=2]

Oracleの運用中は色々トラブルが発生します。

デッドロックが発生したときの調査方法や解決法はこちらをご覧ください。

統計情報について詳しく知りたい方はこちらをご覧ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ITの事や自分の経験談など綴っていきたいと思っています。

コメント

コメントする

CAPTCHA


目次