Oracle Resource Manager (リソース・マネージャ)の管理にPL/SQLパッケージ・プロシージャを使用して、マルチテナント・コンテナ・データベース(CDB)内のプラガブル・データベース(PDB)にリソースを割り当てることができます。
PDBにリソース・マネージャを使用する前に、次の要件を満たします。
CDBを構成および管理する方法について理解しています。詳細は、「マルチテナント環境の管理」を参照してください。
Oracle Resource Managerを使用して非CDBのリソースを割り当てる方法について理解しています。詳細は、「Oracle Database Resource Managerを使用したリソースの管理」を参照してください。
注意:
リソース・マネージャは、Oracle Enterprise Manager Cloud Control (Cloud Control)のグラフィカル・ユーザー・インタフェースで管理することもできます。Cloud Controlを使用したCDBでのリソース・マネージャの管理の詳細は、「Cloud ControlでのPDBに対するOracle Resource Managerの使用」およびCloud Controlのオンライン・ヘルプを参照してください。
CDBリソース・プランおよびPDBリソース・プランを作成して、CDBとPDBのリソースを管理できます。
非CDBでは、リソース・マネージャを使用して、システム・リソースおよびデータベース・リソースについて競合する複数のワークロードを管理できます。ただし、CDBでは、システム・リソースおよびCDBリソースについて競合する複数のPDB内に、複数のワークロードが存在する場合があります。
CDBでは、リソース・マネージャにより、次の2つの基本レベルでリソースを管理できます。
CDBレベル - リソース・マネージャを使用して、システム・リソースおよびCDBリソースについて競合する複数のPDBのワークロードを管理できます。PDBへのリソースの割当て方法を指定し、特定のPDBのリソース使用率を制限できます。
PDBレベル - リソース・マネージャを使用して、各PDB内のワークロードを管理できます。
リソース・マネージャにより、次の2つの手順でリソースを割り当てます。
システム・リソースの一部を各PDBに割り当てます。
特定のPDBでは、手順1で取得したシステム・リソースの一部をPDBに接続された各セッションに割り当てます。
注意:
ルートのすべてのアクティビティは、リソース・マネージャによって自動的に管理されます。
リソース・マネージャは、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で使用できるパラレル実行サーバーの数を制限します。
1つのPDBに接続された様々なセッションのリソース使用率を制限します。
PDBのリソース使用率を監視します。
CDBでは、PDBの優先度のレベルが異なる場合があります。CDBリソース・プランを作成し、これらの優先度に従ってPDBごとにリソースを分配できます。
CDBリソース・プランにより、そのリソース・プラン・ディレクティブ(ディレクティブ)のセットに従って、リソースがそのPDBに割り当てられます。
CDBリソース・プランとそのディレクティブは親子関係にあります。各ディレクティブは1つのPDBを参照し、現在アクティブなプランの2つのディレクティブで同じPDBを参照することはできません。
次のリソースのPDBへの割当ては、ディレクティブによって制御されます。
CPU
パラレル実行サーバー
ディレクティブにより、PDBごとに指定する共有値に基づいてPDBへのリソースの割当てを制御できます。PDBの共有値が高いほど、そのPDBのリソースは増加します。たとえば、あるPDBに、もう1つのPDBに割り当てられた2倍のリソースを割り当てることを指定でき、このことを行うには、最初のPDBに2番目のPDBの2倍高い共有値を設定します。
PDBに使用率制限を指定することもできます。PDBの使用率制限により、PDBへのリソース割当てが制限されます。たとえば、これにより、CDBに使用可能なCPU全体の割合として、PDBで確保できるCPUの量を制御できます。
CDB内の各PDBに割り当てるリソースを正確に制御するために、共有と使用率制限の両方を一緒に使用できます。以降の項では、共有および使用率制限について詳細に説明します。
PDB間でリソースを割り当てるには、PDBごとに共有値を割り当てます。共有値が高いほど、PDBの保証されるリソースは多くなります。
DBMS_RESOURCE_MANAGER
パッケージのCREATE_CDB_PLAN_DIRECTIVE
プロシージャを使用して、PDBの共有値を指定します。このプロシージャのshares
パラメータにより、PDBの共有値が指定されます。
図44-1に、CDBリソース・プランに共有値が指定された3つのPDBの例を示します。
図44-1は、共有の合計数が7 (3+3+1)であることを示しています。PDB salespdb
およびservicespdb
は、それぞれリソースの3/7を保証されていますが、PDB hrpdb
はりソースの1/7を保証されています。ただし、リソースの競合がない場合には、いずれのPDBでも保証された量より多くのリソースを使用できます。
PDBをロードすると、割り当てられたすべてのシステム・リソースが使用されると想定し、表44-1で、図44-1のPDBへのリソース割当てについて共有値に基づいて説明します。
表44-1 サンプルPDBへのリソース割当て
リソース | リソース割当て |
---|---|
CPU |
PDB このリソースの詳細は、「CPU」を参照してください。 |
パラレル実行サーバー |
PDB このリソースの詳細は、「並列度制限」を参照してください。 |
使用率制限により、特定のPDBのシステム・リソース使用率が抑制されます。CPUの使用率制限およびパラレル実行サーバーを指定できます。
表44-2で、PDBの使用率制限およびPDBが使用率制限に達した場合に実行されるリソース・マネージャの処理について説明します。
表44-2 PDBの使用率制限
リソース | リソース使用率制限 | リソース・マネージャの処理 |
---|---|---|
CPU |
PDBに接続されたセッションで、PDBのCPU使用率制限に達しました。 CPUのこの使用率制限は、 |
PDBのCPU使用率が使用率制限を超えないように、リソース・マネージャによってPDBセッションが制限されます。 |
パラレル実行サーバー |
PDBでは、 たとえば、 |
PDBで使用されているパラレル実行サーバーの数が、 |
図44-2に、CDBリソース・プランに共有および使用率制限が指定された3つのPDBの例を示します。
図44-2は、utilization_limit
およびparallel_server_limit
が両方ともこれらのPDBについて100%に設定されていることから、PDB salespdb
およびservicespdb
に対する使用率制限がないことを示しています。ただし、PDB hrpdb
は、utilization_limit
およびparallel_server_limit
が両方とも70%に設定されていることから、適用可能なシステム・リソースの70%に制限されています。
PDBにディレクティブを明示的に定義しない場合、PDBではPDB用のデフォルト・ディレクティブが使用されます。
表44-3に、PDB用の初期デフォルト・ディレクティブの属性を示します。
表44-3 PDB用の初期デフォルト・ディレクティブ属性
ディレクティブ属性 | 値 |
---|---|
|
1 |
|
100 |
|
100 |
PDBがCDBに接続されており、ディレクティブが定義されていない場合、PDBではPDB用のデフォルト・ディレクティブが使用されます。
新しいPDBにディレクティブを新しく作成できます。また、DBMS_RESOURCE_MANAGER
パッケージのUPDATE_CDB_DEFAULT_DIRECTIVE
プロシージャを使用して、PDB用のデフォルト・ディレクティブ属性値を変更することもできます。
PDBがCDBから切断された場合、PDBのディレクティブは保持されます。同じPDBがCDBに再接続される場合、そのPDB用に定義されたディレクティブが手動で削除されていないと、PDBではこのディレクティブが使用されます。
図44-3に、CDBリソース・プランにおけるデフォルト・ディレクティブの例を示します。
図44-3は、デフォルトPDBディレクティブで、share
が1、utilization_limit
が50%およびparallel_server_limit
が50%となるよう指定されていることを示しています。CDBの一部であり、かつディレクティブが定義されていないすべてのPDBでは、デフォルトPDBディレクティブが使用されます。図44-3は、デフォルトPDBディレクティブを使用するPDB marketingpdb
およびtestingpdb
を示しています。したがって、marketingpdb
およびtestingpdb
は、それぞれ共有1および使用率制限50となります。
CDBリソース・プランにより、PDBごとに割り当てられるリソース量が決定されます。PDBリソース・プランでは、特定のPDBに割り当てられるリソースをそのPDB内のコンシューマ・グループにどのように割り当てるかを決定します。
PDBリソース・プランは、非CDBのリソース・プランと似ています。具体的には、PDBリソース・プランによって、PDB内のコンシューマ・グループ間にリソースが割り当てられます。PDBリソース・プランを使用して、「リソース・マネージャによって管理されるリソースのタイプ」で説明されているリソースを割り当てることができます。
1つ以上のPDBリソース・プランを作成する場合、PDBのCDBのCDBリソース・プランが特定の要件を満たしている必要があります。表44-4で、CDBリソース・プランの要件および要件が満たされない場合の結果について説明します。
CDBリソース・プランにディレクティブを作成する場合は、DBMS_RESOURCE_MANAGER
パッケージのCREATE_CDB_PLAN_DIRECTIVE
プロシージャを使用します。PDBリソース・プランにディレクティブを作成する場合は、同じパッケージ内のCREATE_PLAN_DIRECTIVE
プロシージャを使用します。1つ以上のPDBリソース・プランを作成するときにCDBリソース・プランがない場合、CDBでは、Oracle Databaseに付属のDEFAULT_CDB_PLAN
が使用されます。
注意:
表44-4で、PL/SQLプロシージャのパラメータ値について説明します。「CDBリソース・プラン要件」列で説明されているパラメータ値は、CREATE_CDB_PLAN_DIRECTIVE
プロシージャ用です。「要件が満たされない場合の結果」列で説明されているパラメータ値は、CREATE_PLAN_DIRECTIVE
プロシージャ用です。
表44-4 PDBリソース・プランのためのCDBリソース・プラン要件
リソース | CDBリソース・プラン要件 | 要件が満たされない場合の結果 |
---|---|---|
CPU |
次の要件のいずれかが満たされている必要があります。
これらの値は、特定のPDBのディレクティブまたはデフォルト・ディレクティブに設定できます。 |
PDBリソース・プランのCPU割当てポリシーは規定されません。 PDBリソース・プランの |
パラレル実行サーバー |
次の要件のいずれかが満たされている必要があります。
これらの値は、特定のPDBのディレクティブまたはデフォルト・ディレクティブに設定できます。 |
PDBリソース・プランのパラレル実行サーバー割当てポリシーは、規定されません。 PDBリソース・プランで |
図44-4に、CDBリソース・プランおよびPDBリソース・プランの例を示します。
図44-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
ステータスで記録されます。
CDBでは、バックグラウンド・タスクおよび管理タスクが、これらのタスクを最適に実行するリソース・マネージャのコンシューマ・グループにマップされます。
リソース・マネージャでは、次のルールを使用して、コンシューマ・グループにタスクをマップします。
タスクは、このタスクを開始するコンテナ内のコンシューマ・グループにマップされます。タスクがルートで開始される場合、このタスクはルート内のコンシューマ・グループにマップされます。タスクがPDBで開始される場合、このタスクはPDB内のコンシューマ・グループにマップされます。
タスクが内部クライアントによって内部APIを使用して開始される場合は、内部APIにより、タスクをマップするコンシューマ・グループが決定されます。
たとえば、バックアップ・タスクでは、内部的なOracle関数が使用されます。SYS
によってルートでバックアップ・タスクが開始されると、このバックアップ・タスクは、Oracle関数に基づいて、ルート内のSYS_GROUP
コンシューマ・グループにマップされます。
タスクが内部APIを使用せずに開始される場合、このタスクは、ユーザー定義マッピング・ルールに基づいてコンシューマ・グループにマップされます。
たとえば、SYS
がSYS_GROUP
コンシューマ・グループにマップされる場合、SYS
によって開始されるタスクは、SYS_GROUP
コンシューマ・グループにマップされます。
これらのルールに従うバックグラウンド・タスクおよび管理タスクは、次のとおりです。
バックアップおよびリカバリ
監査
レプリケーションおよびアドバンスト・キューイング
PDBの切断
メンテナンス・ウィンドウ
CDBでリソース・マネージャを使用する前に、前提条件を満たす必要があります。
リソース・マネージャとCDBを使用する前に、次の前提条件が満たされていることを確認してください。
CDBが存在し、PDBを含んでいる必要があります。
「CDBの作成および構成」および「SQL*PlusでのPDBの作成および削除」を参照してください。
DBMS_RESOURCE_MANAGER
パッケージを使用するタスクを完了するには、ユーザーにADMINISTER_RESOURCE_MANAGER
システム権限が必要です。
「リソース・マネージャの管理権限の概要」を参照してください。
DBMS_RESOURCE_MANAGER
パッケージを使用してCDBリソース・プランを作成し、プランに対してディレクティブを定義します。
CDBリソース・プランの一般的な作成手順は、次のとおりです。
CREATE_PENDING_AREA
プロシージャを使用して、ペンディング・エリアを作成します。CREATE_CDB_PLAN
プロシージャを使用して、CDBリソース・プランを作成します。CREATE_CDB_PLAN_DIRECTIVE
プロシージャを使用して、PDBにディレクティブを作成します。UPDATE_CDB_DEFAULT_DIRECTIVE
プロシージャを使用して、デフォルトPDBディレクティブを更新します。UPDATE_CDB_AUTOTASK_DIRECTIVE
プロシージャを使用して、デフォルトの自動タスク・ディレクティブを更新します。VALIDATE_PENDING_AREA
プロシージャを使用して、ペンディング・エリアを検証します。SUBMIT_PENDING_AREA
プロシージャを使用して、ペンディング・エリアを発行します。使用例で、CDBリソース・プランの作成に必要な各ステップを示します。
この使用例では、newcdb
という名前のCDBにCDBリソース・プランを作成する場合を想定しています。プランには、PDBごとにディレクティブを含めます。また、この使用例では、デフォルト・ディレクティブおよび自動タスク・ディレクティブも更新します。
ディレクティブは、DBMS_RESOURCE_MANAGER
パッケージ内の各種プロシージャを使用して定義されます。各ディレクティブの属性は、これらのプロシージャのパラメータを使用して定義されます。表44-5で、プランにおけるディレクティブのタイプについて説明します。
表44-5 CDBリソース・プランにおけるPDBディレクティブの属性
ディレクティブ属性 | 説明 |
---|---|
|
CPUリソースおよびパラレル実行サーバー・リソースのリソース割当ての共有。「PDBへのリソース割当ての共有」を参照してください。 |
|
CPUのリソース使用率制限。「PDBの使用率制限」を参照してください。 |
|
PDBで使用できるパラレル実行サーバーの最大割合。 PDBに対して |
表44-6で、CDBリソース・プランにより、表44-5で説明されているディレクティブ属性を使用してリソースがそのPDBにどのように割り当てられるかについて説明します。
表44-6 CDBリソース・プランにおけるPDBのサンプル・ディレクティブ
PDB | sharesディレクティブ | utilization_limitディレクティブ | parallel_server_limitディレクティブ |
---|---|---|---|
|
3 |
無制限 |
無制限 |
|
3 |
無制限 |
無制限 |
|
1 |
70 |
70 |
デフォルト |
1 |
50 |
50 |
自動タスク |
1 |
75 |
75 |
PDB salespdb
およびservicespdb
は、CDB内の他のPDBよりも重要です。したがって、これらに対しては、高い共有(3)、無制限のCPU使用率リソースおよび無制限のパラレル実行サーバー・リソースが確保されます。
デフォルト・ディレクティブは、特定のディレクティブが定義されていないPDBに適用されます。この使用例では、CDBに、デフォルト・ディレクティブを使用する複数のPDBが含まれていると想定しています。この使用例では、デフォルト・ディレクティブを更新します。
さらに、この使用例では、自動タスク・ディレクティブも更新します。自動タスク・ディレクティブは、ルート・メンテナンス・ウィンドウで実行される自動メンテナンス・タスクに適用されます。
次のタスクでは、DBMS_RESOURCE_MANAGER
パッケージを使用してCDBリソース・プランを作成し、この使用例のデフォルト・ディレクティブおよび自動タスク・ディレクティブを更新します。
次のCREATE_PENDING_AREA
プロシージャを使用して、ペンディング・エリアを作成します。
exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
次のCREATE_CDB_PLAN
プロシージャを使用して、newcdb_plan
という名前のCDBリソース・プランを作成します。
BEGIN DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN( plan => 'newcdb_plan', comment => 'CDB resource plan for newcdb'); END; /
CREATE_CDB_PLAN_DIRECTIVE
プロシージャを使用して、PDBにCDBリソース・プラン・ディレクティブを作成します。各ディレクティブにより、特定のPDBへのリソースの割当て方法が指定されます。
表44-6で、この使用例のPDB salespdb
、servicespdb
および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ディレクティブが使用されます。
PDBの現在のデフォルトCDBリソース・プラン・ディレクティブが要件を満たしていない場合、UPDATE_CDB_DEFAULT_DIRECTIVE
プロシージャを使用してディレクティブを更新します。
デフォルト・ディレクティブは、特定のディレクティブが定義されていないPDBに適用されます。詳細は、「PDBのデフォルト・ディレクティブ」を参照してください。
表44-6で、この使用例の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; /
現在の自動タスクCDBリソース・プラン・ディレクティブが要件を満たしていない場合、UPDATE_CDB_AUTOTASK_DIRECTIVE
プロシージャを使用してディレクティブを更新します。
自動タスク・ディレクティブは、ルート・メンテナンス・ウィンドウで実行される自動メンテナンス・タスクに適用されます。
表44-6で、この使用例の自動タスク・ディレクティブについて説明します。次のプロシージャを実行して、自動タスク・ディレクティブを更新します。
BEGIN DBMS_RESOURCE_MANAGER.UPDATE_CDB_AUTOTASK_DIRECTIVE( plan => 'newcdb_plan', new_shares => 1, new_utilization_limit => 75, new_parallel_server_limit => 75); END; /
次のVALIDATE_PENDING_AREA
プロシージャを使用して、ペンディング・エリアを検証します。
exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
次のSUBMIT_PENDING_AREA
プロシージャを使用して、ペンディング・エリアを発行します。
exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
CDBリソース・プランは、システムおよびCDBのリソースについて競合する複数のPDBのワークロードを管理します。CDBリソース・プランを有効または無効にできます。
ルートのRESOURCE_MANAGER_PLAN
初期化パラメータを設定して、CDBに対してリソース・マネージャを有効化します。
このパラメータにより、CDBの現行インスタンスに使用されるトップレベルのプランが指定されます。このパラメータでプランを指定しない場合、リソース・マネージャは有効になりません。
CDBリソース・プランを有効化する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。
CDBリソース・プランを有効化する手順は、次のとおりです。
SQL*Plusで、現在のコンテナがルートであることを確認します。
「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
次の操作のいずれかを実行します。
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を使用してスケジュールすることもできます。詳細は、「Oracle Database Resource Managerの有効化とプランの切替え」および「Oracle Schedulerの概要」を参照してください。
ルートのRESOURCE_MANAGER_PLAN
初期化パラメータの設定を解除して、CDBに対してリソース・マネージャを無効化します。
CDBリソース・プランを無効化すると、PDBリソース・プランの一部のディレクティブが無効化されます。PDBリソース・プランのためのCDBリソース・プラン要件の詳細は、「PDBリソース・プラン」を参照してください。
CDBリソース・プランを無効化する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。
CDBリソース・プランを無効化する手順は、次のとおりです。
SQL*Plusで、現在のコンテナがルートであることを確認します。
「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
次の操作のいずれかを実行します。
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インスタンスの停止」および「データベースの起動」を参照してください。
PDBリソース・プランは、非CDBのリソース・プランを作成する場合と同じ方法で作成します。プランを作成するには、DBMS_RESOURCE_MANAGER
PL/SQLパッケージ内のプロシージャを使用します。
CDBリソース・プランにより、システム・リソースの一部がPDBに割り当てられます。PDBリソース・プランにより、PDB内でのこの部分の割当て方法が決定します。
PDBリソース・プランの作成に必要な手順の概要は、次のとおりです。
CREATE_PENDING_AREA
プロシージャを使用して、ペンディング・エリアを作成します。CREATE_CONSUMER_GROUP
プロシージャを使用して、コンシューマ・グループを作成、変更または削除します。SET_CONSUMER_GROUP_MAPPING
プロシージャを使用して、セッションをコンシューマ・グループにマップします。CREATE_PLAN
プロシージャを使用して、PDBリソース・プランを作成します。CREATE_PLAN_DIRECTIVE
プロシージャを使用して、PDBリソース・プラン・ディレクティブを作成します。VALIDATE_PENDING_AREA
プロシージャを使用して、ペンディング・エリアを検証します。SUBMIT_PENDING_AREA
プロシージャを使用して、ペンディング・エリアを発行します。現在のコンテナがPDBであり、これらの手順を完了する場合に必要な権限がユーザーに付与されていることを確認してください。これらの手順を完了するための詳細は、「複雑なリソース・プランの作成」を参照してください。
CREATE_SIMPLE_PLAN
プロシージャを使用して、多くの状況に対応できる単純なリソース・プランを作成することもできます。「単純なリソース・プランの作成」を参照してください。
注意:
PDBリソース・プランに適用されるいくつかの制限事項があります。詳細は、「PDBリソース・プラン」を参照してください。
PDBリソース・プランは、単一PDB内のワークロードを管理します。PDBリソース・プランを有効または無効にできます。
現在のコンテナがPDBの場合、ALTER
SYSTEM
文を使用してRESOURCE_MANAGER_PLAN
初期化パラメータをプランに設定し、PDBリソース・プランを有効化します。
このパラメータがプランに指定されていない場合、PDBリソース・プランはPDBに対して有効化されません。
PDBリソース・プランを有効化する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。
PDBリソース・プランを有効化する手順は、次のとおりです。
SQL*Plusで、現在のコンテナがPDBであることを確認します。
「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
ALTER
SYSTEM
文を使用して、RESOURCE_MANAGER_PLAN
初期化パラメータをPDBリソース・プランに設定します。
PDBリソース・プランの変更は、Oracle Schedulerを使用してスケジュールすることもできます。詳細は、「Oracle Database Resource Managerの有効化とプランの切替え」および「Oracle Schedulerの概要」を参照してください。
例44-1 PDBリソース・プランの有効化
次の例では、PDBリソース・プランをsalespdb_plan
に設定しています。
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'salespdb_plan';
PDBのRESOURCE_MANAGER_PLAN
初期化パラメータの設定を解除して、PDBリソース・プランを無効化します。
PDBリソース・プランを無効化する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。
PDBリソース・プランを無効化する手順は、次のとおりです。
SQL*Plusで、現在のコンテナがPDBであることを確認します。
「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
ALTER
SYSTEM
文を使用して、PDBのRESOURCE_MANAGER_PLAN
初期化パラメータの設定を解除します。
例44-2 PDBリソース・プランの無効化
次の例では、PDBリソース・プランを無効化しています。
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = '';
この項では、CDBリソース・プラン、PDBのデフォルト・ディレクティブ、自動タスク・ディレクティブおよびPDBリソース・プランをメンテナンスする手順について説明します。メンテナンス・タスクは、DBMS_RESOURCE_MANAGER
PL/SQLパッケージを使用して実行します。
CDBリソース・プランの管理には、プランの更新、PDBのプラン・ディレクティブの作成、更新または削除、デフォルト・ディレクティブの更新などのタスクが含まれます。
UPDATE_CDB_PLAN
プロシージャを使用すると、CDBリソース・プランのコメントを変更して更新できます。
CDBリソース・プランを更新する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。
CDBリソース・プランを更新する手順は、次のとおりです。
SQL*Plusで、現在のコンテナがルートであることを確認します。
「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
ペンディング・エリアを作成します。
exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
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; /
ペンディング・エリアを検証します。
exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
ペンディング・エリアを発行します。
exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
関連項目:
CDBにPDBを作成する場合、CREATE_CDB_PLAN_DIRECTIVE
プロシージャを使用して、PDBにCDBリソース・プラン・ディレクティブを作成できます。このディレクティブにより、新しいPDBへのリソースの割当て方法が指定されます。
PDBのCDBリソース・プラン・ディレクティブを作成する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。
PDBに新しいCDBリソース・プラン・ディレクティブを作成する手順は、次のとおりです。
SQL*Plusで、現在のコンテナがルートであることを確認します。
「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
ペンディング・エリアを作成します。
exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
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; /
ペンディング・エリアを検証します。
exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
ペンディング・エリアを発行します。
exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
関連項目:
UPDATE_CDB_PLAN_DIRECTIVE
プロシージャを使用して、PDBのCDBリソース・プラン・ディレクティブを更新できます。このディレクティブにより、PDBへのリソースの割当て方法が指定されます。
PDBのCDBリソース・プラン・ディレクティブを更新する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。
PDBのCDBリソース・プラン・ディレクティブを更新する手順は、次のとおりです。
SQL*Plusで、現在のコンテナがルートであることを確認します。
「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
ペンディング・エリアを作成します。
exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
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; /
ペンディング・エリアを検証します。
exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
ペンディング・エリアを発行します。
exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
関連項目:
DELETE_CDB_PLAN_DIRECTIVE
プロシージャを使用して、PDBのCDBリソース・プラン・ディレクティブを削除できます。
PDBを切断または削除すると、PDBのディレクティブが削除される場合があります。ただし、ディレクティブは保持でき、将来PDBがCDBに接続された場合に、既存のディレクティブがPDBに適用されます。
PDBのCDBリソース・プラン・ディレクティブを削除する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。
PDBのCDBリソース・プラン・ディレクティブを削除する手順は、次のとおりです。
SQL*Plusで、現在のコンテナがルートであることを確認します。
「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
ペンディング・エリアを作成します。
exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
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; /
ペンディング・エリアを検証します。
exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
ペンディング・エリアを発行します。
exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
関連項目:
UPDATE_CDB_DEFAULT_DIRECTIVE
プロシージャを使用して、CDBリソース・プランでPDBのデフォルト・ディレクティブを更新できます。デフォルト・ディレクティブは、特定のディレクティブが定義されていないPDBに適用されます。
詳細は、「PDBのデフォルト・ディレクティブ」を参照してください。
CDBリソース・プランでPDBのデフォルト・ディレクティブを更新する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。
CDBリソース・プランでPDBのデフォルトディレクティブを更新する手順は、次のとおりです。
SQL*Plusで、現在のコンテナがルートであることを確認します。
「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
ペンディング・エリアを作成します。
exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
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; /
ペンディング・エリアを検証します。
exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
ペンディング・エリアを発行します。
exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
関連項目:
UPDATE_CDB_AUTOTASK_DIRECTIVE
プロシージャを使用して、CDBリソース・プランで自動タスク・ディレクティブを更新できます。自動タスク・ディレクティブは、ルート・メンテナンス・ウィンドウで実行される自動メンテナンス・タスクに適用されます。
CDBリソース・プランでメンテナンス・タスクのデフォルト・ディレクティブを更新する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。
CDBリソース・プランでメンテナンス・タスクの自動タスク・ディレクティブを更新する手順は、次のとおりです。
SQL*Plusで、現在のコンテナがルートであることを確認します。
「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
ペンディング・エリアを作成します。
exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
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; /
ペンディング・エリアを検証します。
exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
ペンディング・エリアを発行します。
exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
関連項目:
DELETE_CDB_PLAN
プロシージャを使用して、CDBリソース・プランを削除できます。
リソース・プランを無効にする必要があります。CDBリソース・プランが必要なくなった場合は、このプランを削除できます。異なるCDBリソース・プランを有効化したり、CDBに対してリソース・マネージャを無効化できます。
CDBリソース・プランを削除する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。
CDBリソース・プランを削除する手順は、次のとおりです。
SQL*Plusで、現在のコンテナがルートであることを確認します。
「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください。
ペンディング・エリアを作成します。
exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
DELETE_CDB_PLAN
プロシージャを実行して、CDBリソース・プランを指定します。
たとえば、次のプロシージャを実行すると、newcdb_plan
CDBリソース・プランが削除されます。
BEGIN DBMS_RESOURCE_MANAGER.DELETE_CDB_PLAN( plan => 'newcdb_plan'); END; /
ペンディング・エリアを検証します。
exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
ペンディング・エリアを発行します。
exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
DBMS_RESOURCE_MANAGER
パッケージを使用すると、非CDBのリソース・プランを変更する場合と同じ方法でPDBリソース・プランを変更できます。
PDBリソース・プランを変更する前に、「リソース・マネージャとCDBの使用の前提条件」で説明されている前提条件を満たします。
PDBリソース・プランを変更する手順は、次のとおりです。
SQL*Plusで、現在のコンテナがPDBであることを確認します。
「SQL*Plusを使用したCDB内のコンテナへのアクセスについて」を参照してください。
ペンディング・エリアを作成します。
exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
次のタスクのうち1つ以上を完了して、PDBリソース・プランを変更します。
UPDATE_CONSUMER_GROUP
プロシージャを使用して、コンシューマ・グループを更新します。
DELETE_CONSUMER_GROUP
プロシージャを使用して、コンシューマ・グループを削除します。
UPDATE_PLAN
プロシージャを使用して、リソース・プランを更新します。
DELETE_PLAN
プロシージャを使用して、リソース・プランを削除します。
UPDATE_PLAN_DIRECTIVE
プロシージャを使用して、リソース・プラン・ディレクティブを更新します。
DELETE_PLAN_DIRECTIVE
プロシージャを使用して、リソース・プラン・ディレクティブを削除します。
これらのタスクを完了する手順は、「コンシューマ・グループ、プランおよびディレクティブのメンテナンス」を参照してください。
ペンディング・エリアを検証します。
exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
ペンディング・エリアを発行します。
exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
関連項目:
CDBリソース・プラン、CDBリソース・プラン・ディレクティブおよび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
です。
関連項目:
DBA_CDB_RSRC_PLAN_DIRECTIVES
ビューを使用して、CDB内のすべてのCDBリソース・プランで定義されたすべてのディレクティブを表示する例を示します。
ルートで次の問合せを実行します。
COLUMN PLAN HEADING 'Plan' FORMAT A26 COLUMN PLUGGABLE_DATABASE HEADING 'Pluggable|Database' FORMAT A25 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_PLAN ORA$DEFAULT_PDB_DIRECTIVE 1 100 100 DEFAULT_CDB_PLAN ORA$AUTOTASK 90 100 DEFAULT_MAINTENANCE_PLAN ORA$DEFAULT_PDB_DIRECTIVE 1 100 100 DEFAULT_MAINTENANCE_PLAN ORA$AUTOTASK 90 100 NEWCDB_PLAN SALESPDB 3 NEWCDB_PLAN HRPDB 1 70 70 NEWCDB_PLAN ORA$DEFAULT_PDB_DIRECTIVE 2 40 50 NEWCDB_PLAN ORA$AUTOTASK 2 60 75 NEWCDB_PLAN SERVICESPDB 3 ORA$INTERNAL_CDB_PLAN ORA$DEFAULT_PDB_DIRECTIVE ORA$INTERNAL_CDB_PLAN ORA$AUTOTASK
DEFAULT_CDB_PLAN
は、Oracle Databaseに付属のデフォルトCDBプランです。使用要件に応じて、このデフォルト・プランを使用できます。
この出力は、「CDBリソース・プランの作成: 使用例」で作成されて「CDBリソース・プランの管理」で変更された、newcdb_plan
のディレクティブを示しています。
注意:
ORA$DEFAULT_PDB_DIRECTIVE
は、PDBのデフォルト・ディレクティブです。「PDBのデフォルト・ディレクティブ」を参照してください。
関連項目: