46 SQL*PlusでのPDBに対するOracle Resource Managerの使用

Oracle Resource Manager (リソース・マネージャ)の管理にPL/SQLパッケージ・プロシージャを使用して、マルチテナント・コンテナ・データベース(CDB)内のプラガブル・データベース(PDB)にリソースを割り当てることができます。

PDBにリソース・マネージャを使用する前に、次の要件を満たします。

注意:

  • この章のタスクは、SQL*PlusまたはOracle SQL Developerを使用して実行できます。

  • リソース・マネージャは、Oracle Enterprise Manager Cloud Control (Cloud Control)のグラフィカル・ユーザー・インタフェースで管理することもできます。Cloud Controlを使用したCDBでのリソース・マネージャの管理の詳細は、「Cloud ControlでのPDBに対するOracle Resource Managerの使用」およびCloud Controlのオンライン・ヘルプを参照してください。

  • 単純にするために、この章ではPDB、アプリケーション・ルートおよびアプリケーションPDBを「PDB」と呼びます。

46.1 Oracle Resource ManagerとCDBおよびPDBの使用について

CDBリソース・プランおよびPDBリソース・プランを作成して、CDBとPDBのリソースを管理できます。

46.1.1 CDBレベルとPDBレベルでのリソースの管理について

非CDBでは、リソース・マネージャを使用して、システム・リソースおよびデータベース・リソースについて競合する複数のワークロードを管理できます。ただし、CDBでは、システム・リソースおよびCDBリソースについて競合する複数のPDB内に、複数のワークロードが存在する場合があります。

CDBでは、リソース・マネージャにより、次の2つの基本レベルでリソースを管理できます。

  • CDBレベル - リソース・マネージャを使用して、システム・リソースおよびCDBリソースについて競合する複数のPDBのワークロードを管理できます。PDBへのリソースの割当て方法を指定し、特定のPDBのリソース使用率を制限できます。

  • PDBレベル - リソース・マネージャを使用して、各PDB内のワークロードを管理できます。

リソース・マネージャにより、次の2つのステップでリソースを割り当てます。

  1. システム・リソースの一部を各PDBに割り当てます。

  2. 特定のPDBでは、ステップ1で取得したシステム・リソースの一部をPDBに接続された各セッションに割り当てます。

注意:

ルートのすべてのアクティビティは、リソース・マネージャによって自動的に管理されます。

46.1.2 リソース・マネージャが提供するCDBのソリューション

リソース・マネージャは、CDBのリソースのより効率的な使用方法を提供できます。

CDBに対するリソースの割当てがオペレーティング・システムによって決定される場合は、次のようなワークロード管理に関する問題が生じることがあります。

  • PDB間の不適当なリソースの割当て

    オペレーティング・システムはタスク間の優先度付けができないため、すべてのアクティブなプロセスの間で均等にリソースを分配します。このため、1つ以上のPDBで過大なシステム・リソースが使用され、他のPDBでリソースが不足する場合があります。

  • 1つのPDB内における不適当なリソースの割当て

    1つのPDBに接続された1つ以上のセッションで過大なシステム・リソースが使用され、同じPDBに接続された他のセッションでリソースが不足する場合があります。

  • PDBの一貫性のないパフォーマンス

    他のPDBとの間で競合するシステム・リソースの量が一定でない場合は、1つのPDBのパフォーマンスは必ずしも一定になりません。

  • PDBのリソース使用率データの不足

    PDBの監視およびチューニングにおいてはリソース使用率データが重要になります。非CDBのリソース使用率データを収集するときに、この非CDBがシステム上で実行されている唯一のデータベースである場合、オペレーティング・システム・モニタリング・ツールを使用できることがあります。ただし、CDBの場合、システム上で複数のPDBが実行されるため、オペレーティング・システム・モニタリング・ツールの有用性は低くなります。

リソース・マネージャは、PDB間およびPDB内でのハードウェア・リソースの割当て方法をCDBで厳密に制御することによって、これらの問題を克服するのに役立ちます。

複数のPDBを含むCDBでは、通常、一部のPDBの重要度が他のPDBより高くなります。リソース・マネージャを使用すると、特定のPDBのリソース使用率を優先度付けしたり制限できます。

リソース・マネージャを使用すると、次のことが可能になります。

  • PDBごとにシステム・リソースの共有が異なるよう指定して、より多くのリソースが重要度の高いPDBに割り当てられるようにします。

  • 特定のPDBのCPU使用率を制限します。

  • 特定のPDBで使用できるパラレル実行サーバーの数を制限します。

  • 特定のPDBのメモリー使用率を制限します

  • 特定のPDBで保証されるメモリー量を指定します

  • 特定のPDBで使用可能なメモリーの最大値を指定します

  • 異なるPDBのセットにPDBパフォーマンス・プロファイルを使用します

    PDBのセットのパフォーマンス・プロファイルでは、システム・リソースの共有、CPU使用率、およびパラレル実行サーバーの数を指定できます。PDBパフォーマンス・プロファイルにより、個々のPDBではなくプロファイルのリソース・マネージャ・ディレクティブを指定することで、大量のPDBのリソースを管理できます。

  • 1つのPDBに接続された様々なセッションのリソース使用率を制限します。

  • 特定のPDBによって生成されるI/Oを制限します

  • PDBのリソース使用率を監視します。

46.1.3 CDBリソース・プラン

CDBでは、PDBの優先度のレベルが異なる場合があります。CDBリソース・プランを作成し、これらの優先度に従ってPDBごとにリソースを分配できます。

46.1.3.1 CDBリソース・プランについて

CDBリソース・プランにより、そのリソース・プラン・ディレクティブ(ディレクティブ)のセットに従って、リソースがそのPDBに割り当てられます。

CDBリソース・プランとそのディレクティブは親子関係にあります。各ディレクティブは次のいずれかを参照します。

  • 単一のPDB

  • PDBパフォーマンス・プロファイル内のPDBのセット

PDBパフォーマンス・プロファイルは、PDBのグループにCDBリソース・プラン・ディレクティブを構成するためのよい方法です。たとえば、「gold」PDB、「silver」PDBおよび「bronze」PDBのパフォーマンス・プロファイルを作成できます。PDBでは、DB_PERFORMANCE_PROFILE初期化パラメータを使用してパフォーマンス・プロファイルを指定します。PDBロックダウン・プロファイルを使用して、リソースを制御するPDB初期化パラメータ(SGA_TARGETPGA_AGGREGATE_LIMITなど)をPDBのグループに指定できます。ベスト・プラクティスは、PDBパフォーマンス・プロファイルとPDBロックダウン・プロファイルに一致した名前を使用することです。また、PDBの所有者がプロファイルを切り替えることを防ぐために、PDBのパフォーマンス・プロファイルをPDBのロックダウン・プロファイルに配置することがベスト・プラクティスです。

同じCDB内の個々のPDBおよびPDBパフォーマンス・プロファイルの両方にディレクティブを指定できます。現在アクティブなプランの2つのディレクティブで同じPDBまたは同じPDBパフォーマンス・プロファイルを参照することはできません。

次のリソースのPDBへの割当ては、ディレクティブによって制御されます。

  • CPU

  • パラレル実行サーバー

ディレクティブにより、PDBまたはPDBパフォーマンス・プロファイルごとに指定する共有値に基づいてPDBへのリソースの割当てを制御できます。共有値が高いほど、リソースは増加します。たとえば、あるPDBに、もう1つのPDBに割り当てられた2倍のリソースを割り当てることを指定でき、このことを行うには、最初のPDBに2番目のPDBの2倍高い共有値を設定します。同様に、最初のPDBパフォーマンス・プロファイルに2番目のPDBパフォーマンス・プロファイルの2倍高い共有値を設定することで、最初のPDBパフォーマンス・プロファイルに、2番目のPDBパフォーマンス・プロファイルに割り当てられたリソースの2倍のリソースを割り当てることを指定できます。設定は、各プロファイルを使用するPDBのセットに適用されます。

PDBおよびPDBパフォーマンス・プロファイルに使用率制限を指定することもできます。使用率制限により、PDBまたはPDBパフォーマンス・プロファイルへのリソース割当てが制限されます。たとえば、これにより、CDBに使用可能なCPU全体の割合として、PDBで確保できるCPUの量を制御できます。

CDB内の各PDBおよびPDBパフォーマンス・プロファイルに割り当てるリソースを正確に制御するために、共有と使用率制限の両方を一緒に使用できます。

関連項目:

PDBロックダウン・プロファイルの詳細は、セキュリティを強化するためのPDBユーザーの制限についてを参照してください

46.1.3.2 PDBへのリソース割当ての共有

PDB間でリソースを割り当てるには、PDBまたはPDBパフォーマンス・プロファイルごとに共有値を割り当てます。共有値が高いほど、PDBパフォーマンス・プロファイルを使用する1つまたは複数のPDBに保証されるリソースは多くなります。

DBMS_RESOURCE_MANAGERパッケージのCREATE_CDB_PLAN_DIRECTIVEプロシージャを使用して、PDBの共有値を指定します。このプロシージャのsharesパラメータにより、PDBの共有値が指定されます。

DBMS_RESOURCE_MANAGERパッケージのCREATE_CDB_PROFILE_DIRECTIVEプロシージャを使用して、PDBパフォーマンス・プロファイルの共有値を指定します。このプロシージャのsharesパラメータにより、PDBパフォーマンス・プロファイルの共有値が指定されます。複数のPDBが同じPDBパフォーマンス・プロファイルを使用できます。

図46-1に、CDBリソース・プランに共有値が指定された3つのPDBの例を示します。

図46-1 CDBリソース・プランにおける共有

図46-1の説明が続きます
「図46-1 CDBリソース・プランにおける共有」の説明

図46-1は、共有の合計数が7 (3+3+1)であることを示しています。PDB salespdbおよびservicespdbは、それぞれリソースの3/7を保証されていますが、PDB hrpdbはりソースの1/7を保証されています。ただし、リソースの競合がない場合には、いずれのPDBでも保証された量より多くのリソースを使用できます。

PDBをロードすると、割り当てられたすべてのシステム・リソースが使用されると想定し、表46-1で、図46-1のPDBへのリソース割当てについて共有値に基づいて説明します。

表46-1 サンプルPDBへのリソース割当て

リソース リソース割当て

CPU

PDB salespdbおよびservicespdbでは、同じ量のCPUリソースを使用できます。PDB salespdbおよびservicespdbは、それぞれPDB hrpdbの3倍のCPUリソースを保証されています。

このリソースの詳細は、「CPU」を参照してください。

パラレル実行サーバー

PDB salespdbおよびservicespdbからキューされているパラレル問合せは、同等に選択されます。PDB salespdbおよびservicespdbからキューされているパラレル問合せは、PDB hrpdbからキューされているパラレル問合せの3倍の頻度で選択されます。

このリソースの詳細は、「並列度制限」を参照してください。

46.1.3.3 PDBの使用率制限

使用率制限により、特定のPDBまたは特定のPDBパフォーマンス・プロファイルのシステム・リソース使用率が抑制されます。CPU、パラレル実行サーバーおよびメモリーの使用率制限を指定できます。

PDBの使用制限は、CDBリソース・プランまたはPDB初期化パラメータによって設定します。表46-2で、PDBの使用率制限およびPDBが使用率制限に達した場合に実行されるリソース・マネージャの処理について説明します。PDBパフォーマンス・プロファイルで指定した制限の場合、各制限はPDBパフォーマンス・プロファイルを使用する各PDBに適用されます。

表46-2 PDBの使用率制限

リソース リソース使用率制限 リソース・マネージャの処理

CPU

PDBに接続されたセッションで、PDBのCPU使用率制限に達しました。

CPUのこの使用率制限は、DBMS_RESOURCE_MANAGERパッケージのサブプログラムのutilization_limitパラメータで設定されます。utilization_limitパラメータによって、PDBで使用できるシステム・リソースの割合が指定されます。この値の範囲は、0から100までです。

また、PDBでCPUを制限するには、CPU_COUNT初期化パラメータを設定します。たとえば、CPU_COUNT8を設定した場合、PDBは特定の時点で8個を超えるCPUを使用できません。utilization_limitおよびCPU_COUNTの両方を指定した場合は、より制限される(低い)値が施行されます。

PDBのCPU使用率が使用率制限を超えないように、リソース・マネージャによってPDBセッションが制限されます。

パラレル実行サーバー

PDBでは、PARALLEL_SERVERS_TARGET初期化パラメータの値をDBMS_RESOURCE_MANAGERパッケージのサブプログラムのparallel_server_limitパラメータの値で乗算したものより多くのパラレル実行サーバーが使用されました。

たとえば、PARALLEL_SERVERS_TARGET初期化パラメータが200に設定され、PDBのparallel_server_limitパラメータが10%に設定されている場合、PDBの使用率制限は20パラレル実行サーバー(200 X .10)となります。

PDBで使用されているパラレル実行サーバーの数が、PARALLEL_SERVERS_TARGET初期化パラメータの値をparallel_server_limitパラメータの値で乗算することによって指定された制限を超えた場合、リソース・マネージャによってパラレル問合せがキューされます。

メモリー

複数の初期化パラメータでPDBのメモリー使用を制御できます。たとえば、SGA_TARGET初期化パラメータはPDBのSGAの使用を制限し、PGA_AGGREGATE_LIMIT初期化パラメータはPDBのPGAの使用を制限します。

このリソースの詳細は、「PDBのメモリーを制御する初期化パラメータ」を参照してください。

Oracle Databaseは、PDBが制限初期化パラメータで指定された量よりも多くのメモリーを使用することを防ぎます。

図46-2に、CDBリソース・プランに共有および使用率制限が指定された3つのPDBの例を示します。

図46-2 CDBリソース・プランにおける共有および使用率制限

図46-2の説明が続きます
「図46-2 CDBリソース・プランにおける共有および使用率制限」の説明

図46-2は、utilization_limitおよびparallel_server_limitが両方ともこれらのPDBについて100%に設定されていることから、PDB salespdbおよびservicespdbに対する使用率制限がないことを示しています。ただし、PDB hrpdbは、utilization_limitおよびparallel_server_limitが両方とも70%に設定されていることから、適用可能なシステム・リソースの70%に制限されています。

46.1.3.4 PDBのデフォルト・ディレクティブ

PDBにディレクティブを明示的に定義しない場合、PDBではPDB用のデフォルト・ディレクティブが使用されます。

表46-3に、PDB用の初期デフォルト・ディレクティブの属性を示します。

表46-3 PDB用の初期デフォルト・ディレクティブ属性

ディレクティブ属性

shares

1

utilization_limit

100

parallel_server_limit

100

PDBがCDBに接続されており、ディレクティブが定義されていない場合、PDBではPDB用のデフォルト・ディレクティブが使用されます。

新しいPDBにディレクティブを新しく作成できます。また、DBMS_RESOURCE_MANAGERパッケージのUPDATE_CDB_DEFAULT_DIRECTIVEプロシージャを使用して、PDB用のデフォルト・ディレクティブ属性値を変更することもできます。

PDBがCDBから切断された場合、PDBのディレクティブは保持されます。同じPDBがCDBに再接続される場合、そのPDB用に定義されたディレクティブが手動で削除されていないと、PDBではこのディレクティブが使用されます。

図46-3に、CDBリソース・プランにおけるデフォルト・ディレクティブの例を示します。

図46-3 CDBリソース・プランにおけるデフォルト・ディレクティブ

図46-3の説明が続きます
「図46-3 CDBリソース・プランにおけるデフォルト・ディレクティブ」の説明

図46-3は、デフォルトPDBディレクティブで、shareが1、utilization_limitが50%およびparallel_server_limitが50%となるよう指定されていることを示しています。CDBの一部であり、かつディレクティブが定義されていないすべてのPDBでは、デフォルトPDBディレクティブが使用されます。図46-3は、デフォルトPDBディレクティブを使用するPDB marketingpdbおよびtestingpdbを示しています。したがって、marketingpdbおよびtestingpdbは、それぞれ共有が1および使用率制限が50となります。

46.1.4 PDBリソース・プラン

CDBリソース・プランにより、PDBごとに割り当てられるリソース量が決定されます。PDBリソース・プランでは、特定のPDBに割り当てられるリソースをそのPDB内のコンシューマ・グループにどのように割り当てるかを決定します。

PDBリソース・プランは、非CDBのリソース・プランと似ています。具体的には、PDBリソース・プランによって、PDB内のコンシューマ・グループ間にリソースが割り当てられます。PDBリソース・プランを使用して、「リソース・マネージャによって管理されるリソースのタイプ」で説明されているリソースを割り当てることができます。

1つ以上のPDBリソース・プランを作成する場合、PDBのCDBのCDBリソース・プランが特定の要件を満たしている必要があります。表46-4で、CDBリソース・プランの要件および要件が満たされない場合の結果について説明します。

CDBリソース・プランにディレクティブを作成する場合は、DBMS_RESOURCE_MANAGERパッケージのCREATE_CDB_PLAN_DIRECTIVEプロシージャを使用します。PDBリソース・プランにディレクティブを作成する場合は、同じパッケージ内のCREATE_PLAN_DIRECTIVEプロシージャを使用します。1つ以上のPDBリソース・プランを作成するときにCDBリソース・プランがない場合、CDBでは、Oracle Databaseに付属のDEFAULT_CDB_PLANが使用されます。

注意:

表46-4で、PL/SQLプロシージャのパラメータ値について説明します。「CDBリソース・プラン要件」列で説明されているパラメータ値は、CREATE_CDB_PLAN_DIRECTIVEプロシージャ用です。「要件が満たされない場合の結果」列で説明されているパラメータ値は、CREATE_PLAN_DIRECTIVEプロシージャ用です。

表46-4 PDBリソース・プランのためのCDBリソース・プラン要件

リソース CDBリソース・プラン要件 要件が満たされない場合の結果

CPU

次の要件のいずれかが満たされている必要があります。

  • 共有値が、sharesパラメータを使用してPDBに指定されている必要があります。

  • 100を下回るCPU使用率制限が、utilization_limitパラメータを使用してPDBに指定されている必要があります。

これらの値は、特定のPDBのディレクティブまたはデフォルト・ディレクティブに設定できます。

PDBリソース・プランのCPU割当てポリシーは規定されません。

PDBリソース・プランのutilization_limitパラメータで指定されたCPU制限は、規定されません。

パラレル実行サーバー

次の要件のいずれかが満たされている必要があります。

  • 共有値が、sharesパラメータを使用してPDBに指定されている必要があります。

  • 100を下回るCPU使用率制限が、utilization_limitパラメータを使用してPDBに指定されている必要があります。

  • parallel_server_limitパラメータを使用して、PDBに100未満のパラレル・サーバー制限を指定する必要があります。

これらの値は、特定のPDBのディレクティブまたはデフォルト・ディレクティブに設定できます。

PDBリソース・プランのパラレル実行サーバー割当てポリシーは、規定されません。

PDBリソース・プランでparallel_server_limitパラメータによって指定されたパラレル・サーバー制限は規定されません。

メモリー

共有値が、sharesパラメータを使用してPDBに指定されている必要があります。

この値は、特定のPDBのディレクティブまたはデフォルト・ディレクティブに設定できます。

PDBリソース・プランのメモリー割当てポリシーは規定されません。

図46-4に、CDBリソース・プランおよびPDBリソース・プランの例を示します。

図46-4 CDBリソース・プランおよびPDBリソース・プラン

図46-4の説明が続きます
「図46-4 CDBリソース・プランおよびPDBリソース・プラン」の説明

図46-4は、PDB servicespdbのPDBリソース・プランにおける一部のディレクティブを示しています。CDB内の他のPDBにもPDBリソース・プランを作成できます。

CDBでは、次の制限事項がPDBリソース・プランに適用されます。

  • PDBリソース・プランは、サブプランを含むことができません。

  • PDBリソース・プランには、最大8個のコンシューマ・グループを設定できます。

  • PDBリソース・プランで、複数レベルのスケジューリング・ポリシーを使用することはできません。

非CDBを使用するPDBを作成するときに、非CDBにリソース・プランが含まれていない場合は、これらのリソース・プランがこれらの制限事項に従っていないことがあります。この場合、これらのリソース・プランは、Oracle Databaseによってこれらの要件を満たす同等のPDBリソース・プランに自動的に変換されます。元のリソース・プランおよびディレクティブは、DBA_RSRC_PLANSおよびDBA_RSRC_PLAN_DIRECTIVESビューにLEGACYステータスで記録されます。

46.1.5 バックグラウンド・タスクと管理タスクおよびコンシューマ・グループ

CDBでは、バックグラウンド・タスクおよび管理タスクが、これらのタスクを最適に実行するリソース・マネージャのコンシューマ・グループにマップされます。

リソース・マネージャでは、次のルールを使用して、コンシューマ・グループにタスクをマップします。

  • タスクは、このタスクを開始するコンテナ内のコンシューマ・グループにマップされます。タスクがルートで開始される場合、このタスクはルート内のコンシューマ・グループにマップされます。タスクがPDBで開始される場合、このタスクはPDB内のコンシューマ・グループにマップされます。

  • タスクが内部クライアントによって内部APIを使用して開始される場合は、内部APIにより、タスクをマップするコンシューマ・グループが決定されます。

    たとえば、バックアップ・タスクでは、内部的なOracle関数が使用されます。SYSによってルートでバックアップ・タスクが開始されると、このバックアップ・タスクは、Oracle関数に基づいて、ルート内のSYS_GROUPコンシューマ・グループにマップされます。

  • タスクが内部APIを使用せずに開始される場合、このタスクは、ユーザー定義マッピング・ルールに基づいてコンシューマ・グループにマップされます。

    たとえば、SYSSYS_GROUPコンシューマ・グループにマップされる場合、SYSによって開始されるタスクは、SYS_GROUPコンシューマ・グループにマップされます。

これらのルールに従うバックグラウンド・タスクおよび管理タスクは、次のとおりです。

  • バックアップとリカバリ

  • 監査

  • レプリケーションおよびアドバンスト・キューイング

  • PDBの切断

  • メンテナンス・ウィンドウ

46.1.6 PDBのメモリーを制御する初期化パラメータ

複数の初期化パラメータでPDBのメモリー使用を制御できます。

PDBを現在のコンテナとして次の初期化パラメータを設定する場合、パラメータは現在のPDBのメモリー使用を制御します。これらのパラメータの1つ以上がPDBに対して設定されている場合は、そのCDBおよび他のPDBがそれらの操作に対して十分なメモリーを持っていることを確認します。

表46-5 PDBのメモリー使用を制御する初期化パラメータ

初期化パラメータ 説明

DB_CACHE_SIZE

PDBに対して保証される最小バッファ・キャッシュ容量を設定します。

次の要件が満たされている必要があります。

  • CDBルートのDB_CACHE_SIZEの設定の50%以下である必要があります。

  • すべてのPDBのDB_CACHE_SIZE設定の合計が、CDBルートのDB_CACHE_SIZEの設定の50%以下である必要があります。

CDBルートでSGA_TARGET初期化パラメータが0(ゼロ)以外の値に設定されている場合、これらの要件は適用されません。

SGA_TARGET初期化パラメータが0(ゼロ)以外の値に設定されている場合は、次の要件が満たされている必要があります。

  • PDB内のDB_CACHE_SIZEおよびSHARED_POOL_SIZEの値は、PDBのSGA_TARGET値の50%以下にする必要があります。

  • PDBのDB_CACHE_SIZESHARED_POOL_SIZEを足した値が、CDBレベルでSGA_TARGET値の50%以下である必要があります。

  • CDB内のすべてのPDBのDB_CACHE_SIZESHARED_POOL_SIZEを足した合計が、CDBレベルのSGA_TARGET値の50%以下である必要があります。

SHARED_POOL_SIZE

PDBに対して保証される最小共有プール容量を設定します。

次の要件が満たされている必要があります。

  • CDBルートのSHARED_POOL_SIZEの設定の50%以下である必要があります。

  • すべてのPDBのSHARED_POOL_SIZE設定の合計が、CDBルートのSHARED_POOL_SIZEの設定の50%以下である必要があります。

CDBルートでSGA_TARGET初期化パラメータが0(ゼロ)以外の値に設定されている場合、これらの要件は適用されません。

SGA_TARGET初期化パラメータが0(ゼロ)以外の値に設定されている場合は、次の要件が満たされている必要があります。

  • PDB内のDB_CACHE_SIZEおよびSHARED_POOL_SIZEの値は、PDBのSGA_TARGET値の50%以下にする必要があります。

  • PDBのDB_CACHE_SIZESHARED_POOL_SIZEを足した値が、CDBレベルでSGA_TARGET値の50%以下である必要があります。

  • CDB内のすべてのPDBのDB_CACHE_SIZESHARED_POOL_SIZEを足した合計が、CDBレベルのSGA_TARGET値の50%以下である必要があります。

PGA_AGGREGATE_LIMIT

PDBの最大PGAサイズを設定します。

次の要件が満たされている必要があります。

  • CDBルートのPGA_AGGREGATE_LIMITの設定以下である必要があります。

  • PDBのPGA_AGGREGATE_TARGETの設定の2倍以上である必要があります。

PGA_AGGREGATE_TARGET

PDBのターゲット集計PGAサイズを設定します。

次の要件が満たされている必要があります。

  • CDBレベルで設定されているPGA_AGGREGATE_TARGET値以下である必要があります。

  • CDBレベルで設定されているPGA_AGGREGATE_LIMIT初期化パラメータ値の50%以下である必要があります。

  • PDBに設定されているPGA_AGGREGATE_LIMIT値の50%以下である必要があります。

SGA_MIN_SIZE

PDBの最小SGAサイズを設定します。

次の要件が満たされている必要があります。

  • CDBルートのSGA_TARGETの設定の50%以下である必要があります。

  • PDBのSGA_TARGETの設定の50%以下である必要があります。

  • すべてのPDBのSGA_MIN_SIZE設定の合計が、CDBルートのSGA_TARGETの設定の50%以下である必要があります。

CDBルートでSGA_TARGET初期化パラメータが設定されていないか、0 (ゼロ)に設定されている場合、これらの要件は適用されません。

ベスト・プラクティスは、すべてのPDBのSGA_MIN_SIZE値の合計をCDBのSGAサイズの50%以下に制限することです。

SGA_TARGET

PDBの最大SGAサイズを設定します。

PDBのSGA_TARGET設定は、CDBルートでSGA_TARGET初期化パラメータが0 (ゼロ)以外の値に設定されている場合にのみ強制されます。PDBのSGA_TARGET設定は、CDBルートのSGA_TARGET設定以下である必要があります。

これらの初期化パラメータは、次の条件を満たす場合にのみ、PDBでのメモリーの使用方法を制御します。

  • NONCDB_COMPATIBLE初期化パラメータが、CDBルートでfalseに設定されている。

  • CDBルートにMEMORY_TARGET初期化パラメータが設定されていないか、0 (ゼロ)が設定されている。

例46-1 PDBで使用可能な最大平均PGAメモリーの設定

PDBを現在のコンテナとして、次のSQL文を実行して、メモリーとspfileの両方でPGA_AGGREGATE_LIMIT初期化パラメータを90MBに設定します。

ALTER SYSTEM SET PGA_AGGREGATE_LIMIT = 90M SCOPE = BOTH;

例46-2 PDBの最大SGAサイズの設定

PDBを現在のコンテナとして、次のSQL文を実行して、メモリーとspfileの両方でSGA_MIN_SIZE初期化パラメータを500MBに設定します。

ALTER SYSTEM SET SGA_MIN_SIZE = 500M SCOPE = BOTH;

46.1.7 PDBのI/Oを制限する初期化パラメータ

MAX_IOPS初期化パラメータおよびMAX_MBPS初期化パラメータを設定して、PDBで生成されるディスクI/Oを制限できます。

大量のディスクI/Oはパフォーマンス低下の原因となることがあります。不適切に設計されたSQL、大量トランザクションでの索引や表のスキャンなど、複数の要因によりディスクI/Oが過剰になることがあります。1つのPDBが大量のディスクI/Oを生成している場合、それは同じCDB内の他のPDBのパフォーマンスを低下させることがあります。

次の初期化パラメータの一方または両方を使用して、特定のPDBで生成されるI/Oを制限します。

  • MAX_IOPS初期化パラメータは、毎秒のI/O操作の数を制限します。

  • MAX_MBPS初期化パラメータは、毎秒のI/O操作のMB数を制限します。

単一のPDBに対して両方の初期化パラメータを設定した場合は両方の制限が適用されます。

CDBルートが現在のコンテナであるときに、これらの初期化パラメータを設定した場合、値はCDB内のすべてのコンテナのデフォルト値になります。アプリケーション・ルートが現在のコンテナであるときに、これらの初期化パラメータを設定した場合、値はアプリケーション・コンテナ内のすべてのアプリケーションPDBのデフォルト値になります。PDBまたはアプリケーションPDBが現在のコンテナであるときに、これらの初期化パラメータを設定した場合、その設定はCDBルートまたはアプリケーション・ルートのデフォルト設定より優先されます。これらのパラメータは非CDBには設定できません。

これらの初期化パラメータのデフォルトは0(ゼロ)です。これらの初期化パラメータがPDBで0 (ゼロ)に設定されていて、CDBルートで0に設定されている場合、PDBのI/O制限はありません。これらの初期化パラメータがアプリケーションPDBで0 (ゼロ)に設定されていて、アプリケーション・ルートで0に設定されている場合、アプリケーションPDBのI/O制限はありません。

制御ファイルやパスワード・ファイルに対するI/O操作などのクリティカルなI/O操作は、制限の対象にならず、制限に達した場合も実行を継続します。ただし、I/O操作数およびI/O操作のMB数の計算では、クリティカルなI/O操作を含むすべてのI/O操作がカウントされます。

DBA_HIST_RSRC_PDB_METRICビューを使用して、PDBに対して合理的なI/O制限を計算できます。制限を計算する際には、IOPSIOMBPSIOPS_THROTTLE_EXEMPTおよびIOMBPS_THROTTLE_EXEMPT列の値を考慮します。"rsmgr:io rate limit"待機イベントは、制限に達したことを示します。

例46-3 PDBによって生成されるI/Oの制限

PDBを現在のコンテナとして、次のSQL文を実行して、メモリーとspfileの両方でMAX_IOPS初期化パラメータを毎秒1,000 I/O操作の制限に設定します。

ALTER SYSTEM SET MAX_IOPS = 1000 SCOPE = BOTH;

例46-4 PDBによって生成されるI/OのMB数の制限

PDBを現在のコンテナとして、次のSQL文を実行して、メモリーとspfileの両方でMAX_MBPS初期化パラメータを毎秒5MBのI/Oの制限に設定します。

ALTER SYSTEM SET MAX_MBPS = 5 SCOPE = BOTH;

関連項目:

46.2 リソース・マネージャとCDBの使用の前提条件

CDBでリソース・マネージャを使用する前に、前提条件を満たす必要があります。

リソース・マネージャとCDBを使用する前に、次の前提条件が満たされていることを確認してください。

46.3 個々のPDBのCDBリソース・プランの作成

DBMS_RESOURCE_MANAGERパッケージを使用して、個々のPDBのCDBリソース・プランを作成し、プランに対してディレクティブを定義します。

個々のPDBのCDBリソース・プランの一般的な作成ステップは、次のとおりです。

  1. CREATE_PENDING_AREAプロシージャを使用して、ペンディング・エリアを作成します。
  2. CREATE_CDB_PLANプロシージャを使用して、CDBリソース・プランを作成します。
  3. CREATE_CDB_PLAN_DIRECTIVEプロシージャを使用して、PDBにディレクティブを作成します。
  4. (オプション) UPDATE_CDB_DEFAULT_DIRECTIVEプロシージャを使用して、デフォルトPDBディレクティブを更新します。
  5. (オプション) UPDATE_CDB_AUTOTASK_DIRECTIVEプロシージャを使用して、デフォルトの自動タスク・ディレクティブを更新します。
  6. VALIDATE_PENDING_AREAプロシージャを使用して、ペンディング・エリアを検証します。
  7. SUBMIT_PENDING_AREAプロシージャを使用して、ペンディング・エリアを発行します。

46.3.1 個々のPDBのCDBリソース・プランの作成: 使用例A

使用例で、個々のPDBのCDBリソース・プランの作成に必要な各ステップを示します。

この使用例では、newcdbという名前のCDBにCDBリソース・プランを作成する場合を想定しています。プランには、PDBごとにディレクティブを含めます。また、この使用例では、デフォルト・ディレクティブおよび自動タスク・ディレクティブも更新します。

ディレクティブは、DBMS_RESOURCE_MANAGERパッケージ内の各種プロシージャを使用して定義されます。各ディレクティブの属性は、これらのプロシージャのパラメータを使用して定義されます。表46-6で、プランにおけるディレクティブのタイプについて説明します。

表46-6 CDBリソース・プランにおけるPDBディレクティブの属性

ディレクティブ属性 説明

shares

CPUリソースおよびパラレル実行サーバー・リソースのリソース割当ての共有。「PDBへのリソース割当ての共有」を参照してください。

utilization_limit

CPUのリソース使用率制限。「PDBの使用率制限」を参照してください。

parallel_server_limit

PDBで使用できるパラレル実行サーバーの最大割合。

PDBに対してparallel_server_limitディレクティブが指定されている場合、制限は、PARALLEL_SERVERS_TARGET初期化パラメータの値をCREATE_CDB_PLAN_DIRECTIVEプロシージャのparallel_server_limitパラメータの値で乗算した値になります。「PDBの使用率制限」を参照してください。

表46-7で、CDBリソース・プランにより、表46-6で説明されているディレクティブ属性を使用してリソースがそのPDBにどのように割り当てられるかについて説明します。

表46-7 CDBリソース・プランにおけるPDBのサンプル・ディレクティブ

PDB sharesディレクティブ utilization_limitディレクティブ parallel_server_limitディレクティブ

salespdb

3

無制限

無制限

servicespdb

3

無制限

無制限

hrpdb

1

70

70

デフォルト

1

50

50

自動タスク

1

75

75

PDB salespdbおよびservicespdbは、CDB内の他のPDBよりも重要です。したがって、これらに対しては、高い共有(3)、無制限のCPU使用率リソース、無制限のパラレル実行サーバー・リソースおよび無制限のメモリー・リソースが確保されます。

デフォルト・ディレクティブは、特定のディレクティブが定義されていないPDBに適用されます。この使用例では、CDBに、デフォルト・ディレクティブを使用する複数のPDBが含まれていると想定しています。この使用例では、デフォルト・ディレクティブを更新します。

さらに、この使用例では、自動タスク・ディレクティブも更新します。自動タスク・ディレクティブは、ルート・メンテナンス・ウィンドウで実行される自動メンテナンス・タスクに適用されます。

次のタスクでは、DBMS_RESOURCE_MANAGERパッケージを使用してCDBリソース・プランを作成し、この使用例のデフォルト・ディレクティブおよび自動タスク・ディレクティブを更新します。

  1. 次のCREATE_PENDING_AREAプロシージャを使用して、ペンディング・エリアを作成します。

    exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
  2. 次のCREATE_CDB_PLANプロシージャを使用して、newcdb_planという名前のCDBリソース・プランを作成します。

    BEGIN
      DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN(
        plan    => 'newcdb_plan',
        comment => 'CDB resource plan for newcdb');
    END;
    /
  3. CREATE_CDB_PLAN_DIRECTIVEプロシージャを使用して、PDBにCDBリソース・プラン・ディレクティブを作成します。各ディレクティブにより、特定のPDBへのリソースの割当て方法が指定されます。

    表46-7で、この使用例のPDB salespdbservicespdbおよびhrpdbのディレクティブについて説明します。次のプロシージャを実行して、これらのディレクティブを作成します。

    BEGIN
      DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN_DIRECTIVE(
        plan                  => 'newcdb_plan', 
        pluggable_database    => 'salespdb', 
        shares                => 3, 
        utilization_limit     => 100,
        parallel_server_limit => 100);
    END;
    /
    
    BEGIN
      DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN_DIRECTIVE(
        plan                  => 'newcdb_plan', 
        pluggable_database    => 'servicespdb', 
        shares                => 3, 
        utilization_limit     => 100,
        parallel_server_limit => 100);
    END;
    /
    
    BEGIN
      DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN_DIRECTIVE(
        plan                  => 'newcdb_plan', 
        pluggable_database    => 'hrpdb', 
        shares                => 1, 
        utilization_limit     => 70,
        parallel_server_limit => 70);
    END;
    /
    

    このCDB内の他のすべてのPDBでは、デフォルトPDBディレクティブが使用されます。

  4. PDBの現在のデフォルトCDBリソース・プラン・ディレクティブが要件を満たしていない場合、UPDATE_CDB_DEFAULT_DIRECTIVEプロシージャを使用してディレクティブを更新します。

    デフォルト・ディレクティブは、特定のディレクティブが定義されていないPDBに適用されます。詳細は、「PDBのデフォルト・ディレクティブ」を参照してください。

    表46-7で、この使用例のPDBで使用されているデフォルト・ディレクティブについて説明します。次のプロシージャを実行して、デフォルト・ディレクティブを更新します。

    BEGIN
      DBMS_RESOURCE_MANAGER.UPDATE_CDB_DEFAULT_DIRECTIVE(
        plan                      => 'newcdb_plan', 
        new_shares                => 1, 
        new_utilization_limit     => 50,
        new_parallel_server_limit => 50);
    END;
    /
  5. 現在の自動タスクCDBリソース・プラン・ディレクティブが要件を満たしていない場合、UPDATE_CDB_AUTOTASK_DIRECTIVEプロシージャを使用してディレクティブを更新します。

    自動タスク・ディレクティブは、ルート・メンテナンス・ウィンドウで実行される自動メンテナンス・タスクに適用されます。

    表46-7で、この使用例の自動タスク・ディレクティブについて説明します。次のプロシージャを実行して、自動タスク・ディレクティブを更新します。

    BEGIN
      DBMS_RESOURCE_MANAGER.UPDATE_CDB_AUTOTASK_DIRECTIVE(
        plan                      => 'newcdb_plan', 
        new_shares                => 1, 
        new_utilization_limit     => 75,
        new_parallel_server_limit => 75);
    END;
    /
  6. 次のVALIDATE_PENDING_AREAプロシージャを使用して、ペンディング・エリアを検証します。

    exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
  7. 次のSUBMIT_PENDING_AREAプロシージャを使用して、ペンディング・エリアを発行します。

    exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();

46.4 PDBパフォーマンス・プロファイルを使用するCDBリソース・プランの作成

DBMS_RESOURCE_MANAGERパッケージを使用してPDBパフォーマンス・プロファイルのCDBリソース・プランを作成し、プランに対してディレクティブを定義します。プロファイルを使用する各PDBは、そのプロファイルのCDBリソース・プランを採用します。

PDBパフォーマンス・プロファイルのあるCDBリソース・プランの一般的な作成ステップは、次のとおりです。

  1. プロファイルを使用する各PDBについて、DB_PERFORMANCE_PROFILE初期化パラメータを設定し、プロファイル名を指定します。
  2. CREATE_PENDING_AREAプロシージャを使用して、ペンディング・エリアを作成します。
  3. CREATE_CDB_PLANプロシージャを使用して、CDBリソース・プランを作成します。
  4. CREATE_CDB_PROFILE_DIRECTIVEプロシージャを使用して、PDBパフォーマンス・プロファイルのディレクティブを作成します。
  5. (オプション) UPDATE_CDB_DEFAULT_DIRECTIVEプロシージャを使用して、デフォルトPDBディレクティブを更新します。
  6. (オプション) UPDATE_CDB_AUTOTASK_DIRECTIVEプロシージャを使用して、デフォルトの自動タスク・ディレクティブを更新します。
  7. VALIDATE_PENDING_AREAプロシージャを使用して、ペンディング・エリアを検証します。
  8. SUBMIT_PENDING_AREAプロシージャを使用して、ペンディング・エリアを発行します。

46.4.1 PDBパフォーマンス・プロファイルを使用するCDBリソース・プランの作成: 使用例

使用例で、PDBパフォーマンス・プロファイルのCDBリソース・プランの作成に必要な各ステップを示します。

この使用例では、newcdbという名前のCDBにCDBリソース・プランを作成する場合を想定しています。プランには、PDBパフォーマンス・プロファイルごとにディレクティブを含めます。また、この使用例では、デフォルト・ディレクティブおよび自動タスク・ディレクティブも更新します。

CDBリソース・プランで、各プロファイルに名前を付けます。各PDBで、DB_PERFORMANCE_PROFILE初期化パラメータを設定して、PDBが使用するPDBパフォーマンス・プロファイルを指定します。

ディレクティブは、DBMS_RESOURCE_MANAGERパッケージ内の各種プロシージャを使用して定義されます。各ディレクティブの属性は、これらのプロシージャのパラメータを使用して定義されます。表46-8で、プランにおけるディレクティブのタイプについて説明します。

表46-8 CDBリソース・プランにおけるPDBパフォーマンス・プロファイル・ディレクティブの属性

ディレクティブ属性 説明

shares

CPUリソースおよびパラレル実行サーバー・リソースのリソース割当ての共有。「PDBへのリソース割当ての共有」を参照してください。

utilization_limit

CPUのリソース使用率制限。「PDBの使用率制限」を参照してください。

parallel_server_limit

PDBで使用できるパラレル実行サーバーの最大割合。

PDBパフォーマンス・プロファイルに対してparallel_server_limitディレクティブが指定されている場合、制限は、PARALLEL_SERVERS_TARGET初期化パラメータの値をCREATE_CDB_PLOFILE_DIRECTIVEプロシージャのparallel_server_limitパラメータの値で乗算した値になります。「PDBの使用率制限」を参照してください。

表46-9で、CDBリソース・プランにより、表46-8で説明されているディレクティブ属性を使用してリソースがそのPDBパフォーマンス・プロファイルにどのように割り当てられるかについて説明します。

表46-9 CDBリソース・プランにおけるPDBパフォーマンス・プロファイルのサンプル・ディレクティブ

PDB sharesディレクティブ utilization_limitディレクティブ parallel_server_limitディレクティブ

gold

3

無制限

無制限

silver

2

40

40

bronze

1

20

20

デフォルト

1

10

10

自動タスク

2

60

60

gold PDBパフォーマンス・プロファイルを使用するPDBは、CDB内の他のPDBよりも重要です。したがって、これらに対しては、高い共有(3)、無制限のCPU使用率リソースおよび無制限のパラレル実行サーバー・リソースが確保されます。

silver PDBパフォーマンス・プロファイルを使用するPDBは、中程度の重要度です。したがって、これらの共有は2となります。これらはCPU使用率リソースおよびパラレル実行サーバー・リソースの40%以上を保証されます。

bronze PDBパフォーマンス・プロファイルを使用するPDBは、CDB内の最も重要度が低いPDBです。したがって、共有は最小(1)となります。これらはCPU使用率リソースおよびパラレル実行サーバー・リソースの20%以上を保証されます。

デフォルト・ディレクティブは、特定のディレクティブが定義されていないPDBに適用されます。この使用例では、CDBに、デフォルト・ディレクティブを使用する複数のPDBが含まれていると想定しています。この使用例では、デフォルト・ディレクティブを更新します。

さらに、この使用例では、自動タスク・ディレクティブも更新します。自動タスク・ディレクティブは、ルート・メンテナンス・ウィンドウで実行される自動メンテナンス・タスクに適用されます。

次のステップを完了して、PDBパフォーマンス・プロファイルのCDBリソース・プランを作成し、この使用例のデフォルトおよび自動タスク・ディレクティブを更新します。

  1. プロファイルを使用する各PDBについて、DB_PERFORMANCE_PROFILE初期化パラメータをそのPDBが使用するプロファイルの名前に設定します。

    1. ALTER SYSTEM文を実行してパラメータを設定します。

      たとえば、PDBを現在のコンテナとして、次のSQL文を実行します。

      ALTER SYSTEM SET DB_PERFORMANCE_PROFILE=gold SCOPE=spfile;
    2. PDBをクローズします。

      ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;
    3. PDBをオープンします。

      ALTER PLUGGABLE DATABASE OPEN;
  2. 次のCREATE_PENDING_AREAプロシージャを使用して、ペンディング・エリアを作成します。

    exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
  3. 次のCREATE_CDB_PLANプロシージャを使用して、newcdb_planという名前のCDBリソース・プランを作成します。

    BEGIN
      DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN(
        plan    => 'newcdb_plan',
        comment => 'CDB resource plan for newcdb');
    END;
    /
  4. CREATE_CDB_PLAN_DIRECTIVEプロシージャを使用して、PDBにCDBリソース・プラン・ディレクティブを作成します。各ディレクティブにより、特定のPDBへのリソースの割当て方法が指定されます。

    表46-7は、このシナリオのgoldsilverおよびbronzeプロファイルのディレクティブを示しています。次のプロシージャを実行して、これらのディレクティブを作成します。

    BEGIN
      DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE(
        plan                  => 'newcdb_plan', 
        profile               => 'gold', 
        shares                => 3, 
        utilization_limit     => 100,
        parallel_server_limit => 100);
    END;
    /
    
    BEGIN
      DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE(
        plan                  => 'newcdb_plan', 
        profile               => 'silver', 
        shares                => 2, 
        utilization_limit     => 40,
        parallel_server_limit => 40);
    END;
    /
    
    BEGIN
      DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE(
        plan                  => 'newcdb_plan', 
        profile               => 'bronze', 
        shares                => 1, 
        utilization_limit     => 20,
        parallel_server_limit => 20);
    END;
    /
    

    このCDB内の他のすべてのPDBでは、デフォルトPDBディレクティブが使用されます。

  5. PDBの現在のデフォルトCDBリソース・プラン・ディレクティブが要件を満たしていない場合、UPDATE_CDB_DEFAULT_DIRECTIVEプロシージャを使用してディレクティブを更新します。

    デフォルト・ディレクティブは、特定のディレクティブが定義されていないPDBに適用されます。詳細は、「PDBのデフォルト・ディレクティブ」を参照してください。

    表46-7で、この使用例のPDBで使用されているデフォルト・ディレクティブについて説明します。次のプロシージャを実行して、デフォルト・ディレクティブを更新します。

    BEGIN
      DBMS_RESOURCE_MANAGER.UPDATE_CDB_DEFAULT_DIRECTIVE(
        plan                      => 'newcdb_plan', 
        new_shares                => 1, 
        new_utilization_limit     => 10,
        new_parallel_server_limit => 10);
    END;
    /
  6. 現在の自動タスクCDBリソース・プラン・ディレクティブが要件を満たしていない場合、UPDATE_CDB_AUTOTASK_DIRECTIVEプロシージャを使用してディレクティブを更新します。

    自動タスク・ディレクティブは、ルート・メンテナンス・ウィンドウで実行される自動メンテナンス・タスクに適用されます。

    表46-7で、この使用例の自動タスク・ディレクティブについて説明します。次のプロシージャを実行して、自動タスク・ディレクティブを更新します。

    BEGIN
      DBMS_RESOURCE_MANAGER.UPDATE_CDB_AUTOTASK_DIRECTIVE(
        plan                      => 'newcdb_plan', 
        new_shares                => 1, 
        new_utilization_limit     => 60,
        new_parallel_server_limit => 60);
    END;
    /
  7. 次のVALIDATE_PENDING_AREAプロシージャを使用して、ペンディング・エリアを検証します。

    exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
  8. 次のSUBMIT_PENDING_AREAプロシージャを使用して、ペンディング・エリアを発行します。

    exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();

46.5 CDBリソース・プランの有効化と無効化

CDBリソース・プランは、システムおよびCDBのリソースについて競合する複数のPDBのワークロードを管理します。CDBリソース・プランを有効または無効にできます。

46.5.1 CDBリソース・プランの有効化

ルートのRESOURCE_MANAGER_PLAN初期化パラメータを設定して、CDBに対してリソース・マネージャを有効化します。

このパラメータにより、CDBの現行インスタンスに使用されるトップレベルのプランが指定されます。このパラメータでプランを指定しない場合、リソース・マネージャは有効になりません。

CDBリソース・プランを有効化する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。

CDBリソース・プランを有効化するには:

  1. SQL*Plusで、現在のコンテナがルートであることを確認します。

    「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。

  2. 次のいずれかのアクションを実行します。

    • ALTER SYSTEM文を使用して、RESOURCE_MANAGER_PLAN初期化パラメータをCDBリソース・プランに設定します。

      次の例では、ALTER SYSTEM文を使用して、CDBリソース・プランをnewcdb_planに設定しています。

      ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'newcdb_plan';
      
    • テキスト形式の初期化パラメータ・ファイルで、RESOURCE_MANAGER_PLAN初期化パラメータをCDBリソース・プランに設定し、CDBを再起動します。

      次の例では、初期化パラメータ・ファイルのCDBリソース・プランをnewcdb_planに設定しています。

      RESOURCE_MANAGER_PLAN = 'newcdb_plan'
      

CDBリソース・プランの変更は、Oracle Schedulerを使用してスケジュールすることもできます。

46.5.2 CDBリソース・プランの無効化

ルートのRESOURCE_MANAGER_PLAN初期化パラメータの設定を解除して、CDBに対してリソース・マネージャを無効化します。

CDBリソース・プランを無効化すると、PDBリソース・プランの一部のディレクティブが無効化されます。PDBリソース・プランのためのCDBリソース・プラン要件の詳細は、「PDBリソース・プラン」を参照してください。

CDBリソース・プランを無効化する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。

CDBリソース・プランを無効化するには:

  1. SQL*Plusで、現在のコンテナがルートであることを確認します。

    「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。

  2. 次のいずれかのアクションを実行します。

    • ALTER SYSTEM文を使用して、CDBに対してRESOURCE_MANAGER_PLAN初期化パラメータの設定を解除します。

      次の例では、ALTER SYSTEM文を使用して、RESOURCE_MANAGER_PLAN初期化パラメータの設定を解除しています。

      ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = '';
      
    • 初期化パラメータ・ファイルで、RESOURCE_MANAGER_PLAN初期化パラメータの設定を解除し、CDBを再起動します。

      次の例では、初期化パラメータ・ファイルのRESOURCE_MANAGER_PLAN初期化パラメータの設定を解除しています。

      RESOURCE_MANAGER_PLAN = 
      

      CDBを停止および再起動するには、「CDBインスタンスの停止」および「データベースの起動」を参照してください。

46.6 PDBリソース・プランの作成

PDBリソース・プランは、非CDBのリソース・プランを作成する場合と同じ方法で作成します。プランを作成するには、DBMS_RESOURCE_MANAGER PL/SQLパッケージ内のプロシージャを使用します。

CDBリソース・プランにより、システム・リソースの一部がPDBに割り当てられます。PDBリソース・プランにより、PDB内でのこの部分の割当て方法が決定します。

PDBリソース・プランの作成に必要なステップの概要は、次のとおりです。

  1. SQL*Plusで、現在のコンテナがPDBであることを確認します。
  2. CREATE_PENDING_AREAプロシージャを使用して、ペンディング・エリアを作成します。
  3. CREATE_CONSUMER_GROUPプロシージャを使用して、コンシューマ・グループを作成、変更または削除します。
  4. SET_CONSUMER_GROUP_MAPPINGプロシージャを使用して、セッションをコンシューマ・グループにマップします。
  5. CREATE_PLANプロシージャを使用して、PDBリソース・プランを作成します。
  6. CREATE_PLAN_DIRECTIVEプロシージャを使用して、PDBリソース・プラン・ディレクティブを作成します。
  7. VALIDATE_PENDING_AREAプロシージャを使用して、ペンディング・エリアを検証します。
  8. SUBMIT_PENDING_AREAプロシージャを使用して、ペンディング・エリアを発行します。

現在のコンテナがPDBであり、これらのステップを完了する場合に必要な権限がユーザーに付与されていることを確認してください。これらのステップを完了するための詳細は、「複雑なリソース・プランの作成」を参照してください。

CREATE_SIMPLE_PLANプロシージャを使用して、多くの状況に対応できる単純なリソース・プランを作成することもできます。「単純なリソース・プランの作成」を参照してください。

注意:

PDBリソース・プランに適用されるいくつかの制限事項があります。詳細は、「PDBリソース・プラン」を参照してください。

46.7 PDBリソース・プランの有効化と無効化

PDBリソース・プランは、単一PDB内のワークロードを管理します。PDBリソース・プランを有効または無効にできます。

46.7.1 PDBリソース・プランの有効化

現在のコンテナがPDBの場合、ALTER SYSTEM文を使用してRESOURCE_MANAGER_PLAN初期化パラメータをプランに設定し、PDBリソース・プランを有効化します。

このパラメータがプランに指定されていない場合、PDBリソース・プランはPDBに対して有効化されません。

PDBリソース・プランを有効化する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。

PDBリソース・プランを有効化するには:

  1. SQL*Plusで、現在のコンテナがPDBであることを確認します。

    「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。

  2. ALTER SYSTEM文を使用して、RESOURCE_MANAGER_PLAN初期化パラメータをPDBリソース・プランに設定します。

PDBリソース・プランの変更は、Oracle Schedulerを使用してスケジュールすることもできます。

例46-5 PDBリソース・プランの有効化

次の例では、PDBリソース・プランをsalespdb_planに設定しています。

ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'salespdb_plan';

46.7.2 PDBリソース・プランの無効化

PDBのRESOURCE_MANAGER_PLAN初期化パラメータの設定を解除して、PDBリソース・プランを無効化します。

PDBリソース・プランを無効化する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。

PDBリソース・プランを無効化するには:

  1. SQL*Plusで、現在のコンテナがPDBであることを確認します。

    「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。

  2. ALTER SYSTEM文を使用して、PDBのRESOURCE_MANAGER_PLAN初期化パラメータの設定を解除します。

例46-6 PDBリソース・プランの無効化

次の例では、PDBリソース・プランを無効化しています。

ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = '';

46.8 CDBのプランおよびディレクティブのメンテナンス

この項では、CDBリソース・プラン、PDBのデフォルト・ディレクティブ、自動タスク・ディレクティブおよびPDBリソース・プランをメンテナンスする手順について説明します。メンテナンス・タスクは、DBMS_RESOURCE_MANAGER PL/SQLパッケージを使用して実行します。

46.8.1 CDBリソース・プランの管理

CDBリソース・プランの管理には、プランの更新、PDBのプラン・ディレクティブの作成、更新または削除、デフォルト・ディレクティブの更新などのタスクが含まれます。

46.8.1.1 CDBリソース・プランの更新

UPDATE_CDB_PLANプロシージャを使用すると、CDBリソース・プランのコメントを変更して更新できます。

CDBリソース・プランを更新する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。

CDBリソース・プランを更新するには:

  1. SQL*Plusで、現在のコンテナがルートであることを確認します。

    「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。

  2. ペンディング・エリアを作成します。

    exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
    
  3. UPDATE_CDB_PLANプロシージャを実行して、new_commentパラメータに新しいコメントを入力します。

    たとえば、次のプロシージャを実行すると、newcdb_plan CDBリソース・プランのコメントが変更されます。

    BEGIN
      DBMS_RESOURCE_MANAGER.UPDATE_CDB_PLAN(
        plan        => 'newcdb_plan',
        new_comment => 'CDB plan for PDBs in newcdb');
    END;
    /
    
  4. ペンディング・エリアを検証します。

    exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
    
  5. ペンディング・エリアを発行します。

    exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
    
46.8.1.2 PDBのCDBリソース・プラン・ディレクティブの管理

PDBのCDBリソース・プラン・ディレクティブを作成、更新および削除できます。

46.8.1.2.1 PDBの新規CDBリソース・プラン・ディレクティブの作成

CDBにPDBを作成する場合、CREATE_CDB_PLAN_DIRECTIVEプロシージャを使用して、PDBにCDBリソース・プラン・ディレクティブを作成できます。このディレクティブにより、新しいPDBへのリソースの割当て方法が指定されます。

PDBのCDBリソース・プラン・ディレクティブを作成する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。

PDBに新しいCDBリソース・プラン・ディレクティブを作成するには:

  1. SQL*Plusで、現在のコンテナがルートであることを確認します。

    「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。

  2. ペンディング・エリアを作成します。

    exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
    
  3. CREATE_CDB_PLAN_DIRECTIVEプロシージャを実行して、新しいPDBに適切な値を指定します。

    たとえば、次のプロシージャを実行すると、newcdb_plan CDBリソース・プランのoperpdbという名前のPDBにリソースが割り当てられます。

    BEGIN
      DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN_DIRECTIVE(
        plan                  => 'newcdb_plan', 
        pluggable_database    => 'operpdb', 
        shares                => 1, 
        utilization_limit     => 20,
        parallel_server_limit => 30);
    END;
    /
    
  4. ペンディング・エリアを検証します。

    exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
    
  5. ペンディング・エリアを発行します。

    exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
    
46.8.1.2.2 PDBのCDBリソース・プラン・ディレクティブの更新

UPDATE_CDB_PLAN_DIRECTIVEプロシージャを使用して、PDBのCDBリソース・プラン・ディレクティブを更新できます。このディレクティブにより、PDBへのリソースの割当て方法が指定されます。

PDBのCDBリソース・プラン・ディレクティブを更新する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。

PDBのCDBリソース・プラン・ディレクティブを更新するには:

  1. SQL*Plusで、現在のコンテナがルートであることを確認します。

    「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。

  2. ペンディング・エリアを作成します。

    exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
    
  3. UPDATE_CDB_PLAN_DIRECTIVEプロシージャを実行して、PDBに新しいリソース割当て値を指定します。

    たとえば、次のプロシージャを実行すると、newcdb_plan CDBリソース・プランのoperpdbという名前のPDBに対するリソース割当てが更新されます。

    BEGIN
      DBMS_RESOURCE_MANAGER.UPDATE_CDB_PLAN_DIRECTIVE(
        plan                      => 'newcdb_plan', 
        pluggable_database        => 'operpdb', 
        new_shares                => 1, 
        new_utilization_limit     => 10,
        new_parallel_server_limit => 20);
    END;
    /
    
  4. ペンディング・エリアを検証します。

    exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
    
  5. ペンディング・エリアを発行します。

    exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
    
46.8.1.2.3 PDBのCDBリソース・プラン・ディレクティブの削除

DELETE_CDB_PLAN_DIRECTIVEプロシージャを使用して、PDBのCDBリソース・プラン・ディレクティブを削除できます。

PDBを切断または削除すると、PDBのディレクティブが削除される場合があります。ただし、ディレクティブは保持でき、将来PDBがCDBに接続された場合に、既存のディレクティブがPDBに適用されます。

PDBのCDBリソース・プラン・ディレクティブを削除する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。

PDBのCDBリソース・プラン・ディレクティブを削除するには:

  1. SQL*Plusで、現在のコンテナがルートであることを確認します。

    「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。

  2. ペンディング・エリアを作成します。

    exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
    
  3. DELETE_CDB_PLAN_DIRECTIVEプロシージャを実行して、CDBリソース・プランおよびPDBを指定します。

    たとえば、次のプロシージャを実行すると、newcdb_plan CDBリソース・プランのoperpdbという名前のPDBに対するディレクティブが削除されます。

    BEGIN
      DBMS_RESOURCE_MANAGER.DELETE_CDB_PLAN_DIRECTIVE(
        plan               => 'newcdb_plan', 
        pluggable_database => 'operpdb');
    END;
    /
    
  4. ペンディング・エリアを検証します。

    exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
    
  5. ペンディング・エリアを発行します。

    exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
    
46.8.1.3 PDBパフォーマンス・プロファイルのCDBリソース・プラン・ディレクティブの管理

PDBパフォーマンス・プロファイルのCDBリソース・プラン・ディレクティブを作成、更新および削除できます。

46.8.1.3.1 PDBパフォーマンス・プロファイルの新規CDBリソース・プラン・ディレクティブの作成

新規PDBパフォーマンス・プロファイルのCDBリソース・プラン・ディレクティブは、CREATE_CDB_PROFILE_DIRECTIVEプロシージャを使用して作成できます。ディレクティブにより、新しいプロファイルを使用するすべてのPDBのリソースの割当て方法を指定します。

PDBパフォーマンス・プロファイルのCDBリソース・プラン・ディレクティブを作成する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。

PDBパフォーマンス・プロファイルに新しいCDBリソース・プラン・ディレクティブを作成するには:

  1. SQL*Plusで、現在のコンテナがルートであることを確認します。

    「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。

  2. ペンディング・エリアを作成します。

    exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
    
  3. CREATE_CDB_PROFILE_DIRECTIVEプロシージャを実行して、新しいPDBパフォーマンス・プロファイルに適切な値を指定します。

    たとえば、次のプロシージャを実行すると、newcdb_plan CDBリソース・プランのcopperという名前のPDBパフォーマンス・プロファイルにリソースが割り当てられます。

    BEGIN
      DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE(
        plan                  => 'newcdb_plan', 
        profile               => 'copper', 
        shares                => 1, 
        utilization_limit     => 20,
        parallel_server_limit => 30);
    END;
    /
    
  4. ペンディング・エリアを検証します。

    exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
    
  5. ペンディング・エリアを発行します。

    exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
    

注意:

PDBで新規プロファイルを使用するには、PDBのDB_PERFORMANCE_PROFILE初期化パラメータがプロファイル名に設定されている必要があります。
46.8.1.3.2 PDBパフォーマンス・プロファイルのCDBリソース・プラン・ディレクティブの更新

UPDATE_CDB_PROFILE_DIRECTIVEプロシージャを使用して、PDBパフォーマンス・プロファイルのCDBリソース・プラン・ディレクティブを更新できます。このディレクティブにより、PDBパフォーマンス・プロファイルを使用するPDBへのリソースの割当て方法が指定されます。

PDBパフォーマンス・プロファイルのCDBリソース・プラン・ディレクティブを更新する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。

PDBパフォーマンス・プロファイルのCDBリソース・プラン・ディレクティブを更新するには:

  1. SQL*Plusで、現在のコンテナがルートであることを確認します。

    「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。

  2. ペンディング・エリアを作成します。

    exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
    
  3. UPDATE_CDB_PROFILE_DIRECTIVEプロシージャを実行して、PDBパフォーマンス・プロファイルに新しいリソース割当て値を指定します。

    たとえば、次のプロシージャを実行すると、newcdb_plan CDBリソース・プランのcopperという名前のPDBパフォーマンス・プロファイルに対するリソース割当てが更新されます。

    BEGIN
      DBMS_RESOURCE_MANAGER.UPDATE_CDB_PROFILE_DIRECTIVE(
        plan                      => 'newcdb_plan', 
        profile                   => 'copper', 
        new_shares                => 1, 
        new_utilization_limit     => 10,
        new_parallel_server_limit => 20);
    END;
    /
    
  4. ペンディング・エリアを検証します。

    exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
    
  5. ペンディング・エリアを発行します。

    exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
    
46.8.1.3.3 PDBパフォーマンス・プロファイルのCDBリソース・プラン・ディレクティブの削除

DELETE_CDB_PROFILE_DIRECTIVEプロシージャを使用して、PDBパフォーマンス・プロファイルのCDBリソース・プラン・ディレクティブを削除できます。

プロファイルを使用しているPDBがない場合は、PDBパフォーマンス・プロファイルのディレクティブを削除できます。

PDBパフォーマンス・プロファイルのCDBリソース・プラン・ディレクティブを削除する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。

PDBパフォーマンス・プロファイルのCDBリソース・プラン・ディレクティブを削除するには:

  1. SQL*Plusで、現在のコンテナがルートであることを確認します。

    「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。

  2. ペンディング・エリアを作成します。

    exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
    
  3. DELETE_CDB_PROFILE_DIRECTIVEプロシージャを実行して、CDBリソース・プランおよびPDBパフォーマンス・プロファイルを指定します。

    たとえば、次のプロシージャを実行すると、newcdb_plan CDBリソース・プランのoperpdbという名前のPDBに対するディレクティブが削除されます。

    BEGIN
      DBMS_RESOURCE_MANAGER.DELETE_CDB_PLAN_DIRECTIVE(
        plan    => 'newcdb_plan', 
        profile => 'operpdb');
    END;
    /
    
  4. ペンディング・エリアを検証します。

    exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
    
  5. ペンディング・エリアを発行します。

    exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
    
46.8.1.4 CDBリソース・プランにおけるPDBのデフォルト・ディレクティブの更新

UPDATE_CDB_DEFAULT_DIRECTIVEプロシージャを使用して、CDBリソース・プランでPDBのデフォルト・ディレクティブを更新できます。デフォルト・ディレクティブは、特定のディレクティブが定義されていないPDBに適用されます。

詳細は、「PDBのデフォルト・ディレクティブ」を参照してください。

CDBリソース・プランでPDBのデフォルト・ディレクティブを更新する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。

CDBリソース・プランでPDBのデフォルトディレクティブを更新するには:

  1. SQL*Plusで、現在のコンテナがルートであることを確認します。

    「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。

  2. ペンディング・エリアを作成します。

    exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
    
  3. UPDATE_CDB_DEFAULT_DIRECTIVEプロシージャを実行して、適切なデフォルトのリソース割当て値を指定します。

    たとえば、次のプロシージャを実行すると、newcdb_plan CDBリソース・プランにおけるPDBのデフォルト・ディレクティブが更新されます。

    BEGIN
      DBMS_RESOURCE_MANAGER.UPDATE_CDB_DEFAULT_DIRECTIVE(
        plan                  => 'newcdb_plan', 
        new_shares            => 2, 
        new_utilization_limit => 40);
    END;
    /
    
  4. ペンディング・エリアを検証します。

    exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
    
  5. ペンディング・エリアを発行します。

    exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
    
46.8.1.5 CDBリソース・プランにおけるメンテナンス・タスクのデフォルト・ディレクティブの更新

UPDATE_CDB_AUTOTASK_DIRECTIVEプロシージャを使用して、CDBリソース・プランで自動タスク・ディレクティブを更新できます。自動タスク・ディレクティブは、ルート・メンテナンス・ウィンドウで実行される自動メンテナンス・タスクに適用されます。

CDBリソース・プランでメンテナンス・タスクのデフォルト・ディレクティブを更新する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。

CDBリソース・プランでメンテナンス・タスクの自動タスク・ディレクティブを更新するには:

  1. SQL*Plusで、現在のコンテナがルートであることを確認します。

    「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。

  2. ペンディング・エリアを作成します。

    exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
    
  3. UPDATE_CDB_AUTOTASK_DIRECTIVEプロシージャを実行して、適切な自動タスクのリソース割当て値を指定します。

    たとえば、次のプロシージャを実行すると、newcdb_plan CDBリソース・プランにおけるメンテナンス・タスクの自動タスク・ディレクティブが更新されます。

    BEGIN
      DBMS_RESOURCE_MANAGER.UPDATE_CDB_AUTOTASK_DIRECTIVE(
        plan                  => 'newcdb_plan', 
        new_shares            => 2, 
        new_utilization_limit => 60);
    END;
    /
    
  4. ペンディング・エリアを検証します。

    exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
    
  5. ペンディング・エリアを発行します。

    exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
    
46.8.1.6 CDBリソース・プランの削除

DELETE_CDB_PLANプロシージャを使用して、CDBリソース・プランを削除できます。

リソース・プランを無効にする必要があります。CDBリソース・プランが必要なくなった場合は、このプランを削除できます。異なるCDBリソース・プランを有効化したり、CDBに対してリソース・マネージャを無効化できます。

CDBリソース・プランを削除する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。

CDBリソース・プランを削除するには:

  1. SQL*Plusで、現在のコンテナがルートであることを確認します。

    「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。

  2. ペンディング・エリアを作成します。

    exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
    
  3. DELETE_CDB_PLANプロシージャを実行して、CDBリソース・プランを指定します。

    たとえば、次のプロシージャを実行すると、newcdb_plan CDBリソース・プランが削除されます。

    BEGIN
      DBMS_RESOURCE_MANAGER.DELETE_CDB_PLAN(
        plan => 'newcdb_plan');
    END;
    /
    
  4. ペンディング・エリアを検証します。

    exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
    
  5. ペンディング・エリアを発行します。

    exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
    

46.8.2 PDBリソース・プランの変更

DBMS_RESOURCE_MANAGERパッケージを使用すると、非CDBのリソース・プランを変更する場合と同じ方法でPDBリソース・プランを変更できます。

PDBリソース・プランを変更する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。

PDBリソース・プランを変更するには:

  1. SQL*Plusで、現在のコンテナがPDBであることを確認します。

    「SQL*Plusを使用したCDB内のコンテナへのアクセスについて」を参照してください。

  2. ペンディング・エリアを作成します。

    exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
    
  3. 次のタスクのうち1つ以上を完了して、PDBリソース・プランを変更します。

    • UPDATE_CONSUMER_GROUPプロシージャを使用して、コンシューマ・グループを更新します。

    • DELETE_CONSUMER_GROUPプロシージャを使用して、コンシューマ・グループを削除します。

    • UPDATE_PLANプロシージャを使用して、リソース・プランを更新します。

    • DELETE_PLANプロシージャを使用して、リソース・プランを削除します。

    • UPDATE_PLAN_DIRECTIVEプロシージャを使用して、リソース・プラン・ディレクティブを更新します。

    • DELETE_PLAN_DIRECTIVEプロシージャを使用して、リソース・プラン・ディレクティブを削除します。

    これらのタスクを完了する手順は、「コンシューマ・グループ、プランおよびディレクティブのメンテナンス」を参照してください。

  4. ペンディング・エリアを検証します。

    exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
    
  5. ペンディング・エリアを発行します。

    exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
    

46.9 CDBのプランおよびディレクティブに関する情報の表示

CDBリソース・プラン、CDBリソース・プラン・ディレクティブおよびCDBにおける事前定義のリソース・プランに関する情報を表示できます。

46.9.1 CDBリソース・プランの表示

DBA_CDB_RSRC_PLANSビューを使用して、CDBに定義されているすべてのCDBリソース・プランを表示する例を示します。

ルートで次の問合せを実行します。

COLUMN PLAN FORMAT A30
COLUMN STATUS FORMAT A10
COLUMN COMMENTS FORMAT A35
 
SELECT PLAN, STATUS, COMMENTS FROM DBA_CDB_RSRC_PLANS ORDER BY PLAN;

出力は次のようになります。

PLAN                           STATUS     COMMENTS
------------------------------ ---------- -----------------------------------
DEFAULT_CDB_PLAN                          Default CDB plan
DEFAULT_MAINTENANCE_PLAN                  Default CDB maintenance plan
NEWCDB_PLAN                               CDB plan for PDBs in newcdb
ORA$INTERNAL_CDB_PLAN                     Internal CDB plan

DEFAULT_CDB_PLANは、Oracle Databaseに付属のデフォルトCDBプランです。使用要件に応じて、このデフォルト・プランを使用できます。

注意:

ペンディング・エリア内のプランのステータスはPENDINGです。ペンディング・エリア内のプランは編集中です。ペンディング・エリアに存在しないすべてのプランのステータスは、NULLです。

46.9.2 CDBリソース・プラン・ディレクティブの表示

DBA_CDB_RSRC_PLAN_DIRECTIVESビューを使用して、CDB内のすべてのCDBリソース・プランで定義されたすべてのディレクティブを表示する例を示します。

ルートで次の問合せを実行します。

COLUMN PLAN HEADING 'Plan' FORMAT A11
COLUMN PLUGGABLE_DATABASE HEADING 'Pluggable|Database' FORMAT A13
COLUMN SHARES HEADING 'Shares' FORMAT 999
COLUMN UTILIZATION_LIMIT HEADING 'Utilization|Limit' FORMAT 999
COLUMN PARALLEL_SERVER_LIMIT HEADING 'Parallel|Server|Limit' FORMAT 999
 
SELECT PLAN, 
       PLUGGABLE_DATABASE, 
       SHARES, 
       UTILIZATION_LIMIT,
       PARALLEL_SERVER_LIMIT
  FROM DBA_CDB_RSRC_PLAN_DIRECTIVES
  ORDER BY PLAN;

出力は次のようになります。

                                             Parallel  
            Pluggable            Utilization   Server 
Plan        Database      Shares       Limit    Limit  
----------- ------------- ------ ----------- -------- 
DEFAULT_CDB ORA$DEFAULT_P      1         100      100
_PLAN       DB_DIRECTIVE
DEFAULT_CDB ORA$AUTOTASK                  90      100
_PLAN
DEFAULT_MAI ORA$AUTOTASK                  90      100
NTENANCE_PL
AN
DEFAULT_MAI ORA$DEFAULT_P      1         100      100
NTENANCE_PL DB_DIRECTIVE
AN
NEWCDB_PLAN HRPDB              1          70       70 
NEWCDB_PLAN SALESPDB           3         100      100  
NEWCDB_PLAN ORA$DEFAULT_P      1          50       50   
            DB_DIRECTIVE
NEWCDB_PLAN ORA$AUTOTASK       1          75       75    
NEWCDB_PLAN SERVICESPDB        3         100      100   

DEFAULT_CDB_PLANは、Oracle Databaseに付属のデフォルトCDBプランです。使用要件に応じて、このデフォルト・プランを使用できます。

この出力は、「CDBリソース・プランの作成: 使用例」で作成されて「CDBリソース・プランの管理」で変更された、newcdb_planのディレクティブを示しています。

注意:

ORA$DEFAULT_PDB_DIRECTIVEは、PDBのデフォルト・ディレクティブです。「PDBのデフォルト・ディレクティブ」を参照してください。

46.10 Oracle Database Resource Managerで管理されるPDBの監視

一連の動的パフォーマンス・ビューにより、Oracle Database Resource ManagerによるPDBの設定の結果を監視できます。

次の動的パフォーマンス・ビューは、PDBのOracle Database Resource Managerの設定結果の監視に役立ちます。

  • V$RSRCPDBMETRIC

  • V$RSRCPDBMETRIC_HISTORY

V$RSRCPDBMETRICビューは、CPU使用率、パラレル実行、生成されるI/O、メモリー使用率など、PDBのリソース消費に関する現在の統計を提供します。

また、履歴統計は、自動ワークロード・リポジトリ(AWR)スナップショットを含むDBA_HIST_RSRC_PDB_METRICビューを通じて使用できます。

V$RSRCPDBMETRIC_HISTORYビューの列は、V$RSRCPDBMETRICビューの列と同じです。これらのビューの唯一の違いは、V$RSRCPDBMETRICビューには過去1分間のみのメトリックが含まれているのに対して、V$RSRCPDBMETRIC_HISTORYビューには過去60分間のメトリックが含まれていることです。

注意:

STATISTICS_LEVEL初期化パラメータがALLまたはTYPICALに設定されている場合、V$RSRCPDBMETRICおよびV$RSRCPDBMETRIC_HISTORYビューでは、リソース・マネージャによって現在管理されていないリソースの統計が記録されます。

関連項目:

46.10.1 PDBのCPU使用率の監視

V$RSRCPDBMETRICビューを使用すると、セッション数の観点または過去1分間の使用状況の観点から、CPUメトリックをミリ秒単位で追跡できます。各PDBのリアルタイムなメトリックが提供されるため、ワークロードの実行中に、CPUリソースの使用状況を継続的に監視する場合に非常に便利です。

PDBのCPU使用率は、PDBのCDBのアクティブなCDBリソース・プランで管理されます。このビューを使用して、PDBの最大CPU使用率と平均CPU使用率を、使用したCPU時間、CPU待ち時間、CPUを消費しているセッションの平均数、CPU割当てを待機しているセッションの数など他のPDB設定と比較できます。たとえば、PDBが使用したCPUリソースの量およびPDBがリソース割当てを待機した期間を表示できます。または、各PDBから実行されているセッションの数とアクティブなセッションの総数とを対比できます。

PDBのCPU使用率の観点からのCPU消費量の追跡

CPU使用率でCPUの消費量を追跡するには、CPU_UTILIZATION_LIMIT列およびAVG_CPU_UTILIZATION列を使用します。AVG_CPU_UTILIZATIONには、PDBによるサーバーのCPUの平均使用率が表示されます。CPU_UTILIZATION_LIMITは、PDBが使用できるサーバーのCPUの最大割合を表します。この制限は、UTILIZATION_LIMITディレクティブ属性を使用して設定されます。

次の問合せでは、コンテナID (CON_ID)および各PDBの名前を表示することでこの情報が表示されます。

COLUMN PDB_NAME FORMAT A10

SELECT r.CON_ID, p.PDB_NAME, r.CPU_UTILIZATION_LIMIT, r.AVG_CPU_UTILIZATION 
   FROM V$RSRCPDBMETRIC r, CDB_PDBS p
   WHERE r.CON_ID = p.CON_ID;

PDBのCPU消費量および制限量の追跡

各PDBのCPUの消費量および制限量をミリ秒単位で追跡するには、CPU_CONSUMED_TIME列およびCPU_TIME_WAIT列を使用します。NUM_CPUS列は、リソース・マネージャが管理しているCPUの数を表します。

次の問合せでは、コンテナID (CON_ID)および各PDBの名前を表示することでこの情報が表示されます。

COLUMN PDB_NAME FORMAT A10

SELECT r.CON_ID, p.PDB_NAME, r.CPU_CONSUMED_TIME, r.CPU_WAIT_TIME, r.NUM_CPUS 
   FROM V$RSRCPDBMETRIC r, CDB_PDBS p
   WHERE r.CON_ID = p.CON_ID;

PDBのセッション数の観点からのCPU消費量および制限量の追跡

CPUの消費量および制限量をセッションの数で追跡するには、RUNNING_SESSIONS_LIMITAVG_RUNNING_SESSIONSAVG_WAITING_SESSIONSの各列を使用します。RUNNING_SESSIONS_LIMITには、特定のPDBからいつでも実行できるセッションの最大数が表示されます。この制限は、PDBに設定したUTILIZATION_LIMITディレクティブ属性によって定義されます。AVG_RUNNING_SESSIONS列にはCPUを消費しているセッションの平均数が表示され、AVG_WAITING_SESSIONS列にはCPUを待機しているセッションの平均数が表示されます。

次の問合せでは、コンテナID (CON_ID)および各PDBの名前を表示することでこの情報が表示されます。

COLUMN PDB_NAME FORMAT A10

SELECT r.CON_ID, p.PDB_NAME, r.RUNNING_SESSIONS_LIMIT, r.AVG_RUNNING_SESSIONS, r.AVG_WAITING_SESSIONS 
   FROM V$RSRCPDBMETRIC r, CDB_PDBS p
   WHERE r.CON_ID = p.CON_ID;

46.10.2 PDBのパラレル実行の監視

V$RSRCPDBMETRICビューを使用すると、PDBに対するパラレル・ステートメントとパラレル・サーバーの使用を追跡できます。

PDBのパラレル実行サーバーは、PDBのCDBのアクティブなCDBリソース・プランで管理されます。パラレル・ステートメントおよびPDBのパラレル・サーバーの使用を追跡するには、AVG_ACTIVE_PARALLEL_STMTSAVG_QUEUED_PARALLEL_STMTSAVG_ACTIVE_PARALLEL_SERVERSAVG_QUEUED_PARALLEL_SERVERSおよびPARALLEL_SERVERS_LIMIT列を使用します。

AVG_ACTIVE_PARALLEL_STMTSAVG_ACTIVE_PARALLEL_SERVERSには、実行されているパラレル・ステートメントの平均数、およびパラレル・ステートメントによって使用されるパラレル・サーバーの平均数が表示されます。AVG_QUEUED_PARALLEL_STMTSAVG_QUEUED_PARALLEL_SERVERSには、キュー内のパラレル・ステートメントの平均数、およびキュー内のパラレル・ステートメントによって要求されたパラレル・サーバーの平均数が表示されます。PARALLEL_SERVERS_LIMITには、PDBで使用できるパラレル・サーバーの数が表示されます。

次の問合せでは、コンテナID (CON_ID)および各PDBの名前を表示することでこの情報が表示されます。

COLUMN PDB_NAME FORMAT A10

SELECT r.CON_ID, p.PDB_NAME, r.AVG_ACTIVE_PARALLEL_STMTS, r.AVG_QUEUED_PARALLEL_STMTS, 
   r.AVG_ACTIVE_PARALLEL_SERVERS, r.AVG_QUEUED_PARALLEL_SERVERS, r.PARALLEL_SERVERS_LIMIT
   FROM V$RSRCPDBMETRIC r, CDB_PDBS p
   WHERE r.CON_ID = p.CON_ID;

46.10.3 PDBによって生成されるI/Oの監視

V$RSRCPDBMETRICビューを使用すると、PDBで生成されるI/Oの量を追跡できます。

I/Oは、PDBでMAX_IOPS初期化パラメータまたはMAX_MBPS初期化パラメータを設定することで、PDBに対して制限されます。このビューを使用して、毎秒の操作数および毎秒のMB数に関してPDBで生成されるI/Oを比較します。

PDBで毎秒生成されるI/O操作数の追跡

前の1分間にPDBで毎秒生成されるI/O操作数を追跡するには、IOPS列を使用します。

次の問合せでは、コンテナID (CON_ID)および各PDBの名前を表示することでこの情報が表示されます。

COLUMN PDB_NAME FORMAT A10

SELECT r.CON_ID, p.PDB_NAME, r.IOPS 
   FROM V$RSRCPDBMETRIC r, CDB_PDBS p
   WHERE r.CON_ID = p.CON_ID;

PDBでのI/O操作で毎秒生成されるデータ量(MB単位)の追跡

前の1分間にPDBで毎秒生成されるI/OのMB数を追跡するには、IOMBPS列を使用します。

次の問合せでは、コンテナID (CON_ID)および各PDBの名前を表示することでこの情報が表示されます。

COLUMN PDB_NAME FORMAT A10

SELECT r.CON_ID, p.PDB_NAME, r.IOMBPS 
   FROM V$RSRCPDBMETRIC r, CDB_PDBS p
   WHERE r.CON_ID = p.CON_ID;

46.10.4 PDBのメモリー使用状況の監視

V$RSRCPDBMETRICビューを使用すると、PDBで使用されるメモリー量を追跡できます。

このビューを使用して、SGA、PGA、バッファ・キャッシュおよびPDBが現在使用している共有プール・メモリーの量を追跡します。

特定のPDBの現在のメモリー使用量(バイト単位)を追跡するには、SGA_BYTESPGA_BYTESBUFFER_CACHE_BYTESおよびSHARED_POOL_BYTES列を使用します。

次の問合せでは、コンテナID (CON_ID)および各PDBの名前を表示することでこの情報が表示されます。

COLUMN PDB_NAME FORMAT A10

SELECT r.CON_ID, p.PDB_NAME, r.SGA_BYTES, r.PGA_BYTES, r.BUFFER_CACHE_BYTES, r.SHARED_POOL_BYTES
   FROM V$RSRCPDBMETRIC r, CDB_PDBS p
   WHERE r.CON_ID = p.CON_ID;