5 CDBフリートの構成

CDBフリートは、1つの論理CDBとして管理できるCDBおよびホストされるPDBの集合です。

CDBフリートについて

リードCDBは、フリート内のCDBを監視および管理する中心的な場所です。

LEAD_CDBデータベース・プロパティをTRUEに設定することによって、フリート内の1つのCDBをリードCDBに指定します。LEAD_CDB_URIデータベース・プロパティを設定することによって、フリート内の他のCDBがリードCDBを指し示します。CDBフリートを構成した後、様々なCDBからのPDB情報はリードCDBと同期されます。CDB内のすべてのPDBがリードCDBに表示されるため、フリート内のPDBにはリードCDBから単一の論理CDBとしてアクセスできます。

次の図は、CDB1、CDB2およびCDB3で構成されたCDBフリートを示しています。リードCDBはCDB1です。CDB2に存在するCDB2_hrpdbがCDB1に表示されます。CDB3に存在するCDB3_hrpdbもCDB1に表示されます。

Oracle Real Application Cluster (Oracle RAC)、RMAN、Point-in-Timeリカバリ、フラッシュバック機能など、Oracle Databaseのすべての機能がフリート内のCDBでサポートされています。

次のコンテナ間機能を使用して、CDBフリート内のCDBおよびPDBにアクセスできます。

  • CDBビュー

  • GV$ビュー

  • CONTAINERS

  • コンテナ・マップ

アプリケーション・コンテナを使用して共通アプリケーション・スキーマが構成されている場合、これらのコンテナ間機能によって、フリートで管理されている異なるCDB内のPDB間で問合せおよびデータ集計が可能になります。

ノート:

  • 各PDB名は、CDBフリート内のすべてのCDBで一意である必要があります。

  • フリート内の任意のCDBにPDBを作成できますが、PDBが作成されたCDBでのみPDBを開くことができます。

CDBフリートの目的

CDBフリートによって、多数のCDBのスケーラビリティおよび集中管理のためのデータベース・インフラストラクチャが提供されます。

CDBフリートは次の状況で役立ちます。

  • プロビジョニングが必要なPDBの数がMAX_PDBS初期化パラメータ設定を超えているため、複数のCDBを作成する必要がある場合。

  • 最適に機能するには、1つの構成内の異なるPDBで異なるタイプのサーバーが必要な場合。

    たとえば、一部のPDBは大規模なトランザクションの負荷を処理する可能性があり、それ以外のPDBは主に監視用として使用される場合、これらのPDBに対して適切なサーバー・リソース(CPU、メモリー、I/Oレート、ストレージ・システムなど)が必要です。

  • 同じアプリケーションを使用する異なるPDBは、異なる場所に存在する必要があります。

CDB間の収集の監視と診断

リードCDBは、フリート内のCDB間で実行する監視アプリケーションおよびレポート・アプリケーションを実行できます。1つのコンテナに監視アプリケーションをインストールし、CDBビューおよびGV$ビューを使用して、CDBフリート全体の診断データを監視および処理できます。リードCDBで発行されたコンテナ間の問合せは、CDBフリート全体のすべてのPDBで自動的に実行できます。

Software as a Service (SaaS)アプリケーション

CDBフリート全体で異なるアプリケーション・コンテナの共通スキーマおよび共通アプリケーション・オブジェクトを使用すると、CONTAINERS句またはコンテナ・マップを使用して、CDBフリート内のすべてのPDB間で問合せを実行できます。CDB間で共通アプリケーション・スキーマを使用するために、アプリケーションをアプリケーション・ルートにインストールできます。

一般的なユースケースでは、マスター・アプリケーション・ルートをリードCDBにインストールします。アプリケーション・ルート・クローンはフリート内の他のすべてのCDBに存在します。アプリケーション・ルート・クローンのプロキシPDBはマスター・アプリケーション・ルートに存在します。

Database as a Service (DBaaS)アプリケーション

リードCDBは、CDBフリートにプロビジョニングされた全部または一部のPDBの使用状況メトリックとステータスを収集および表示できる中心的な場所として機能します。

マイクロサービス

マイクロサービスは、柔軟で独立してデプロイ可能なソフトウェア・システムを構築するために使用する、サービス指向アーキテクチャを特殊化したものです。マイクロサービスを使用すると、各チームは、カスタマイズされたスケーリングおよび可用性SLAを使用してCDBフリートをデプロイおよび管理できます。CDBでは、異なるストレージ・システムおよび構成設定を使用して、様々なタイプのワークロードに対応できます。リードCDBは、個々のマイクロサービスに関連付けられているCDBの集合を中央のDBAが管理するのに役立ちます。

関連項目:

CDBフリートへのリードCDBの設定

LEAD_CDBデータベース・プロパティをtrueに設定することによって、CDBフリートにリードCDBを設定します。

CDBフリートにリードCDBを設定するには:

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

  2. 必要に応じて、次の問合せを実行して、現在のLEAD_CDBデータベース・プロパティを確認します。

    SELECT PROPERTY_VALUE 
    FROM   DATABASE_PROPERTIES 
    WHERE  PROPERTY_NAME='LEAD_CDB';
  3. LEAD_CDBデータベース・プロパティをTRUEに設定します。

例5-1 リードCDBのデータベース・プロパティをtrueに設定

  1. CDBルートにアクセスします。

    ALTER SESSION SET CONTAINER = CDB$ROOT;
  2. 次のSQL文を実行します。

    ALTER DATABASE SET LEAD_CDB = TRUE;

CDBフリート・メンバーの指定

LEAD_CDB_URIデータベース・プロパティを、リードCDBを指し示すデータベース・リンクに設定することによって、フリート・メンバーを指定します。

前提条件

固定ユーザーのセマンティクスを含むデータベース・リンク(つまり、ユーザー名とパスワードがリンク定義に含まれる)を使用する必要があります。リンクでは、接続ユーザーのセマンティクス(ユーザー名とパスワードがリンク定義に含まれない場合)を使用できません。

CDBフリート・メンバーを指定するには:

  1. SQL*Plusで、現在のコンテナが、フリートメンバーとして指定するCDBのルートであることを確認します。

  2. 必要に応じて、次の問合せを実行して、現在のLEAD_CDB_URIデータベース・プロパティを確認します。

    SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME='LEAD_CDB_URI';
  3. データベース・リンクが存在しない場合は、フリート内のリートCDBのルートへのリンクを作成します。

    データベース・リンクは、固定共通ユーザー・データベース・リンクである必要があります。

  4. LEAD_CDB_URIデータベース・プロパティを、リードCDBへのデータベース・リンクの名前に設定します。

例5-2 CDBフリート・メンバーの指定

この例では、リードCDBがcdb1で、リードCDBへのデータベース・リンクが存在しないと想定しています。また、現在のCDBがlead_podサービス名を使用してcdb1に接続できるネットワークが構成されていると想定しています。

  1. フリート・メンバーとして指定するCDBのルートにアクセスします。

    ALTER SESSION SET CONTAINER = CDB$ROOT;
  2. cdb1へのデータベース・リンクを作成します。

    CREATE PUBLIC DATABASE LINK lead_link 
       CONNECT TO C##CF1 IDENTIFIED BY password
       USING 'lead_pod';
  3. LEAD_CDB_URIプロパティをデータベース・リンクの名前に設定します。

    ALTER DATABASE SET LEAD_CDB_URI = 'dblink:LEAD_LINK';

関連項目: