プライマリ・コンテンツに移動
Oracle® Database管理者ガイド
12cリリース1 (12.1)
B71301-11
目次へ移動
目次
索引へ移動
索引

前
次

46 CDBでのOracle Schedulerの使用

Oracle Schedulerを使用して、マルチテナント・コンテナ・データベース(CDB)でのジョブをスケジュールできます。

CDBでOracle Schedulerを使用する前に、次の要件を満たします。

46.1 CDBにおけるDBMS_SCHEDULERの起動

ほとんどのスケジューラは、2つのスケジューラ・グローバル属性を除き、非CDBで行っていたのとまったく同じ方法で作業を呼び出します。

ジョブ・スレーブを制限するには、job_queue_processes初期化パラメータの値を設定します。

その他のすべてのグローバル属性設定については、プラガブル・データベース(PDB)レベルのみにする必要があります。たとえば、EMAIL_SENDER属性をルート・データベースで設定する場合、その属性は、特定のPDBで実行されるジョブではなく、ルートで実行されるジョブに適用されます。新しいEMAIL_SENDERをPDBに選択する場合は、そのPDBでグローバル属性を設定する必要があります。

46.2 CDBにおけるジョブ・コーディネータおよびスレーブ・プロセス

CDB関連の主な変更は、ジョブ・コーディネータ・プロセスに対して行います。

非CDBでは、コーディネータは、実行準備が完了しているすべてのジョブを参照し、実行するそれらのジョブのサブセットを選択して、ジョブ・スレーブに割り当てます。また、ウィンドウをオープンおよびクローズし、これにより、データベースに対して有効なリソース・プランが変更されます。

このことは、次のことを除き、実質的に、CDB内で発生します。

  • ジョブがすべてのPDBから選択されます。

    コーディネータは、ルート・データベースおよびすべての子PDBを参照し、ジョブの優先度、スケジュールされたジョブの開始時間、およびジョブを実行するためのリソースの可用性に基づいてジョブを選択します。後の基準は、ジョブのコンシューマ・グループ、および現在有効なリソース・プランによって異なります。コーディネータでは、すべてのPDBに対して公平になるようには処理しません。PDBのジョブでスタベーションが発生しないようにする唯一の方法は、十分なリソースをPDBに割り当てることです。

  • ウィンドウがPDBおよびルート・データベース・レベルでオープンします。

    非CDBでは、特定の時点でオープンできるウィンドウは1つのみです。CDBには、2つのレベルのウィンドウがあります。PDBレベルでは、ウィンドウを使用して、そのPDBに属するコンシューマ・グループ間でリソースを割り当てるリソース・プランを設定できます。ルート・データベース・レベルでは、ウィンドウを使用して、様々な異なるPDBにリソースを割り当てることができます。したがって、どの時点においても、ルート・データベースで1つのウィンドウがオープンし、各PDBで1つのウィンドウがオープンしている可能性があります。

  • ジョブ・スレーブは、そのジョブ・スレーブが属する特定のPDBに切り替えます。

    ジョブ・スレーブは、実質的には非CDBでの場合と同じですが、スレーブがジョブを実行するとき、ジョブが属するPDBに切り替えた後で実行することが異なります。残りのコードは実質的に変更されていません。

46.3 DBMS_JOBの使用方法

PDBでは、DBMS_JOBを使用してジョブを作成でき、ジョブはこれまでと同様に機能します。ただし、DBMS_JOBはサポートされなくなり、使用することはお薦めしません。

スケジューラでは、実行するジョブを、以前のように単一データベースのみから選択するのではなく、それぞれの単一PDBからコーディネータで選択するようになりましたまた、スケジューラでは、スレーブはジョブを実行する前にPDBに切り替えますが、それ以外については、実質的にコードは変更されません。

46.4 PDBをクローズするプロセス

IMMEDIATEオプションを指定してPDBがクローズされた場合、コーディネータはPDBで実行されているジョブを停止し、そのジョブを再度実行するにはリカバリする必要があります。

Oracle RACデータベースでは、コーディネータは、ほとんどの場合、そのPDBがオープンしている別のインスタンスでジョブをリカバリできます。このため、最初のインスタンスのコーディネータは、PDBがまだオープンしている別のインスタンスを見つけることができた場合は、ジョブをそこに移動します。特定のケースでは、ジョブを別のインスタンスに移動できない場合があります。たとえば、対象のPDBがいずれの場所でもオープンしていない場合、ジョブは移動できません。また、別のインスタンスへのジョブの移動は、そのジョブにINSTANCE_ID属性セットが指定されている場合は実行できません。この場合、ジョブはそのインスタンスでPDBが再びオープンされるまで実行できません。

Oracle RAC以外のケースでは、ジョブの移動が問題となることはありません。終了したジョブは、PDBが再度オープンされた後にのみリカバリできます。

46.5 新規ビューおよび変更されたビュー

CDBでは、既存のビューに変更が加えられ、新しいビューが追加されました。

詳細は、『Oracle Databaseリファレンス』を参照してください。

  • V$ビューとGV$ビューに列(CON_ID)が追加され、この列により、特定のCDB_*行が表すデータを持つコンテナが識別されます。非CDBでは、この列はNULLです。

  • すべてのスケジューラDBA_*ビューに対応するCDB_*ビューがあります。

    PDBでは、これらのビューには対応するDBA_* viewを介して表示可能なオブジェクトのみが表示されますが、ルート・データベースではすべてのオブジェクトを表示できます。CDB_*ビューには、特定のDBA_*ビューで見つかったすべての列および列(CON_ID)が含まれています。非CDBでは、この列はNULLです。