8 PDBの再配置
PDBを異なるCDBまたはアプリケーション・コンテナに移動できます。
- PDBの再配置について
再配置の際にソースPDBを読取り/書込みモードでオープンすると、すべての機能を利用できます。 - PDBの再配置の目的
この手法は、最小限の停止時間または停止時間なしでPDBを移動する最速の方法です。それ以外の手法では、ソースPDBを切断すると、PDBがターゲットCDBに接続されるまでPDBが停止している必要があります。 - PDB再配置の仕組み
操作では、PDBに関連付けられているファイルを新しい場所に移動し、PDBをターゲットCDBに追加して、そのPDBをオープンします。 - PDBの再配置のユーザー・インタフェース
SQL、DBCAユーティリティまたはフリート・パッチ適用およびプロビジョニング・ユーティリティを使用すると、コマンドラインでPDBを再配置できます。 - CREATE PLUGGABLE DATABASEを使用したPDBの再配置
CREATE PLUGGABLE DATABASE ... RELOCATE
文により、PDBを別のコンテナに移動します。 - PDBの再配置: 例
この項の例では、SQLおよびDBCAを使用した再配置の方法を示します。
親トピック: PDBおよびアプリケーション・コンテナの作成および削除
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ブロックが新しい場所にコピーされることに注意してください。データベース・リンクが必要です。
ターゲットPDBがアプリケーションPDBまたはアプリケーション・ルートである場合は、次のオプションがあります。
-
PDBはアプリケーション・コンテナ内にアプリケーションPDBとして再配置できます。ターゲットPDBは同じCDBまたは別のCDB内のいずれにも指定できます。
-
アプリケーションPDBは、あるアプリケーション・ルートから別のアプリケーション・ルートに再配置できます。ターゲットPDBは、別のCDB内にある必要があります。
-
空のアプリケーション・ルートをあるCDBから別のCDBに再配置できますが、そのアプリケーション・ルートにはホストされるアプリケーションPDBが存在しない必要があります。
次に図は、この手法で新しいアプリケーションPDBをアプリケーション・コンテナに作成する方法を示しています。
再配置されたPDBを初めてオープンすると、Oracle Databaseにより、ソースPDBのアクティブなセッションが排出され、再配置されたPDBサービスにクライアント接続がリダイレクトされます。再配置されたPDBをオープンすることで、元のソースPDBの停止が開始します。ソースおよび再配置されたPDBが同時にオープンすることはありません。
PDBの再配置の目的
この手法は、最小限の停止時間または停止時間なしでPDBを移動する最速の方法です。それ以外の手法では、ソースPDBを切断すると、PDBがターゲットCDBに接続されるまでPDBが停止している必要があります。
データ・センター間で、またはオンプレミス環境からクラウド環境にPDBを移動する場合は、すべてのデータを物理的に移動する必要があります。大規模なPDBでは、このプロセスは非常に時間がかかり、SLAの可用性コンポーネントに違反する可能性があります。PDBの再配置は、停止が不要になります。アプリケーションをオフラインにしたり、アプリケーションを変更またはネットワーク接続文字列を変更せずに、PDBを再配置できます。
親トピック: PDBの再配置
PDB再配置の仕組み
操作では、PDBに関連付けられているファイルを新しい場所に移動し、PDBをターゲットCDBに追加して、そのPDBをオープンします。
- PDBの再配置または停止時のサーバー・セッションの排出
計画メンテナンスの重要な要件は、アプリケーションの動作が中断されないようにする、PDBのセッションの排出またはフェイルオーバーです。 - PDBの再配置のステージ
PDBの再配置の詳細は、リスナー・ネットワークによって異なります。
親トピック: 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の再配置の詳細は、リスナー・ネットワークによって異なります。
- 共通のリスナー・ネットワークでのPDBの再配置
ソースとターゲットの場所が共通のリスナー・ネットワークを共有している場合は、SQL*Netレイヤーがクライアント接続を暗黙的に転送するため、クライアント接続の転送は必要ありません。 - 独立したリスナー・ネットワークでのPDBの再配置
独立したリスナーが相互登録を使用しない場合、ターゲットCDBとソースCDBのリスナーには、相互の情報またはそれぞれの公開されたサービスの情報がありません。
親トピック: PDB再配置の仕組み
共通のリスナー・ネットワークでのPDBの再配置
ソースとターゲットの場所が共通のリスナー・ネットワークを共有している場合は、SQL*Netレイヤーがクライアント接続を暗黙的に転送するため、クライアント接続の転送は必要ありません。
AVAILABILITY NORMAL
リスナー・ネットワークが共通である場合は、CREATE PLUGGABLE DATABASE ... RELOCATE
のAVAILABILITY NORMAL
句を指定します。このオプションはデフォルトです。次の状況は、AVAILABILITY NORMAL
の一般的なユースケースを示しています。
-
共有リスナー
PDBの古い場所と新しい場所で同じリスナーを使用する場合、再配置が完了すると新しい接続は自動的にPDBの新しい場所にルーティングされます。この状況は、同じホストのCDB間での典型的な再配置です。この場合、PDBは新しい場所でリスナーに再登録されます。その他の接続処理は必要ありません。
-
相互登録リスナー
PDBが異なるリスナーを使用して、
local_listener
およびremote_listener
パラメータの構成を使用してそれぞれのリスナーの相互登録を利用する場合、再配置はシームレスです。PDBのサービスの可用性および場所が両方のリスナーに自動的に登録されます。この状況は、おそらくロード・バランシングを目的とした、データ・センター内のホスト間での典型的な再配置です。
共有リスナーおよび相互登録リスナーの環境では、すべてのデータベースからのサービスが共通のリスナー・ネットワークに公開されます。そのため、再配置されたPDBのサービスは共通のリスナー・ネットワークに即時に認識されます。サービス・ネームスペースの競合を回避するために、PDBのサービスの定義は、共通のリスナー・ネットワーク内で一意である必要があります。
共通のリスナー・ネットワークでの再配置のステージ
-
ユーザーが
CREATE PLUGGABLE DATABASE ... RELOCATE AVAILABILITY NORMAL
を発行します。このステップでは、元の場所からターゲットの場所にソースPDBのホット・クローンを実行します。ソースPDBは、SCNマーカーの暗黙的な開始時点でのデータファイル、UNDOブロックおよびREDOブロックをターゲットPDBにコピーします。
このステップが完了すると、このPDBに対して、トランザクション的に一貫性のある2つのコピー(ソース・コンテナ内のコピーとターゲット・コンテナ内のコピー)が存在することになります。操作中は、ソースPDBで処理が中断なく続行されます。ソースPDBに接続しているアプリケーションのユーザーまたはアプリケーションは、再配置が実行中であることを認識しません。
既存のすべてのアプリケーション接続およびこのステップの実行中に作成された新しい接続は、引き続きソースPDBに接続します。
-
ユーザーが
ALTER PLUGGABLE DATABASE OPEN
を発行します。次の処理がバックグラウンドで実行されます。
-
ターゲットPDBによって終了SCNのマーカーが暗黙的に設定され、暗黙的な終了SCNのマーカーを満たすためにメディア・リカバリの完了に必要なREDOまたはUNDOが適用されます。
-
ターゲットPDBでメディア・リカバリが発生した場合は、ソースPDBでの排出アクティブ・セッションが開始されます。
-
PDBサービスがリスナーに登録され、ターゲットCDBで使用できるようになります。
-
ソースPDBがクローズされます。
-
ターゲットPDBが読取り/書込みモードでオープンします。
このステップで、ターゲットCDBへのPDBの再配置が完了します。操作の終了時に、接続が、新しく再配置されたPDBを指すようになります。
PDBが読取り/書込みモードでオープンされると、そのステータスは
NORMAL
になります。PDBを読取り専用モードでオープンしようとすると、エラーが返されます。
-
関連項目:
-
リスナーのリダイレクトの詳細は、『Oracle Database Net Services管理者ガイド』を参照してください
-
計画メンテナンス前にセッションを排出および移行するためのアプリケーション・コンティニュイティの使用についてさらに学習するには、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください
親トピック: PDBの再配置のステージ
独立したリスナー・ネットワークでのPDBの再配置
独立したリスナーが相互登録を使用しない場合、ターゲットCDBとソースCDBのリスナーには、相互の情報またはそれぞれの公開されたサービスの情報がありません。
AVAILABILITY MAX
CREATE PLUGGABLE DATABASE ... RELOCATE
のAVAILABILITY 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_scan1
、listener_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
パラメータをノード・リスナーに設定すると、特定のネットワーク構成で無限のリダイレクト・ループが可能になるため、設定しないでください。
独立したリスナー・ネットワークでの再配置のステージ
-
ユーザーが
CREATE PLUGGABLE DATABASE ... RELOCATE AVAILABILITY MAX
を発行します。このステップでは、元の場所からターゲットの場所にソースPDBのホット・クローンを実行します。ソースPDBは、SCNマーカーの暗黙的な開始時点でのデータファイル、UNDOブロックおよびREDOブロックをターゲットPDBにコピーします。
-
ユーザーが
ALTER PLUGGABLE DATABASE OPEN
を発行します。次の処理がバックグラウンドで実行されます。
-
ターゲットPDBによって終了SCNのマーカーが暗黙的に設定され、暗黙的な終了SCNのマーカーを満たすためにメディア・リカバリの完了に必要なREDOまたはUNDOが適用されます。
-
ターゲットPDBでメディア・リカバリが発生した場合は、ソースPDBでの排出アクティブ・セッションが開始されます。
-
ソースPDBの
LISTENER_NETWORKS
初期化パラメータが転送先アドレスで暗黙的に更新され、ソースCDBのリスナーPDBサービスが転送先アドレスで更新されます。 -
メディア・リカバリが完了すると、ターゲットPDBが読取り専用モードでオープンします。
このステージでは、ターゲットPDBの問合せのみが許可されます。問合せは、ソースPDBで実行された場合とまったく同様に動作します。ただし、DMLを試行する接続は完了しません。
-
読取り専用接続が新しいホスティング・リスナーに即時に転送され、新規の読取り/書込み接続が新しいホスティング・リスナーに転送され、そこでターゲットPDBが一貫性のある状態でオープンされるまでスピンします。
-
ソースPDBによって、永続的な接続を終了する
SHUTDOWN IMMEDIATE
が実行されます。 -
ターゲットPDBが読取り/書込みモードでオープンします。
このステップで、ターゲットCDBへのPDBの再配置が完了します。操作の終了時に、接続が、新しく再配置されたPDBを指すようになります。
PDBが読取り/書込みモードでオープンされると、そのステータスは
NORMAL
になります。PDBを読取り専用モードでオープンしようとすると、エラーが返されます。
-
ノート:
更新が完了するまでツームストーンPDBと呼ばれるアーティファクトがソースCDBに残り、PDBのネームスペースを保護し、リスナー転送構成を維持します。ソースCDBのルートでは、ツームストーンPDBがRELOCATED
ステータスでV$CONTAINERS
に表示されます。ターゲットPDBに直接接続を指定するためにアプリケーション接続文字列を変更した場合は、ソースCDBからツームストーンPDBを削除できます。
関連項目:
-
リスナーのリダイレクトの詳細は、『Oracle Database Net Services管理者ガイド』を参照してください
-
計画メンテナンス前にセッションを排出および移行するためのアプリケーション・コンティニュイティの使用についてさらに学習するには、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください
親トピック: 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のパラメータ
パラメータ | 説明 |
---|---|
|
再配置するPDBの名前。 |
|
リモートCDBへのネット・サービス接続。 |
|
ローカルCDBの |
|
ローカルCDBの |
|
リモートCDBの |
|
リモートCDBの |
|
リモートCDBの共通ユーザーの名前。 |
|
リモートCDBの共通ユーザーのパスワード。 |
|
ソースPDBの名前。 |
|
再配置後のPDBの名前。 |
フリート・パッチ適用およびプロビジョニング・コントロール(RHPCTL)
Oracle Grid Infrastructureでは、フリート・パッチ適用およびプロビジョニングを使用して、あるCDBから別のCDBへのPDBの再配置を自動化できます。
関連項目:
-
CREATE PLUGGABLE DATABASE
の構文およびセマンティクスについては、『Oracle Database SQL言語リファレンス』を参照してください -
サイレント・モードのDBCAのコマンド・リファレンスは、『Oracle Database管理者ガイド』を参照してください
-
フリート・パッチ適用およびプロビジョニングについてさらに学習するには、『Oracle Clusterware管理およびデプロイメント・ガイド』を参照してください
親トピック: 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を再配置するには:
-
SQL*Plusで、
CREATE PLUGGABLE DATABASE
システム権限を持つユーザーとしてターゲットCDBにログインします。 -
現在のコンテナがターゲットCDBまたはターゲット・アプリケーション・コンテナのルートであることを確認します。
-
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が正しく構成されている必要があります。
-
(オプション)ファイルのコピー操作のステータスを確認するには、
V$SESSION_LONGOPS
を問い合せます。OPNAMES
列は、データファイル・コピーにはkpdbfCopyTaskCbk
、REDOファイルのコピーにはkcrfremnoc
が表示されます。 -
新しいPDBを読取り/書込みモードでオープンします。
このステップは、CDBへの新しいPDBの統合を完了するために必要です。PDBが読取り/書込みモードでオープンされると、そのステータスは
NORMAL
になります。PDBを読取り専用モードでオープンしようとすると、エラーが返されます。 -
PDBをバックアップします。
PDBは、バックアップしないとリカバリできません。
ノート:
PDBの再配置時にエラーが返された場合は、作成されたPDBが
UNUSABLE
状態である可能性があります。CDB_PDBS
またはDBA_PDBS
ビューを問い合せてPDBの状態を確認したり、アラート・ログをチェックしてPDBの作成エラーについてさらに学習できます。使用不可のPDBは削除することのみができ、使用不可のPDBと同じ名前のPDBを作成できるようにするには、その前に削除する必要があります。
関連項目:
-
文字セットおよび各国語文字セットの互換性の要件は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください
-
PDBのバックアップの詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください
親トピック: PDBの再配置
PDBの再配置: 例
この項の例では、SQLおよびDBCAを使用した再配置の方法を示します。
- リモートCDBからのPDBの再配置
この例では、リモートCDBから現在のCDBにpdb1
という名前のPDBを再配置します。 - DBCAを使用したPDBの再配置: 例
この例では、DBCAを使用して、リモートCDBからローカルCDBにpdb1
という名前のPDBを再配置し、再配置先でrelpdb1
という名前に変更します。
親トピック: PDBの再配置
リモート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;
親トピック: PDBの再配置: 例
DBCAを使用したPDBの再配置: 例
この例では、DBCAを使用して、リモートCDBからローカルCDBにpdb1
という名前のPDBを再配置し、再配置先でrelpdb1
という名前に変更します。
前提条件
この例では、次のことを前提としています。
-
ローカル・データベースのユーザーには、ルート・コンテナでの
CREATE PLUGGABLE DATABASE
権限が付与されている。 -
リモートCDBはローカルUNDOモードになっている。
-
リモートCDBとローカルCDBは、
ARCHIVELOG
モードになっている。 -
データベース・リンクの接続先リモートCDBの共通ユーザーには、
CREATE PLUGGABLE DATABASE
、SESSION
およびSYSOPER
権限が付与されている。 -
ローカルCDBとリモートCDBは、同じオプションでインストールされている。
想定
この例では、次のことを前提としています。
-
再配置されたPDBを格納するCDBのホスト上でDBCAを実行しています。ローカルCDBの名前は、
loccdb1
です。 -
リモート(ソース) CDBの名前は
remcdb1
で、ホストremcdb1host
に存在しています。リモートCDBのインスタンス名は、reminst
です。 -
再配置されるPDBであるリモートPDBの名前は、
rempdb1
です。 -
共通ユーザー
c##adminuser_remcdb1
がremcdb1
に存在しています。 -
管理ユーザー
locSYS
には、loccdb1
(PDBの再配置先のCDB)に対するSYSDBA
権限が付与されています。 -
管理ユーザー
remSYS
には、remcdb1
(再配置するPDBを格納しているCDB)に対するSYSDBA
権限が付与されています。 -
loccdb1
への再配置後に、PDBの名前をrelpdb1
に変更します。
次のsilentコマンドでは、rempdb1
をloccdb1
に再配置します。
./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管理者ガイド』を参照
親トピック: PDBの再配置: 例