リソースを制限する

Resource Manager を利用できない環境においてプロファイルを使いセッションおよび SQL 単位で使用するリソースを制限する方法。

プロファイルの作成

プロファイル my_profile の作成例(リソース制限に関する部分のみ)

CREATE PROFILE my_profile LIMIT
	SESSIONS_PER_USER 1
	CONNECT_TIME 1
	IDLE_TIME 1
	CPU_PER_SESSION 100
	CPU_PER_CALL 100
	LOGICAL_READS_PER_SESSION 100
	LOGICAL_READS_PER_CALL DEFAULT
	PRIVATE_SGA DEFAULT
	COMPOSITE_LIMIT UNLIMITED ;

初期状態で DEFAULT プロファイル が用意されている。
DEFAULT は DEFAULT プロファイルから値を継承することをあらわし UNLIMITED は無制限をあらわす。
(リソース制限に関しては DEFAULT プロファイルはデフォルト状態では全て UNLIMITED に設定されている)

リソース制限可能な項目

リソース名内容単位
SESSIONS_PER_USER同時接続数の制限接続数
CONNECT_TIMEセッションでの総接続時間
IDLE_TIMEセッションでアイドル状態が許される時間
CPU_PER_SESSIONセッション単位での CPU 時間1/100秒
CPU_PER_CALL1 コール (SQL) 単位での CPU 時間1/100秒
LOGICAL_READS_PER_SESSIONセッション単位での論理読み込みブロック数ブロック
LOGICAL_READS_PER_CALLSQL 単位での論理読み込みブロック数ブロック
PRIVATE_SGA共有サーバー接続においてセッション単位でのプライベート領域(SGA 共有プール内)の大きさバイト
COMPOSITE_LIMITセッション単位でのリソースの総コストサービス(※)

(※) サービスの単位は

CPU_PER_SESSION
LOGICAL_READS_PER_SESSION
CONNECT_TIME
PRIVATE_SGA

の重み付け合計により算出する。 重み付けは ALTER RESOURCE COST によって設定する。(デフォルトは全て 0)

REOURCE_COST データディクショナリ参照

プロファイルの適用とリソース制限の有効化

リソース制限はデフォルトで無効になっているので以下のコマンドで有効にする。

ALTER SYSTEM SET RESOURCE_LIMIT=TRUE ;
ALTER USER user_name PROFILE my_profile ;
-- 上で変更したデフォルトプロファイルに戻す ALTER USER 文
-- ALTER USER user_name PROFILE default ;

適用後に各種リソース制限を超えた場合には以下のようなエラーが出力される。場合によってはロールバック、ログオフがされる。アプリケーションが生存している場合、使用したリソースは解放されているがアプリケーションがエラーを受け取るまではセッション情報が残されているようである。

  • ORA-02399: 最大接続時間を超えました。ログオフ中です。
  • ORA-02391: 同時実行のSESSION_PER_USER制限を超えました。
  • ORA-02396: 最大アイドル時間を超えました。再接続してください。
  • ORA-02392: CPU使用に対するセッション制限を超えました。ログオフ中です。
  • ORA-02394: I/O使用に対するセッション制限を超えました。ログオフ中です。
  • ORA-02395: I/O使用に対するコール制限を超えました。
  • ORA-02393: CPU使用に対するコール制限を超えました。
  • ORA-02390: COMPOSITE_LIMITを超えました。ログオフ中です。

リソースの制限を本格的に行なう場合には、より多機能な Resource Manager を使用する。(EE 版のみ)

Resource Manager を使用するには Enterprise Edition が必要
(サイト統合にともない代替情報の URL は不明)
参考: Oracle 10g Technical Data 主要機能一覧oracle.co.jpOracle 9i Technical Data 主要機能一覧oracle.co.jp (oracle.co.jp)

 


関連事項

日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ Oracle のライセンスがわからない…
Oracle Direct (ネットで聞いても最後はここで要確認)