日本語PDF

8 PDBの再配置

PDBを異なるCDBまたはアプリケーション・コンテナに移動できます。

PDBの再配置について

再配置の際にソースPDBを読取り/書込みモードでオープンすると、すべての機能を利用できます。

PDBの再配置では、ソースPDBがアクティブ・セッションでオープンされている間に、ソースPDBデータファイルのオンライン・ブロックレベル・コピー、REDOおよびUNDOを実行します。ALTER PLUGGABLE DATABASE OPEN文のためにターゲットPDBがオンラインになると、Oracle Databaseではアクティブ・セッションを終了し、ソースPDBをクローズします。

次の図は、新しい単一インスタンスCDBへの共通PDB(つまり、アプリケーションPDBでない)の再配置を示しています。ソースPDBはCDBルートに接続され、ターゲットPDBはCDBルートに接続されています。CREATE PLUGGABLE DATABASE ... RELOCATE文によって、データ・ブロック、UNDOブロックおよびREDOブロックが新しい場所にコピーされることに注意してください。データベース・リンクが必要です。

図8-1 ルート・コンテナへのPDBの再配置

図8-1の説明が続きます
「図8-1 ルート・コンテナへのPDBの再配置」の説明

ターゲットPDBがアプリケーションPDBまたはアプリケーション・ルートである場合は、次のオプションがあります。

  • PDBはアプリケーション・コンテナ内にアプリケーションPDBとして再配置できます。ターゲットPDBは同じCDBまたは別のCDB内のいずれにも指定できます。

  • アプリケーションPDBは、あるアプリケーション・ルートから別のアプリケーション・ルートに再配置できます。ターゲットPDBは、別のCDB内にある必要があります。

  • 空のアプリケーション・ルートをあるCDBから別のCDBに再配置できますが、そのアプリケーション・ルートにはホストされるアプリケーションPDBが存在しない必要があります。

次に図は、この手法で新しいアプリケーションPDBをアプリケーション・コンテナに作成する方法を示しています。

図8-2 アプリケーション・コンテナへのPDBの再配置

図8-2の説明が続きます
「図8-2 アプリケーション・コンテナへのPDBの再配置」の説明

再配置されたPDBを初めてオープンすると、Oracle Databaseにより、ソースPDBのアクティブなセッションが排出され、再配置されたPDBサービスにクライアント接続がリダイレクトされます。再配置されたPDBをオープンすることで、元のソースPDBの停止が開始します。ソースおよび再配置されたPDBが同時にオープンすることはありません。

関連項目:

「PDB記憶域」

PDBの再配置の目的

この手法は、最小限の停止時間または停止時間なしでPDBを移動する最速の方法です。それ以外の手法では、ソースPDBを切断すると、PDBがターゲットCDBに接続されるまでPDBが停止している必要があります。

データ・センター間で、またはオンプレミス環境からクラウド環境にPDBを移動する場合は、すべてのデータを物理的に移動する必要があります。大規模なPDBでは、このプロセスは非常に時間がかかり、SLAの可用性コンポーネントに違反する可能性があります。PDBの再配置は、停止が不要になります。アプリケーションをオフラインにしたり、アプリケーションを変更またはネットワーク接続文字列を変更せずに、PDBを再配置できます。

PDB再配置の仕組み

操作では、PDBに関連付けられているファイルを新しい場所に移動し、PDBをターゲットCDBに追加して、そのPDBをオープンします。

PDBの再配置または停止時のサーバー・セッションの排出

計画メンテナンスの重要な要件は、アプリケーションの動作が中断されないようにする、PDBのセッションの排出またはフェイルオーバーです。

自動セッション・フェイルオーバー

データベースにおける一般的なセッション排出では、アクティブ・セッションは、タイマーに基づいて正常に終了できます。タイマーの期限が切れると、Oracle Databaseによってすべてのアクティブ・セッションが終了され、再配置されたPDBに再接続されます。

Oracle Database 19c以降では、計画メンテナンスの間に、データベースによって、セッションは排出期間内に排出する見込みがないと判断される場合があります。そのような場合は、データベースによってアプリケーション・コンティニュイティが起動され、セッションが自動的にフェイルオーバーされます。排出機能は、データベース・サービス・レベルおよびPDBレベルで呼び出されるすべてのメンテナンス操作(サービスの停止、サービスの再配置、PDBの再配置およびPDBの停止)に対して、デフォルトで有効になっています。

ノート:

アプリケーション・サーバーでプールのパージプロパティが使用されている場合は、排出準備ができていないセッションが中断されるため、このプロパティを無効にします。

セッションの排出のルール

拡張可能な一連のルールを使用してルールを満たすまで続行され、データベース・セッションを排出するタイミングが決まります。ルールには次のものが含まれています。

  • 標準アプリケーション・サーバーの有効性のテスト

  • カスタムSQLの有効性のテスト

  • リクエスト境界が使用され、リクエストがアクティブでないこと

  • リクエスト境界が使用され、現在のリクエストが終了していること

  • セッションにリカバリ可能なセッションの状態が1つ以上あり、フェイルオーバー時に再作成可能なこと

典型的なユースケースは、接続プールからの接続の借用時、プールへ接続の返却時、およびバッチ・コミット時に、接続をテストするアプリケーション・サーバーおよびプールされたアプリケーションです。セッションの排出時に、データベース接続テストが自動的に捕捉され、接続をクローズして、テストの失敗ステータスが返されます。失敗ステータスを受信した後、アプリケーション・レイヤーでは別の接続をリクエストできます。このように、アプリケーションが中断されることはありません。

Oracle RAC上のFANを使用したアプリケーション・コンティニュイティ

クライアントへの影響が最小限になる最適な構成にするために、Oracle RACデータベース上のFANを使用したアプリケーション・コンティニュイティを構成することを検討してください。Oracle Clusterwareでは、フリート・パッチ適用およびプロビジョニング機能により、PDBの再配置が自動化されます。Oracle RAC環境でのファイングレイン再配置の例は、PDBインスタンス間でのサービスの再配置です。Oracle RACとOracle Clusterwareでは、再配置中に、接続されているクライアントへの影響がさらに少なくなる上質な高可用性環境が提供されます。たとえば、共有記憶域では、データファイルをコピーする必要性が最小限に抑制または除去されます。アプリケーション・コンティニュイティのモードの1つである透過的アプリケーション・コンティニュイティは、Oracle Cloudでデフォルトで有効になっています。

ノート:

Oracle Clusterware環境では、1つのPDBを様々なるCDBの間で再配置する場合は、SRVCTLを使用して非データベース・サービスを作成する必要があります。

関連項目:

アプリケーション・コンティニュイティSRVCTLおよびフリート・パッチ適用とプロビジョニングについて学習するには、Oracle Clusterware管理およびデプロイメント・ガイドを参照してください

PDBの再配置のステージ

PDBの再配置の詳細は、リスナー・ネットワークによって異なります。

共通のリスナー・ネットワークでのPDBの再配置

ソースとターゲットの場所が共通のリスナー・ネットワークを共有している場合は、SQL*Netレイヤーがクライアント接続を暗黙的に転送するため、クライアント接続の転送は必要ありません。

AVAILABILITY NORMAL

リスナー・ネットワークが共通である場合は、CREATE PLUGGABLE DATABASE ... RELOCATEAVAILABILITY NORMAL句を指定します。このオプションはデフォルトです。次の状況は、AVAILABILITY NORMALの一般的なユースケースを示しています。

  • 共有リスナー

    PDBの古い場所と新しい場所で同じリスナーを使用する場合、再配置が完了すると新しい接続は自動的にPDBの新しい場所にルーティングされます。この状況は、同じホストのCDB間での典型的な再配置です。この場合、PDBは新しい場所でリスナーに再登録されます。その他の接続処理は必要ありません。

  • 相互登録リスナー

    PDBが異なるリスナーを使用して、local_listenerおよびremote_listenerパラメータの構成を使用してそれぞれのリスナーの相互登録を利用する場合、再配置はシームレスです。PDBのサービスの可用性および場所が両方のリスナーに自動的に登録されます。この状況は、おそらくロード・バランシングを目的とした、データ・センター内のホスト間での典型的な再配置です。

共有リスナーおよび相互登録リスナーの環境では、すべてのデータベースからのサービスが共通のリスナー・ネットワークに公開されます。そのため、再配置されたPDBのサービスは共通のリスナー・ネットワークに即時に認識されます。サービス・ネームスペースの競合を回避するために、PDBのサービスの定義は、共通のリスナー・ネットワーク内で一意である必要があります。

共通のリスナー・ネットワークでの再配置のステージ

  1. ユーザーがCREATE PLUGGABLE DATABASE ... RELOCATE AVAILABILITY NORMALを発行します。

    このステップでは、元の場所からターゲットの場所にソースPDBのホット・クローンを実行します。ソースPDBは、SCNマーカーの暗黙的な開始時点でのデータファイル、UNDOブロックおよびREDOブロックをターゲットPDBにコピーします。

    このステップが完了すると、このPDBに対して、トランザクション的に一貫性のある2つのコピー(ソース・コンテナ内のコピーとターゲット・コンテナ内のコピー)が存在することになります。操作中は、ソースPDBで処理が中断なく続行されます。ソースPDBに接続しているアプリケーションのユーザーまたはアプリケーションは、再配置が実行中であることを認識しません。

    既存のすべてのアプリケーション接続およびこのステップの実行中に作成された新しい接続は、引き続きソースPDBに接続します。

  2. ユーザーがALTER PLUGGABLE DATABASE OPENを発行します。

    次の処理がバックグラウンドで実行されます。

    1. ターゲットPDBによって終了SCNのマーカーが暗黙的に設定され、暗黙的な終了SCNのマーカーを満たすためにメディア・リカバリの完了に必要なREDOまたはUNDOが適用されます。

    2. ターゲットPDBでメディア・リカバリが発生した場合は、ソースPDBでの排出アクティブ・セッションが開始されます。

    3. PDBサービスがリスナーに登録され、ターゲットCDBで使用できるようになります。

    4. ソースPDBがクローズされます。

    5. ターゲットPDBが読取り/書込みモードでオープンします。

      このステップで、ターゲットCDBへのPDBの再配置が完了します。操作の終了時に、接続が、新しく再配置されたPDBを指すようになります。

      PDBが読取り/書込みモードでオープンされると、そのステータスはNORMALになります。PDBを読取り専用モードでオープンしようとすると、エラーが返されます。

関連項目:

独立したリスナー・ネットワークでのPDBの再配置

独立したリスナーが相互登録を使用しない場合、ターゲットCDBとソースCDBのリスナーには、相互の情報またはそれぞれの公開されたサービスの情報がありません。

AVAILABILITY MAX

CREATE PLUGGABLE DATABASE ... RELOCATEAVAILABILITY MAX句は、SQL*Netレイヤーに元のリスナーを再構成するように暗黙的に指示します。この状況は、データ・センター間でPDBを再配置する場合によくあります。この構成は、Oracle Internet Directory (OID)またはLDAPサーバーを更新する間、またはクライアント接続を変更する間に一時的に使用することが意図されています。

ローカル・リスナーがOracle RAC構成の単一クライアント・アクセス名(SCAN)リスナーにリダイレクトされる場合、このリスナーはクライアント接続リクエストを別のクラスタ・ノードにさらにリダイレクトすることが必要な場合があります。複数リダイレクトは、Oracle Netリスナーのデフォルトではサポートされません。SCANリスナーは任意のノードに接続リクエストをルーティングできるため、ALLOW_MULTIPLE_REDIRECTS_listener_nameパラメータをすべてのSCANリスナーのlistener_nameに設定して、それをクラスタ内のすべてのlistener.oraファイルで設定します。たとえば、SCANリスナーの名前がlistener_scan1listener_scan2およびlistener_scan3の場合は、すべての宛先ホストのlistener.oraファイルに次の設定が必要になります。

ALLOW_MULTIPLE_REDIRECTS_LISTENER_SCAN1=YES
ALLOW_MULTIPLE_REDIRECTS_LISTENER_SCAN2=YES
ALLOW_MULTIPLE_REDIRECTS_LISTENER_SCAN3=YES

注意:

ALLOW_MULTIPLE_REDIRECTS_listener_nameパラメータをノード・リスナーに設定すると、特定のネットワーク構成で無限のリダイレクト・ループが可能になるため、設定しないでください。

独立したリスナー・ネットワークでの再配置のステージ

  1. ユーザーがCREATE PLUGGABLE DATABASE ... RELOCATE AVAILABILITY MAXを発行します。

    このステップでは、元の場所からターゲットの場所にソースPDBのホット・クローンを実行します。ソースPDBは、SCNマーカーの暗黙的な開始時点でのデータファイル、UNDOブロックおよびREDOブロックをターゲットPDBにコピーします。

  2. ユーザーがALTER PLUGGABLE DATABASE OPENを発行します。

    次の処理がバックグラウンドで実行されます。

    1. ターゲットPDBによって終了SCNのマーカーが暗黙的に設定され、暗黙的な終了SCNのマーカーを満たすためにメディア・リカバリの完了に必要なREDOまたはUNDOが適用されます。

    2. ターゲットPDBでメディア・リカバリが発生した場合は、ソースPDBでの排出アクティブ・セッションが開始されます。

    3. ソースPDBのLISTENER_NETWORKS初期化パラメータが転送先アドレスで暗黙的に更新され、ソースCDBのリスナーPDBサービスが転送先アドレスで更新されます。

    4. メディア・リカバリが完了すると、ターゲットPDBが読取り専用モードでオープンします。

      このステージでは、ターゲットPDBの問合せのみが許可されます。問合せは、ソースPDBで実行された場合とまったく同様に動作します。ただし、DMLを試行する接続は完了しません。

    5. 読取り専用接続が新しいホスティング・リスナーに即時に転送され、新規の読取り/書込み接続が新しいホスティング・リスナーに転送され、そこでターゲットPDBが一貫性のある状態でオープンされるまでスピンします。

    6. ソースPDBによって、永続的な接続を終了するSHUTDOWN IMMEDIATEが実行されます。

    7. ターゲットPDBが読取り/書込みモードでオープンします。

      このステップで、ターゲットCDBへのPDBの再配置が完了します。操作の終了時に、接続が、新しく再配置されたPDBを指すようになります。

      PDBが読取り/書込みモードでオープンされると、そのステータスはNORMALになります。PDBを読取り専用モードでオープンしようとすると、エラーが返されます。

ノート:

更新が完了するまでツームストーンPDBと呼ばれるアーティファクトがソースCDBに残り、PDBのネームスペースを保護し、リスナー転送構成を維持します。ソースCDBのルートでは、ツームストーンPDBがRELOCATEDステータスでV$CONTAINERSに表示されます。ターゲットPDBに直接接続を指定するためにアプリケーション接続文字列を変更した場合は、ソースCDBからツームストーンPDBを削除できます。

関連項目:

PDBの再配置のユーザー・インタフェース

SQL、DBCAユーティリティまたはフリート・パッチ適用およびプロビジョニング・ユーティリティを使用すると、コマンドラインでPDBを再配置できます。

SQL文

SQL文の形式は、次のとおりです。

CREATE PLUGGABLE DATABASE ... FROM src_pdb_name@link2src ... RELOCATE AVAILABILITY [MAX | NORMAL]

FROM句で、ソースPDBの場所を特定します。src_pdb_nameには、ソースPDBの名前を指定します。link2srcには、ソースPDBの場所を示すデータベース・リンクを指定します。このデータベース・リンクは、ターゲットCDB (PDBの再配置先CDB)で作成しておく必要があります。リンクは、リモートCDBのルートまたはリモートPDBのどちらかに接続できます。

AVAILABILITY句では、データベースがクライアント接続を処理する方法を決定します。

DBCA

PDBは、サイレント・モードでDBCAを実行することで再配置できます。relocatePDBコマンドで、再配置を実行します。

表8-1 relocatePDBのパラメータ

パラメータ 説明

-remotePDBName remote_pdb_name

再配置するPDBの名前。

-remoteDBConnString remote_db_conn_string

リモートCDBへのネット・サービス接続。

-sysDBAUserName sysdbusername

ローカルCDBのSYSユーザーの名前。

-sysDBAPassword sysdbapassowrd

ローカルCDBのSYSユーザーのパスワード。

-remoteDBSYSDBAUserName sysdbusername

リモートCDBのSYSユーザーの名前。

-remoteDBSYSDBAPassword sysdbapassowrd

リモートCDBのSYSユーザーのパスワード。

-dbLinkUsername dblink_common_user_name

リモートCDBの共通ユーザーの名前。

-dbLinkUserPassword dblink_common_username_pwd

リモートCDBの共通ユーザーのパスワード。

-sourceDB dbname_pdb_toberelocated

ソースPDBの名前。

-pdbName pdbtoberecreated

再配置後のPDBの名前。

フリート・パッチ適用およびプロビジョニング・コントロール(RHPCTL)

Oracle Grid Infrastructureでは、フリート・パッチ適用およびプロビジョニングを使用して、あるCDBから別のCDBへのPDBの再配置を自動化できます。

関連項目:

CREATE PLUGGABLE DATABASEを使用したPDBの再配置

CREATE PLUGGABLE DATABASE ... RELOCATE文で、PDBの別のコンテナに移動します。

ターゲットCDB (宛先CDBとも呼ばれる)とは、PDBの再配置先となるCDBです。ターゲットPDBとは、再配置されるPDBです。CREATE PLUGGABLE DATABASE ... RELOCATE操作が完了すると、Oracle Databaseによって、PDBがソースCDBから宛先CDBに移動されます。

一般的な前提条件

「表5-3」のPDBの再配置に適用される質問に対処します。この表では、様々な要因に基づいて指定する必要があるCREATE PLUGGABLE DATABASEの句について説明しています。また、PDB作成の一般的な前提条件で説明している前提条件を満たします。

データベースのモードおよび状態の前提条件

次の前提条件を満たしている必要があります。

  • ソースCDBはローカルUNDOモードである必要があります。

  • ソースCDBでは、すべてのデータベース・インスタンスでPDBのサービスとオープン状態を保存する必要があります。管理者としてCDBルートにログインし、次の文を発行します。

    ALTER PLUGGABLE DATABASE ALL SAVE STATE INSTANCES=ALL;

    このステップにより、PDBの再配置操作の際、ターゲットCDBでPDBサービスが自動起動されるようになります。

  • ターゲットCDBがARCHIVELOGモードでない場合は、操作中にターゲットPDBを読取り専用でオープンする必要があります。この要件は、ターゲットCDBがARCHIVELOGモードの場合は適用されません。

ユーザー権限の前提条件

次の前提条件を満たしている必要があります。

  • ターゲットCDBでは、現行ユーザーはCDBのルートのCREATE PLUGGABLE DATABASEシステム権限を持っている必要があります。

  • 次の前提条件がデータベース・リンクに適用されます。

    • データベース・リンクで、宛先CDBからソースCDBへの接続が有効である必要があります。

    • ターゲットが標準PDBである場合、データベース・リンクはソースCDBのルートに接続する必要があります。ターゲットPDBがアプリケーションPDBである場合、データベース・リンクはそのアプリケーション・ルートに接続する必要があります。

    • データベース・リンク・ユーザーがソースCDB内のCDBルートに接続する場合、このユーザーは共通ユーザーである必要があります。データベース・リンクがアプリケーション・ルートに接続されている場合、このユーザーには、CDB全体の共通ユーザー、またはアプリケーションの共通ユーザーのどちらかがなることができます。

    • データベース・リンク・ユーザーには、CREATE PLUGGABLE DATABASEシステム権限またはSYSOPER管理権限が必要です。

プラットフォームおよび文字セットの前提条件

次の前提条件を満たしている必要があります。

  • ソースCDBと宛先CDBのプラットフォームが次の要件を満たしている必要があります。

    • endiannessが同じである必要があります。

    • ソース・プラットフォームにインストールされているデータベース・オプションは、宛先プラットフォームにインストールされているデータベース・オプションと同じか、そのサブセットである必要があります。

  • 宛先CDBの文字セットがAL32UTF8でない場合、ソースCDBと宛先CDBには、互換性のある文字セットと各国語文字セットが必要です。

    宛先CDBの文字セットがAL32UTF8である場合、この要件は適用されません。

    ノート:

    Oracle Multitenantでは、あるコンテナのLOBに対する異なる文字セットのコンテナによるデータ・リンク、拡張データ・リンクまたはCONTAINERS()句を使用したアクセスはサポートされません。たとえば、CDBルートとsalespdbの文字セットが異なる場合、CDBルートで実行されるCONTAINERS()問合せはsalespdbのLOBにアクセスできません。

アプリケーション名とバージョンの前提条件

アプリケーションPDBを作成している場合は、ソースPDBとターゲット・アプリケーション・コンテナに同じアプリケーション名とバージョンを指定する必要があります。

PDBを再配置するには:

  1. SQL*Plusで、CREATE PLUGGABLE DATABASEシステム権限を持つユーザーとしてターゲットCDBにログインします。

  2. 現在のコンテナがターゲットCDBまたはターゲット・アプリケーション・コンテナのルートであることを確認します。

  3. FROM句を指定してCREATE PLUGGABLE DATABASE ... RELOCATE文を実行します。

    FROM句でソースPDBを指定し、RELOCATE句を含めます。PDBの古い場所から新しい場所に接続をリダイレクトするには、AVAILABILITY MAX句を指定します。他の句が必要な場合はそれらを指定します。

    再配置したPDBはマウント・モードになり、そのステータスはRELOCATINGです。PDBのオープン・モードは、V$PDBSビューのOPEN_MODE列を問い合せることで確認できます。CDB_PDBSまたはDBA_PDBSビューのSTATUS列を問い合せて、PDBのステータスを表示できます。

    PDBの新しいデフォルト・サービスが作成されます。サービスの名前はPDBと同じになり、このサービスを使用してPDBにアクセスできます。このサービスにアクセスするクライアントには、Oracle Net Serviceが正しく構成されている必要があります。

  4. (オプション)ファイルのコピー操作のステータスを確認するには、V$SESSION_LONGOPSを問い合せます。

    OPNAMES列は、データファイル・コピーにはkpdbfCopyTaskCbk、REDOファイルのコピーにはkcrfremnocが表示されます。

  5. 新しいPDBを読取り/書込みモードでオープンします。

    このステップは、CDBへの新しいPDBの統合を完了するために必要です。PDBが読取り/書込みモードでオープンされると、そのステータスはNORMALになります。PDBを読取り専用モードでオープンしようとすると、エラーが返されます。

  6. PDBをバックアップします。

    PDBは、バックアップしないとリカバリできません。

    ノート:

    PDBの再配置時にエラーが返された場合は、作成されたPDBがUNUSABLE状態である可能性があります。CDB_PDBSまたはDBA_PDBSビューを問い合せてPDBの状態を確認したり、アラート・ログをチェックしてPDBの作成エラーについてさらに学習できます。使用不可のPDBは削除することのみができ、使用不可のPDBと同じ名前のPDBを作成できるようにするには、その前に削除する必要があります。

関連項目:

PDBの再配置: 例

この項の例では、SQLおよびDBCAを使用した再配置の方法を示します。

リモートCDBからのPDBの再配置

この例では、リモートCDBから現在のCDBにpdb1という名前のPDBを再配置します。

この例で、新しいPDBが属するルートはCREATE PLUGGABLE DATABASE文の実行時の現在のコンテナによって決まります。

  • 現在のコンテナがCDBルートの場合、新しいPDBはCDBルートに作成されます。

  • 現在のコンテナがアプリケーション・コンテナ内のアプリケーション・ルートの場合、新しいPDBはアプリケーション・ルート内にアプリケーションPDBとして作成されます。

この例では、様々な要因に基づき、pdb1という名前のPDBをリモートCDBから再配置します。この例では、次の要因を想定しています。

  • 現行ユーザーには、ターゲットCDBのルートでのCREATE PLUGGABLE DATABASEシステム権限があります。

  • ソースCDBへのデータベース・リンク名はlnk2srcです。このデータベース・リンクは、次のSQL文を使用して作成されました。

    CREATE PUBLIC DATABASE LINK lnk2src CONNECT TO c##myadmin IDENTIFIED BY password USING 'MYCDB';

    共通ユーザーc##myadminには、ソースCDB内のSYSOPER管理権限とCREATE PLUGGABLE DATABASEシステム権限があります。

  • PATH_PREFIX句は必要ありません。

  • FILE_NAME_CONVERT句およびCREATE_FILE_DEST句は必要ありません。

    Oracle Managed Filesが有効であるか、またはPDB_FILE_NAME_CONVERT初期化パラメータが設定されています。これらのファイルは、Oracle Managed Files構成または初期化パラメータ設定に基づいて新しい場所に移動されます。

  • PDBにはストレージ制限は必要ありません。したがって、STORAGE句は必要ありません。

  • ターゲットの場所に、作成される新しい一時ファイルと同じ名前のファイルはありません。したがって、TEMPFILE REUSE句は必要ありません。

  • ソースPDBから再配置されたPDBに接続を自動的に再配置する必要があります。したがって、AVAILABILITY MAX句が含まれます。

次の文は、ソースCDBから現在のCDBにpdb1 PDBを再配置します。

CREATE PLUGGABLE DATABASE pdb1 FROM pdb1@lnk2src RELOCATE AVAILABILITY MAX;

DBCAを使用したPDBの再配置: 例

この例では、DBCAを使用して、リモートCDBからローカルCDBにpdb1という名前のPDBを再配置し、再配置先でrelpdb1という名前に変更します。

前提条件

この例では、次のことを前提としています。

  • ローカル・データベースのユーザーには、ルート・コンテナでのCREATE PLUGGABLE DATABASE権限が付与されている。

  • リモートCDBはローカルUNDOモードになっている。

  • リモートCDBとローカルCDBは、ARCHIVELOGモードになっている。

  • データベース・リンクの接続先リモートCDBの共通ユーザーには、CREATE PLUGGABLE DATABASESESSIONおよびSYSOPER権限が付与されている。

  • ローカルCDBとリモートCDBは、同じオプションでインストールされている。

想定

この例では、次のことを前提としています。

  • 再配置されたPDBを格納するCDBのホスト上でDBCAを実行しています。ローカルCDBの名前は、loccdb1です。

  • リモート(ソース) CDBの名前はremcdb1で、ホストremcdb1hostに存在しています。リモートCDBのインスタンス名は、reminstです。

  • 再配置されるPDBであるリモートPDBの名前は、rempdb1です。

  • 共通ユーザーc##adminuser_remcdb1remcdb1に存在しています。

  • 管理ユーザーlocSYSには、loccdb1 (PDBの再配置先のCDB)に対するSYSDBA権限が付与されています。

  • 管理ユーザーremSYSには、remcdb1 (再配置するPDBを格納しているCDB)に対するSYSDBA権限が付与されています。

  • loccdb1への再配置後に、PDBの名前をrelpdb1に変更します。

次のsilentコマンドでは、rempdb1loccdb1に再配置します。

./dbca -silent 
  -relocatePDB
  -sourceDB remcdb1  
  -remotePDBName rempdb1 
  -remoteDBConnString remcdb1host:1521/reminst 
  -remoteDBSYSDBAUserName remSYS 
      -remoteDBSYSDBAUserPassword remsyspwd 
  -dbLinkUsername c##adminuser_remcdb1 
      -dbLinkUserPassword pwd4dblinkusr 
  -sysDBAUserName locSYS 
      -sysDBAPassword locsyspwd
  -pdbName relpdb1

関連項目:

DBCAコマンドの構文およびセマンティクスは、『Oracle Database管理者ガイド』を参照