株式会社コーソル

KNOWLEDGE

コーソルの技術情報

コーソルでは経験豊かなエンジニアが、Oracle Databaseに関するお役立ち情報を発信しています。
データベースのチューニングや設定にお役立ていただけます。

KNOWLEDGE検索人気のキーワード

Oracle DB Tips

[12c R2] MAX_IDLE_TIMEパラメータ

01.MAX_IDLE_TIMEとはどのようなパラメータか?

長時間アイドル状態にあるセッションを自動的に終了するためのパラメータです。 セッションが、MAX_IDLE_TIMEで指定された時間(単位:分)アイドル状態を継続すると、そのセッションは自動的に終了されます。 このパラメータはOracle Database 12.2から導入されました。

02.実行結果:MAX_IDLE_TIMEによるセッションの自動終了

MAX_IDLE_TIMEパラメータに1(単位:分)を設定すると、セッションが1分間以上アイドル状態を継続すると、セッションが強制終了されます。 ローカル接続時にMAX_IDLE_TIME分以上アイドル状態を継続した後にSQLを実行すると、ORA-03135エラーが発生します。

[oracle@lc201ora1 ~]$ sqlplus test/test@localhost:1521/c201ora.world
SQL*Plus: Release 12.2.0.1.0 Production on 金 3月 24 17:40:04 2017
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
最終正常ログイン時間: 金 3月  24 2017 17:16:50 +09:00
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
に接続されました。
SQL> select * from dual;
D
-
X
SQL> --- MAX_IDLE_TIME 分以上 時間経過
SQL> select * from dual;
select * from dual
*
行1でエラーが発生しました。:
ORA-03113: 通信チャネルでend-of-fileが検出されました プロセスID:
8546
セッションID: 15、シリアル番号: 10043

リモート接続時にMAX_IDLE_TIME分以上アイドル状態を継続した後にSQLを実行すると、ORA-03135エラーが発生します。

[oracle@lc201ora1 ~]$ sqlplus test/test@localhost:1521/c201ora.world
SQL*Plus: Release 12.2.0.1.0 Production on 金 3月 24 17:46:29 2017
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
最終正常ログイン時間: 金 3月  24 2017 17:40:04 +09:00
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
に接続されました。
SQL> select * from dual;
D
-
X
SQL> select * from dual;
select * from dual
*
行1でエラーが発生しました。:
ORA-03113: 通信チャネルでend-of-fileが検出されました プロセスID:
8872
セッションID: 15、シリアル番号: 40522

上記実行例からわかるとおり、アイドル時間の計測はあまり厳密ではないようです。

03.注意点

※ALTER SYSTEM SET文を用いてデータベース単位で設定されます。したがって、特定のユーザーに対してのみ、アイドルセッションの自動終了機能を適用するなどはできません。
※PDB単位で設定することができます。
※ALTER SESSION SET文を用いてセッション単位で設定することはできません。
※アイドル時間の計測はあまり厳密ではないようです。

04.従来機能との関連性

Oracle Database 12.1以前では、長時間アイドル状態にあるセッションを自動的に終了するための仕組みとして、以下の2つが用意されていました。
※リソースマネージャ
※プロファイル 上記の仕組みはともにMAX_IDLE_TIMEよりも柔軟性の高い仕組みです。特にリソースマネージャは柔軟性の高さにより、さまざまな状況に適用することができます。 一方で、MAX_IDLE_TIMEは上記の仕組みに比べて、柔軟性が低く、適用できる状況が限定されます。このため、MAX_IDLE_TIMEは、アイドルセッションの自動終了する動作を簡易的に使いたい場合に使用する機能と考えられます。

05.参考情報

※MAX_IDLE_TIME – OracleR Databaseリファレンス 12cリリース2 (12.2) E72905-02 [http://docs.oracle.com/cd/E82638_01/REFRN/MAX_IDLE_TIME.htm#GUID-9E26A81D-D99E-4EA8-88DE-77AF68482A20]