10 プロキシPDBとしてのPDBの作成
リモートCDBのPDBを参照することで、PDBをプロキシPDBとして作成できます。
- プロキシPDBの作成について
プロキシPDBは、リモートCDB内のPDBへのアクセスを提供します。シンボリック・リンクに似ています。 - プロキシPDBの作成
別のCDB内のPDBを参照することで、プロキシPDBを作成します。
親トピック: PDBおよびアプリケーション・コンテナの作成および削除
プロキシPDBの作成について
プロキシPDBは、リモートCDB内のPDBへのアクセスを提供します。シンボリック・リンクに似ています。
CREATE PLUGGABLE DATABASE
文では、異なるCDB内のPDB (参照先PDBと呼ばれています)を参照することでプロキシPDBを作成します。リモートPDBのローカル・コンテンツが必要な場合は、プロキシPDBを使用できます。また、異なる複数のCDB内のアプリケーション・コンテナに同じアプリケーションがある場合、それらのアプリケーション・ルートはプロキシPDBを使用して同期を維持できます。
この手法を使用するには、プロキシPDBを含めるCDBでCREATE PLUGGABLE DATABASE
文を実行します。次を含める必要があります。
-
プロキシPDBを作成していることを指定するための
AS PROXY
句。 -
プロキシPDBが参照しているPDBを指定する
FROM
句。 -
FROM
句にある参照先PDBの現在の場所へのデータベース・リンク。データベース・リンクはプロキシPDBを含むCDBのルートに作成する必要があり、データベース・リンクはリモートCDBのルートまたはリモート参照先PDBに接続します。
次の図は、この手法でリモートCDB内のPDBを参照するプロキシPDBがどのように作成されるかを示しています。
アプリケーション・コンテナにプロキシPDBを作成できます。そのためには、参照先PDBがアプリケーション・ルートまたは別のCDBのアプリケーション・コンテナ内のアプリケーションPDBである必要があります。データベース・リンクはプロキシPDBを含むアプリケーション・コンテナのルートに作成する必要があり、データベース・リンクはリモート・アプリケーション・コンテナのルートまたはリモート参照先アプリケーションPDBに接続します。
次の図は、この手法でアプリケーション・コンテナ内のリモート参照先PDBに基づいてプロキシPDBをアプリケーション・コンテナに作成する方法を示しています。
プロキシPDBを作成する前に、「表5-3」のプロキシPDBの作成に適用される質問に対処します。この表では、様々な要因に基づいて指定する必要があるCREATE PLUGGABLE DATABASE
の句について説明しています。
- プロキシPDBおよびSQL文
原則として、プロキシPDBが現在のコンテナである場合は、プロキシPDBでの実行のために発行されたSQL文は参照先PDB内で実行されます。 - プロキシPDBおよびデータベース・リンク
データベース・リンクはプロキシPDBの作成時に必要です。 - プロキシPDBおよび認証
プロキシPDBのセッションでは、パスワード認証のみがサポートされます。 - プロキシPDBおよびリスナー
PDBのホスト名とポート番号の設定は、プロキシPDBがPDBを参照する場合にのみ重要です。
親トピック: プロキシPDBとしてのPDBの作成
プロキシPDBおよびSQL文
原則として、プロキシPDBが現在のコンテナである場合は、プロキシPDBでの実行のために発行されたSQL文は参照先PDB内で実行されます。
リモート実行の結果はプロキシPDBに返されます。たとえば、データ定義言語(DDL)文、データ操作言語(DML)文およびプロキシPDBで実行される問合せは、実行のために参照先PDBに送信され、結果はプロキシPDBに返されます。
ルールに対する例外が1つあります。プロキシPDBが現在のコンテナの場合は、ALTER PLUGGABLE DATABASE
文およびALTER DATABASE
文を実行すると、これらの文はプロキシPDBにのみ影響を与えます。これらは実行のために参照先PDBに送信されません。同様に、現在のコンテナが、プロキシPDBが属するルートである場合、ALTER PLUGGABLE DATABASE
文はプロキシPDBにのみ影響します。たとえば、CDBルート、アプリケーション・ルートまたはプロキシPDBで実行されたALTER PLUGGABLE DATABASE
文は、プロキシPDBをオープンまたはクローズできますが、この文は参照先PDBをオープンまたはクローズしません。
親トピック: プロキシPDBの作成について
プロキシPDBおよびデータベース・リンク
データベース・リンクはプロキシPDBの作成時に必要です。
プロキシPDBの作成後は、作成時に指定したデータベース・リンクがそのプロキシPDBで使用されなくなります。かわりに、プロキシPDBは参照先PDBと直接通信します。
この直接通信は、参照先PDBを含むCDBのリスナーのポート番号とホスト名を必要とします。プロキシPDBの作成時に、プロキシPDBはデフォルトで次の値を使用します。
-
リスナー・ポート番号: 1521
参照先PDBのリスナーがデフォルト・ポート番号を使用しない場合は、
PORT
句を使用して、リスナーのポート番号を指定する必要があります。プロキシPDBの作成時にポート番号を指定するか、プロキシPDBを変更してポート番号を変更できます。 -
リスナー・ホスト名: 参照先PDBを含むCDBのホスト名
参照先PDBのリスナーがデフォルト・ホスト名を使用しない場合は、
HOST
句を使用して、リスナーのホスト名を指定する必要があります。プロキシPDBの作成時にホスト名を指定するか、プロキシPDBを変更してホスト名を変更できます。
関連トピック
親トピック: プロキシPDBの作成について
プロキシPDBおよびリスナー
PDBのホスト名とポート番号の設定は、プロキシPDBがPDBを参照する場合にのみ重要です。
- HOST句
CREATE PLUGGABLE DATABASE
文のHOST
句では、作成されるPDBのリスナーのホスト名を指定します。 - PORT句
CREATE PLUGGABLE DATABASE
文のPORT
句では、作成されるPDBのリスナーのポート番号を指定します。
親トピック: プロキシPDBの作成について
HOST句
CREATE PLUGGABLE DATABASE
文のHOST
句では、作成されるPDBのリスナーのホスト名を指定します。
デフォルトでは、リスナーのホスト名は作成されるPDBのホスト名と同じです。次の両方の条件を満たす場合にHOST
句を指定します。
-
リスナーのホスト名は、作成されるPDBのホスト名と異なります。
-
作成されるPDBを参照するプロキシPDBの作成を計画します。
プロキシPDBは、データベース・リンクを使用して、その参照先PDBとの通信を確立します。通信が確立した後、プロキシPDBでは、データベース・リンクを使用しないで参照先PDBと直接通信します。プロキシPDBが正常に機能するためにはリスナーのホスト名が正しい必要があります。
例10-1 HOST句
HOST='myhost.example.com'
関連項目:
-
HOST
句についてさらに学習するには、Oracle Database SQL言語リファレンスを参照してください。
親トピック: プロキシPDBおよびリスナー
PORT句
CREATE PLUGGABLE DATABASE
文のPORT
句では、作成されるPDBのリスナーのポート番号を指定します。
デフォルトでは、作成されるPDBのポート番号は1521です。次の両方の条件を満たす場合にPORT
句を指定します。
-
リスナーのポート番号は1521ではありません。
-
作成されるPDBを参照するプロキシPDBの作成を計画します。
プロキシPDBは、データベース・リンクを使用して、その参照先PDBとの通信を確立します。通信が確立した後、プロキシPDBでは、データベース・リンクを使用しないで参照先PDBと直接通信します。プロキシPDBが正常に機能するためにはリスナーのポート番号が正しい必要があります。
親トピック: プロキシPDBおよびリスナー
プロキシPDBの作成
別のCDBのPDBを参照することで、プロキシPDBを作成します。
前提条件
次の前提条件を満たしている必要があります。
-
「PDB作成の一般的な前提条件」で説明している前提条件を満たします。
-
現行ユーザーは、プロキシPDBが作成されているCDBのルートで
CREATE PLUGGABLE DATABASE
システム権限を持っている必要があります。 -
参照先PDBを含むCDBはローカルUNDOモードである必要があります。
-
参照先PDBを含むCDBは
ARCHIVELOG
モードである必要があります。 -
プロキシPDBの作成時には、参照先PDBが読取り/書込みオープン・モードである必要があります。参照先PDBのオープン・モードは、プロキシPDBの作成後に変更できます。
-
データベース・リンクは、プロキシPDBが作成されているCDBのルートから参照先PDBの場所への接続を有効にする必要があります。データベース・リンクは、リモートCDBのルート、またはリモートPDBのいずれかに接続できます。
-
データベース・リンクが、参照先PDBを含むリモートCDBのルートに接続する場合、データベース・リンクが接続するユーザーは、共通ユーザーである必要があります。
-
データベース・リンクが参照先PDBに接続する場合、データベース・リンクが参照先PDBで接続するユーザーは、
CREATE PLUGGABLE DATABASE
システム権限を持っている必要があります。 -
プロキシPDBをアプリケーション・コンテナに作成している場合は、次の前提条件が適用されます。
-
参照先PDBがアプリケーション・ルートまたはアプリケーション・コンテナ内のアプリケーションPDBである必要があります。
-
プロキシPDBのアプリケーション・コンテナのアプリケーション名およびバージョンは、参照先PDBのアプリケーション名およびバージョンと一致する必要があります。
-
プロキシPDBがアプリケーション・コンテナに作成されている場合、データベース・リンクは、プロキシPDBが作成されているアプリケーション・コンテナのルートから参照先PDBの場所への接続を有効にする必要があります。データベース・リンクは、リモート・アプリケーション・コンテナのルート、またはリモート・アプリケーションPDBのいずれかに接続できます。
-
データベース・リンクが、参照先PDBを含むリモート・アプリケーション・コンテナのルートに接続する場合、データベース・リンクが接続するユーザーは、アプリケーション共通ユーザーである必要があります。
-
データベース・リンクが参照先アプリケーションPDBに接続する場合、データベース・リンクが参照先アプリケーションPDBで接続するユーザーは、
CREATE PLUGGABLE DATABASE
システム権限を持っている必要があります。
ノート:
アプリケーション・コンテナ内の参照先PDBに基づいてプロキシPDBをCDBルートに作成できます。 -
プロキシPDBを作成するには:
-
SQL*Plusで、現在のコンテナがCDBルートまたはプロキシPDBが作成されているアプリケーション・ルートであることを確認します。
現在のコンテナがCDBルートの場合、プロキシPDBはCDBに作成されます。現在のコンテナがアプリケーション・ルートの場合、プロキシPDBはアプリケーション・コンテナ内に作成されます。
-
CREATE PLUGGABLE DATABASE
文を実行します。AS PROXY
句を指定し、FROM
句でデータベース・リンク名を指定して参照先PDBを指定します。他の句が必要な場合はそれらを指定します。作成したプロキシPDBはマウント・モードになり、そのステータスは
NEW
です。PDBのオープン・モードは、V$PDBS
ビューのOPEN_MODE
列を問い合せることで確認できます。CDB_PDBS
またはDBA_PDBS
ビューのSTATUS
列を問い合せて、PDBのステータスを表示できます。PDBの新しいデフォルト・サービスが作成されます。サービスの名前はPDBと同じになり、このサービスを使用してPDBにアクセスできます。このサービスにアクセスするクライアントには、Oracle Net Serviceが正しく構成されている必要があります。
-
新しいPDBを読取り/書込みモードでオープンします。
Oracle Databaseで新しいPDBをCDBに統合するには、PDBを読取り/書込みモードでオープンする必要があります。PDBを読取り専用モードでオープンしようとすると、エラーが返されます。PDBが読取り/書込みモードでオープンされると、そのステータスは
NORMAL
になります。 -
PDBをバックアップします。
PDBは、バックアップしないとリカバリできません。
ノート:
プロキシPDBの作成時にエラーが返された場合は、作成されたPDBがUNUSABLE
状態である可能性があります。CDB_PDBS
またはDBA_PDBS
ビューを問い合せてPDBの状態を確認したり、アラート・ログをチェックしてPDBの作成エラーについてさらに学習できます。使用不可のPDBは削除することのみができ、使用不可のPDBと同じ名前のPDBを作成できるようにするには、その前に削除する必要があります。
例10-3 リモート・プロキシPDBの作成
この例で、新しいPDBが属するルートはCREATE PLUGGABLE DATABASE
文の実行時の現在のコンテナによって決まります。
-
現在のコンテナがCDBルートの場合、新しいPDBはCDBルートに作成されます。
-
現在のコンテナがアプリケーション・コンテナ内のアプリケーション・ルートの場合、新しいPDBはアプリケーション・ルート内にアプリケーションPDBとして作成されます。
この例では、様々な要因に基づいてpdb1
という名前のリモート・プロキシPDBを作成します。この例では、次の要因を想定しています。
-
参照先PDBのCDBへのデータベース・リンク名は
pdb1_link
です。 -
FILE_NAME_CONVERT
句およびCREATE_FILE_DEST
句は必要ありません。Oracle Managed Filesが有効であるか、または
PDB_FILE_NAME_CONVERT
初期化パラメータが設定されています。SYSTEM
ファイルおよびSYSAUX
ファイルは、Oracle Managed Files構成または初期化パラメータ設定に基づいて新しい場所にコピーされます。
前述の要因に基づき、次の文によってpdb1
プロキシPDBが作成されます。
CREATE PLUGGABLE DATABASE pdb1 AS PROXY FROM pdb1@pdb1_link;
関連項目:
- 「CDBのUNDOモードについて」
-
PDBのバックアップの詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
親トピック: プロキシPDBとしてのPDBの作成