24 CDBでのXStreamの使用
マルチテナント・コンテナ・データベース(CDB)では、Oracle Database XStreamを使用できます。
この章のトピックは、次のとおりです:
- XStreamについて
XStreamは、Oracle Databaseコンポーネントおよびアプリケーション・プログラミング・インタフェース(API)で構成され、Oracleデータベースからのデータ変更をクライアント・アプリケーションで受信し、クライアント・アプリケーションからOracleデータベースにデータの変更を送信できるようにします。 - システム生成ルールとマルチテナント環境
マルチテナント環境では、移植可能な一連のスキーマ、オブジェクト、および論理的に個別のデータベースとしてアプリケーションに表示される関連する構造をOracleデータベースに含めることができます。この自己完結型コレクションは、プラガブル・データベース(PDB)と呼ばれます。CDBにはPDBが含まれています。 - XStream Outとマルチテナント環境
マルチテナント環境では、移植可能な一連のスキーマ、オブジェクト、および論理的に個別のデータベースとしてアプリケーションに表示される関連する構造をデータベースに含めることができます。 - CDBでのXStream Outの構成
CDBでXStream Outを構成する場合は、どのデータベース変更をXStream Outで取得してクライアント・アプリケーションに送信するかを決定する必要があります。 - XStream Inとマルチテナント環境
マルチテナント環境では、移植可能な一連のスキーマ、オブジェクト、および論理的に個別のデータベースとしてアプリケーションに表示される関連する構造をOracleデータベースに含めることができます。
親トピック: マルチテナント環境でのOracle機能の使用
XStreamについて
XStreamは、Oracle Databaseコンポーネントおよびアプリケーション・プログラミング・インタフェース(API)で構成され、Oracleデータベースからのデータ変更をクライアント・アプリケーションで受信し、クライアント・アプリケーションからOracleデータベースにデータの変更を送信できるようにします。
これらのデータ変更は、Oracleデータベースと他のシステムで共有できます。他のシステムとは、Oracle以外のデータベース、非RDBMS Oracle製品、ファイル・システム、サード・パーティのソフトウェア・アプリケーションなどです。クライアント・アプリケーションは、ユーザーにより固有の目的およびユースケース用に設計されます。
XStreamは、XStream OutおよびXStream Inの2つの主要な機能で構成されています。XStream Outには、Oracleデータベースでのデータ変更を他のシステムと共有できるようにする、Oracle DatabaseのコンポーネントおよびAPIがあります。XStream Outは、データ操作言語(DML)およびデータ定義言語(DDL)の変更をREDOログから取得し、APIを使用するクライアント・アプリケーションにこれらの変更を送信できます(次の図を参照)。
XStream Inには、他のシステムでのデータ変更をOracleデータベースと共有できるようにする、Oracle DatabaseのコンポーネントおよびAPIがあります。XStream Inは、これらの変更をOracleデータベース内のデータベース・オブジェクトに適用できます(次の図を参照)。
XStreamは、Oracleデータベースの取得機能および適用機能を使用します。これらの機能によって、XStreamの次の機能が使用可能になります。
-
データベース変更をストリーミングするための論理変更レコード(LCR)形式
LCRは、データベース変更を説明する特定の形式のメッセージです。変更がデータ操作言語(DML)操作だった場合は、行LCRにより、DML操作の結果として発生した行変更がそれぞれカプセル化されます。1つのDML操作によって複数の行変更が発生する場合があるため、1つのDML操作によって複数の行LCRが発生することがあります。変更がデータ定義言語(DDL)操作だった場合、1つのDDL LCRがDDL変更をカプセル化します。
-
包含ルールや除外ルールなど、動作を制御するルールおよびルール・セット
ルールによって、データベース・レベル、スキーマ・レベル、表レベルおよび行/列レベルでデータベースの変更がフィルタリング可能になります。
-
取得したデータ変更を変更するルールベースの変換
-
LOB、
LONG
、LONG
RAW
、XMLType
など、データベースのほとんどのデータ型のサポート -
単一のデータベース・インスタンスへの複数のインバウンド・ストリーム、単一のデータベース・インスタンスからの複数のアウトバウンド・ストリーム、単一の取得プロセスからの複数のアウトバウンド・ストリームなど、カスタマイズされた構成
-
最適なパフォーマンスのための並列性の適用、SQLの生成、競合の検出と解決、エラー処理、適用ハンドラによるカスタマイズされた適用など、XStream Inのフル装備の適用
ノート:
XStream Out構成およびXStream In構成のいずれにおいても、クライアント・アプリケーションは専用サーバー接続を使用する必要があります。
関連トピック
親トピック: CDBでのXStreamの使用
システム生成ルールとマルチテナント環境
マルチテナント環境では、移植可能な一連のスキーマ、オブジェクトおよび関連構造をOracleデータベースに含めることができ、アプリケーションには論理的に別のデータベースのように見えます。この自己完結型コレクションは、プラガブル・データベース(PDB)と呼ばれます。CDBにはPDBが含まれています。
アプリケーション・コンテナも含めることができます。アプリケーション・コンテナは、アプリケーション・ルートとそれに関連付けられたアプリケーションPDBから構成されるCDBのオプション・コンポーネントです。アプリケーション・コンテナには、1つ以上のアプリケーションのデータが格納されています。アプリケーション・コンテナは、アプリケーションのメタデータおよび共通データを共有します。CDBでは、CDBルート、各PDB、各アプリケーション・ルートおよび各アプリケーションPDBのそれぞれがコンテナです。
CDBでは、変更が発生したコンテナのグローバル名をsource_database_name
属性で、CDBルートのグローバル名をroot_name
属性でLCRに含めることができます。XStreamコンポーネントのルールで、これらの属性を考慮できます。
この項では、次の項目について説明します。
- CDBのシステム生成ルールとXStream Out
CDBでは、CDBルートでXStream Outを構成する必要があります。そのため、システム生成ルールを作成するDBMS_XSTREAM_ADM
パッケージのPL/SQLプロシージャは、CDBルートで実行する必要があり、さらに共通ユーザーとして接続されている必要があります。 - CDBのシステム生成ルールとXStream In
XStream Inは、CDBのルートまたは任意のコンテナで構成できます。
関連トピック
親トピック: CDBでのXStreamの使用
CDBのシステム生成ルールとXStream Out
CDBでは、XStream OutをCDBルートで構成する必要があります。そのため、システム生成ルールを作成するDBMS_XSTREAM_ADM
パッケージのPL/SQLプロシージャは、CDBルートで実行する必要があり、さらに共通ユーザーとして接続されている必要があります。
伝播のルールを作成するプロシージャを除く、ADD_GLOBAL_RULES
プロシージャなどのXStream Outのシステム生成ルールを作成するプロシージャには、次の表に示す主要なパラメータが含まれています。
表24-1 CDBのシステム生成ルールの主要なプロシージャ・パラメータ
パラメータ | 説明 |
---|---|
|
ソース・データベースのグローバル名。CDBでは、ルールに関連するコンテナのグローバル名を指定してください。コンテナは、CDBルート、PDB、アプリケーション・ルートまたはアプリケーションPDBにできます。例: |
|
ソースCDBのCDBルートのグローバル名。例: |
|
ソース・コンテナの短縮名。コンテナは、CDBルート、PDB、アプリケーション・ルートまたはアプリケーションPDBにできます。例: |
source_database
またはsource_root_name
を指定する際にドメイン名を指定しなかった場合は、名前に自動的に追加されます。たとえば、ドメイン名が.EXAMPLE.COM
の場合にDBS1
を指定すると、自動的にDBS1.EXAMPLE.COM
が指定されます。
これらの主要なパラメータの組合せによって、プロシージャで生成されたルールに基づいて、どのコンテナの変更をXStream Outが取得し、クライアント・アプリケーションにストリームするのかが決まります。これらのパラメータの設定に関係なく、システム生成ルールでは、特定のスキーマおよび表に取得され、ストリームされる変更を引き続き制限できます。
ローカル取得とは、ソースCDB上で取得プロセスが実行されることを意味します。ローカル取得構成では、source_root_name
パラメータで、ローカルCDBのCDBルートのグローバル名を指定します。このパラメータがNULL
の場合は、ローカルCDBのCDBルートのグローバル名が自動的に指定されます。生成されるルールには、現在のCDBのCDBルートのグローバル名に対する条件が含まれます。
ダウンストリーム取得とは、ソースCDB以外のCDB上で取得プロセスが実行されることを意味します。ダウンストリーム取得構成では、source_root_name
パラメータにNULL
以外の値が必要で、リモート・ソースCDBのCDBルートのグローバル名を指定する必要があります。生成されるルールには、リモートCDBのCDBルートのグローバル名に対する条件が含まれます。このパラメータがNULL
の場合は、ローカル取得とみなされます。
次の表は、ローカル取得構成でのsource_database
およびsource_container_name
の様々なパラメータ設定に対するルール条件を示しています。
表24-2 ローカル取得およびXStream Outコンテナのルール条件
source_databaseパラメータの設定 | source_container_nameパラメータの設定 | 説明 |
---|---|---|
|
|
XStream Outは、CDBルート、すべてのPDB、すべてのアプリケーション・ルート、すべてのアプリケーションPDBなど、ローカルCDBのコンテナに対する変更を取得してストリームします。 |
|
|
XStream Outは、ローカルCDBの指定されたソース・コンテナで行われた変更を取得してストリームします。ソース・コンテナは、CDBルート、PDB、アプリケーション・ルートまたはアプリケーションPDBにできます。 |
|
|
XStream Outは、ローカルCDBの指定されたソース・コンテナで行われた変更を取得してストリームします。ソース・コンテナは、CDBルート、PDB、アプリケーション・ルートまたはアプリケーションPDBにできます。 |
|
|
XStream Outは、ローカルCDBの指定されたソース・コンテナで行われた変更を取得してストリームします。ソース・コンテナは、CDBルート、PDB、アプリケーション・ルートまたはアプリケーションPDBにできます。
|
次の表は、ダウンストリーム取得構成でのsource_database
およびsource_container_name
の様々なパラメータ設定に対するルール条件を示しています。
表24-3 ダウンストリーム取得およびXStream Outコンテナのルール条件
source_databaseパラメータの設定 | source_container_nameパラメータの設定 | 説明 |
---|---|---|
|
|
XStream Outは、CDBルート、すべてのPDB、すべてのアプリケーション・ルート、すべてのアプリケーションPDBなど、リモート・ソースCDBのコンテナに対する変更を取得してストリームします。 |
|
|
XStream Outは、リモート・ソースCDBの指定されたソース・コンテナで行われた変更を取得してストリームします。ソース・コンテナは、CDBルート、PDB、アプリケーション・ルートまたはアプリケーションPDBにできます。 |
|
|
|
|
|
XStream Outは、リモート・ソースCDBの指定されたソース・コンテナで行われた変更を取得してストリームします。ソース・コンテナは、CDBルート、PDB、アプリケーション・ルートまたはアプリケーションPDBにできます。
|
CDBのシステム生成ルールとXStream In
XStream Inは、CDBのルートまたは任意のコンテナで構成できます。
一般的にインバウンド・サーバーはルールまたはルール・セットを使用しません。かわりに、通常はクライアント・アプリケーションから受信したすべてのLCRを処理します。インバウンド・サーバーは、現在のコンテナにのみ変更を適用できます。したがって、インバウンド・サーバーがCDBルートで設定されている場合は、CDBルートにのみ変更を適用できます。インバウンド・サーバーが1つのPDBで構成されている場合は、そのPDBにのみ変更を適用できます。インバウンド・サーバーがアプリケーション・ルートで構成されている場合は、そのアプリケーション・ルートにのみ変更を適用でき、インバウンド・サーバーが1つのアプリケーションPDBで構成されている場合は、そのアプリケーションPDBにのみ変更を適用できます。
関連トピック
親トピック: システム作成ルールとマルチテナント環境
XStream Outとマルチテナント環境
マルチテナント環境では、移植可能な一連のスキーマ、オブジェクトおよび関連構造をデータベースに含めることができ、アプリケーションには論理的に別のデータベースのように見えます。
この自己完結型コレクションは、プラガブル・データベース(PDB)と呼ばれます。1つのマルチテナント・コンテナ・データベース(CDB)には複数のPDBが格納されます。CDBでは、XStream OutはCDB以外での場合とほぼ同様に機能します。
CDBには、アプリケーション・コンテナを含めることもできます。アプリケーション・コンテナは、アプリケーション・ルートとそれに関連付けられたすべてのアプリケーションPDBから構成されるCDBのオプション・コンポーネントです。アプリケーション・コンテナには、1つ以上のアプリケーションのデータが格納されています。アプリケーション・コンテナは、アプリケーションのメタデータおよび共通データを共有します。CDBでは、CDBルート、各PDB、各アプリケーション・ルートおよび各アプリケーションPDBのそれぞれがコンテナです。
CDBと非CDBでのXStream Out機能の主な違いは、次のとおりです。
-
XStream OutはCDBルートでのみ構成する必要があります。
-
XStream OutはCDB内の任意のコンテナに適用された変更を表示できます。
-
XStream Out取得ルールは、LCRをクライアント・アプリケーションに必要なLCRに制限できます。システム生成の取得ルールは、
DBMS_XSTREAM_ADM
パッケージのADD_OUTBOUND
およびCREATE_OUTBOUND
プロシージャに渡されたパラメータに基づいて適切なLCRを選択します。XStream Outコンポーネントで使用されるルールよりも詳細に制御するために、同じパッケージのADD_*_RULES
プロシージャを使用できます。 -
XStream Outタスクを実行するユーザーは、共通ユーザーである必要があります。
XStream環境での操作の切断および接続
XStream Outに関連するPDB、アプリケーション・ルートまたはアプリケーションPDBがそのCDBから切断され、別のCDBに接続された場合、取得プロセスまたはアウトバウンド・サーバーはコンテナの一部とはみなされません。他のCDBで、取得プロセスおよびアウトバウンド・サーバーを再度構成する必要があります。
アウトバウンド・サーバーが取得プロセスとは異なるデータベースに構成されている場合は、切断および接続の操作に対して追加の考慮事項があります。
この例では、次のことを想定しています。
-
CDB1
という名前のCDBには、PDBPDB1
が含まれています。 -
取得プロセスは
CDB1
で構成され、PDB1
からCDB2
というCDBのアウトバウンド・サーバーにLCRを送信します。 -
PDB1
をCDB1
から切断して、CDB3
というCDBに接続します。
PDB1
からCDB2
のアウトバウンド・サーバーにLCRを引き続き配信するには、CDB3
で新しい取得プロセスを構成し、LCRを取得してCDB2
に送信する必要があります。
CDB1
のルートへの参照をCDB3
のルートに変更するように、データベースBのアウトバウンド・サーバーで使用されるルールを変更する必要があります。また、CDB3
でPDB1
に別の名前が指定された場合は、新しいPDBの名前を反映するようにルールを変更する必要があります。
XStream環境のアプリケーション・コンテナ
CDBに1つ以上のアプリケーション・コンテナが含まれている場合は、XStream OutをCDBルートで構成する必要があり、それによってXStream Outは、アプリケーション・ルートやアプリケーションPDBなどのCDBのコンテナに追加された変更を取得できます。アプリケーション・コンテナに取得された変更は、PDB、アプリケーション・ルート、アプリケーションPDBなど、任意のタイプのコンテナに送信できます。
あるアプリケーション・ルートから別のアプリケーション・ルートに変更をレプリケートする場合は、XStreamでALTER PLUGGABLE DATABASE APPLICATION
文をレプリケートできます。エラーを回避するには、文を適用するターゲット・アプリケーション・ルートに、ソース・アプリケーション・ルートと同じアプリケーションがインストールされ、両方のアプリケーション・ルートでアプリケーション名が同じである必要があります。
アプリケーション・ルートからアプリケーション・ルートでないコンテナに変更をレプリケートする際にエラーの発生を回避するには、ALTER PLUGGABLE DATABASE APPLICATION
文がレプリケートされないようにする必要があります。
XStream OCI APIでは、OCIXStreamOutAttach
関数およびOCILCRHeaderGet
関数を使用して、ALTER PLUGGABLE DATABASE APPLICATION
文が複製されるかどうかを制御できます。XStream Java APIでは、XStreamOut.attach
メソッドのmode
パラメータを使用して、この動作を制御できます。
親トピック: CDBでのXStreamの使用
CDBでのXStream Outの構成
CDBでXStream Outを構成する場合は、どのデータベース変更をXStream Outで取得してクライアント・アプリケーションに送信するかを決定する必要があります。
XStream Outでは、CDBルートとすべてのPDB、アプリケーション・ルート、アプリケーションPDBなど、すべてのコンテナに対するすべてのデータベース変更をストリームするか、特定のコンテナからの変更をストリームできます。さらに、ローカル取得を使用するようにXStream Outを構成するか、ダウンストリーム取得を使用するようにXStream Outを構成して、ソース・データベースからの変更を取得するために必要な作業を軽減できます。
CDBでXStream Outを構成する場合は、次の制限が適用されます。
-
取得プロセスおよびアウトバウンド・サーバーは、CDBルートに存在する必要があります。
-
取得プロセスおよびアウトバウンド・サーバーは、同じCDBに存在する必要があります。
-
CDBの各コンテナは、XStream Out構成時にオープンされている必要があります。
-
アプリケーション・ルートに対する変更を取得しているときは、
ALTER PLUGGABLE DATABASE APPLICATION
文が他のアプリケーション・ルートにのみレプリケートされるようにする必要があります。
また、CDBのXStream管理者を正しく作成していることを確認します。
ノート:
非CDBを使用してコンテナが作成されている場合、コンテナでは非CDBからのXStream Outコンポーネントを使用できません。CDBルートで、取得プロセスやアウトバウンド・サーバーなどのXStream Outコンポーネントを削除し、再作成する必要があります。
この項では、次の項目について説明します。
- ローカル取得を使用したCDBでのXStream Outの構成
例では、ローカル取得を使用したCDBでのXStream Outの構成を示しています。 - ダウンストリーム取得を使用したCDBでのXStream Outの構成
ダウンストリーム取得を使用して、XStream Outコンポーネントをソース・データベース以外のデータベースに配置できます。
関連トピック
親トピック: CDBでのXStreamの使用
ローカル取得を使用したCDBでのXStream Outの構成
例では、ローカル取得を使用したCDBでのXStream Outの構成を示しています。
前提条件
XStream Outを構成する前に、CDBのすべてのコンテナが、XStream Out構成時に読取り/書込みモードでオープンしているようにします。
想定
この項では、次のことを想定しています。
-
取得プロセスはローカル取得プロセスであり、アウトバウンド・サーバーと同じデータベースで実行されます。
-
アウトバウンド・サーバーの名前は
xout
です。 -
PDB
pdb1.example.com
のoe.orders
表およびoe.order_items
表に対するデータ操作言語(DML)およびデータ定義言語(DDL)の変更は、アウトバウンド・サーバーに送信されます。 -
PDB
pdb1.example.com
のhr
スキーマに対するDML変更およびDDL変更は、アウトバウンド・サーバーに送信されます。
図24-3は、このXStream Out構成の概要を示しています。
図24-3 PDBのCREATE_OUTBOUNDを使用して作成されたサンプルXStream Out構成
「図24-3 PDBのCREATE_OUTBOUNDを使用して作成されたサンプルXStream Out構成」の説明
CREATE_OUTBOUND
プロシージャを使用して、アウトバウンド・サーバーを作成するには:
-
SQL*Plusで、CDB (PDB
pdb1.example.com
ではなく)のルートにXStream管理者として接続します。 -
アウトバウンド・サーバーおよび他のXStreamコンポーネントを作成します。
-
ソースCDB内のすべてのコンテナが読取り/書込みモードでオープンしていることを確認します。
-
CREATE_OUTBOUND
プロシージャを実行します。この例の想定に従って、次の
CREATE_OUTBOUND
プロシージャを実行します。DECLARE tables DBMS_UTILITY.UNCL_ARRAY; schemas DBMS_UTILITY.UNCL_ARRAY; BEGIN tables(1) := 'oe.orders'; tables(2) := 'oe.order_items'; schemas(1) := 'hr'; DBMS_XSTREAM_ADM.CREATE_OUTBOUND( server_name => 'xout', source_database => 'pdb1.example.com', table_names => tables, schema_names => schemas); END; /
ノート:
CDBルート、すべてのPDB、すべてのアプリケーション・ルート、すべてのアプリケーションPDBなど、CDB内のすべてのコンテナでの変更を取得して、これらの変更内容をXStreamクライアント・アプリケーションに送信するには、
CREATE_OUTBOUND
プロシージャを実行する際にsource_database
パラメータを省略します。 -
CREATE_OUTBOUND
プロシージャが正常に完了した後、必要に応じて、1つ以上のコンテナのオープン・モードを変更します。
ステップbでプロシージャを実行すると、次の処理が実行されます。
-
oe.orders
表、oe.order_items
表、およびpdb1.example.com
PDBのhr
スキーマ内のすべての表のサプリメンタル・ロギングを構成します。 -
取得プロセスおよびアウトバウンド・サーバーで使用されるシステム生成の名前でキューを作成します。
-
oe.orders
表、oe.order_items
表、およびpdb1.example.com
PDBのhr
スキーマに対するDMLおよびDDL変更を取得するように指示するルール・セットを備えた取得プロセスをシステム生成の名前で作成して起動します。 -
oe.orders
表、oe.order_items
表およびhr
スキーマに対するDMLおよびDDL変更をクライアント・アプリケーションに送信することを指示するルール・セットを備えたxout
という名前のアウトバウンド・サーバーを作成して起動します。 -
現在のユーザーをアウトバウンド・サーバーの接続ユーザーとして設定します。この例では、現在のユーザーはXStream管理者です。クライアント・アプリケーションは、アウトバウンド・サーバーと相互作用するために接続ユーザーとしてデータベースに接続する必要があります。
ノート:
server_name
値は30バイトを超過できません。ヒント:
pdb1.example.com
データベースからアウトバウンド・サーバーに、データベースのすべての変更を取得して送信するには、table_names
およびschema_names
パラメータにNULL
(デフォルト)を指定します。 -
-
CDBのルートでアウトバウンド・サーバーに接続してLCRを受信するクライアント・アプリケーションを作成して実行します。
クライアント・アプリケーションを実行すると、アウトバウンド・サーバーが自動的に起動します。
ダウンストリーム取得を使用したCDBでのXStream Outの構成
ダウンストリーム取得を使用して、XStream Outコンポーネントをソース・データベース以外のデータベースに配置できます。
前提条件
XStream Outを構成する前に、次の前提条件を満たす必要があります。
-
CDBのすべてのコンテナが、XStream Out構成時に読取り/書込みモードでオープンしているようにします。
-
この例では、ダウンストリーム取得を使用します。そのため、ソース・データベースからダウンストリーム・データベースへのログ・ファイル転送を構成する必要があります。
-
リアルタイムのダウンストリーム取得を使用する場合は、必要なスタンバイREDOログも追加する必要があります。
想定
この項では、次のことを想定しています。
-
アウトバウンド・サーバーの名前は
xout
です。 -
アウトバウンド・サーバーで使用されるキューは
c##xstrmadmin.xstream_queue
です。 -
ソース・データベースは、CDB
data.example.com
のPDBpdb1.example.com
です。 -
取得プロセスは、CDB
capture.example.com
で実行されます。 -
アウトバウンド・サーバーは、CDB
capture.example.com
で実行されます。 -
PDB
pdb1.example.com
からのoe.orders
表およびoe.order_items
表に対するDML変更およびDDL変更は、アウトバウンド・サーバーに送信されます。 -
PDB
pdb1.example.com
からのhr
スキーマに対するDML変更およびDDL変更は、アウトバウンド・サーバーに送信されます。
次の図は、このXStream Out構成の概要を示しています。
図24-4 複数のCDBおよびダウンストリーム取得を使用したサンプルXStream Out構成
「図24-4 複数のCDBおよびダウンストリーム取得を使用したサンプルXStream Out構成」の説明
ダウンストリーム取得を使用してCDBでXStream Outを構成するには:
-
SQL*Plusで、ダウンストリーム取得CDBのルートにXStream管理者として接続します。
この例では、ダウンストリーム取得CDBは
capture.example.com
です。 -
取得プロセスで使用されるキューを作成します。
たとえば、次のプロシージャを実行します。
BEGIN DBMS_XSTREAM_ADM.SET_UP_QUEUE( queue_table => 'c##xstrmadmin.xstream_queue_table', queue_name => 'c##xstrmadmin.xstream_queue'); END; /
-
必要に応じて、ダウンストリーム取得CDBのルートからソースCDBのルートに、データベース・リンクを作成します。
この例では、
capture.example.com
のルートからdata.example.com
のルートに、データベース・リンクを作成します。たとえば、ユーザーc##xstrmadmin
が両方のデータベースでXStream管理者の場合は、次のようにデータベース・リンクを作成します。CREATE DATABASE LINK data.example.com CONNECT TO c##xstrmadmin IDENTIFIED BY password USING 'data.example.com';
-
ソースCDB内のすべてのコンテナが読取り/書込みモードでオープンしていることを確認します。
-
ステップ3でデータベースを作成しなかった場合は、ソースCDBのルートで追加のステップを完了する必要があります。
ステップ3でデータベース・リンクを作成した場合、これらのステップは必要ありません。
BUILD
プロシージャを実行し、ソースCDBのデータベース・オブジェクトに対して必要なサプリメンタル・ロギングが指定されていることを確認します。-
ソースCDBのルートにXStream管理者として接続します。
-
DBMS_CAPTURE_ADM.BUILD
プロシージャを実行します。次に例を示します。SET SERVEROUTPUT ON DECLARE scn NUMBER; BEGIN DBMS_CAPTURE_ADM.BUILD( first_scn => scn); DBMS_OUTPUT.PUT_LINE('First SCN Value = ' || scn); END; / First SCN Value = 409391
このプロシージャでは、
capture.example.com
CDBのルートで作成される取得プロセスの有効な先頭SCN値が表示されます。ステップ6で取得プロセスを作成するときに使用できるように、返されたSCN値をノートにとります。 -
ソースCDBのデータベース・オブジェクトに対して必要なサプリメンタル・ロギングが指定されていることを確認します。
この例では、
hr
スキーマ、oe.orders
表、およびpdb1.example.com
PDBのoe.order_items
表に対してサプリメンタル・ロギングが構成されていることを確認してください。
-
-
ダウンストリーム取得CDBのルートに接続されているときに、取得プロセスを作成します。
たとえば、
capture.example.com
にXStream管理者として接続されているときに、次のプロシージャを実行して取得プロセスを作成します。BEGIN DBMS_CAPTURE_ADM.CREATE_CAPTURE( queue_name => 'c##xstrmadmin.xstream_queue', capture_name => 'real_time_capture', rule_set_name => NULL, start_scn => NULL, source_database => NULL, use_database_link => TRUE, first_scn => NULL, logfile_assignment => 'implicit', source_root_name => 'data.example.com', capture_class => 'xstream'); END; /
ステップ3でデータベースを作成しなかった場合は、
DBMS_CAPTURE_ADM.BUILD
プロシージャによってfirst_scn
パラメータに対して返されるSCN値を指定します。取得プロセスは起動しないでください。
-
取得プロセスが作成された後、必要に応じて1つ以上のPDBのオープン・モードを変更します。
-
ADD_OUTBOUND
プロシージャを実行します。この項の想定に従って、次の
ADD_OUTBOUND
プロシージャを実行します。DECLARE tables DBMS_UTILITY.UNCL_ARRAY; schemas DBMS_UTILITY.UNCL_ARRAY; BEGIN tables(1) := 'oe.orders'; tables(2) := 'oe.order_items'; schemas(1) := 'hr'; DBMS_XSTREAM_ADM.ADD_OUTBOUND( server_name => 'xout', queue_name => 'c##xstrmadmin.xstream_queue', source_database => 'pdb1.example.com', table_names => tables, schema_names => schemas, source_root_name => 'data.example.com', source_container_name => 'pdb1'); END; /
このプロシージャを実行すると、次のアクションが実行されます。
-
xout
という名前のアウトバウンド・サーバーを作成します。アウトバウンド・サーバーには、oe.orders
表、oe.order_items
表およびhr
スキーマに対するDMLおよびDDL変更をクライアント・アプリケーションに送信することを指示するルール・セットがあります。ルールでは、これらの変更がCDBdata.example.com
のPDBpdb1.example.com
で発生している必要があることを指定します。アウトバウンド・サーバーは、このキューc##xstrmadmin.xstream_queue
からLCRをデキューします。 -
現在のユーザーをアウトバウンド・サーバーの
connect_user
として設定します。この例では、current_user
はXStream管理者です。クライアント・アプリケーションは、アウトバウンド・サーバーと相互作用するためにconnect_user
としてデータベースに接続する必要があります。
ノート:
server_name
値は30バイトを超過できません。 -
-
アウトバウンド・サーバーに接続してLCRを受信するクライアント・アプリケーションを作成して実行します。
クライアント・アプリケーションを実行すると、ダウンストリーム取得CDBでアウトバウンド・サーバーが自動的に起動します。
関連トピック
親トピック: CDBでのXStream Outの構成
XStream Inとマルチテナント環境
マルチテナント環境では、移植可能な一連のスキーマ、オブジェクトおよび関連構造をOracleデータベースに含めることができ、アプリケーションには論理的に別のデータベースのように見えます。
この自己完結型コレクションは、プラガブル・データベース(PDB)と呼ばれます。1つのマルチテナント・コンテナ・データベース(CDB)には複数のPDBが格納されます。アプリケーション・コンテナも含めることができます。アプリケーション・コンテナは、アプリケーション・ルートとそれに関連付けられたすべてのアプリケーションPDBから構成されるCDBのオプション・コンポーネントです。アプリケーション・コンテナには、1つ以上のアプリケーションのデータが格納されています。アプリケーション・コンテナは、アプリケーションのメタデータおよび共通データを共有します。CDBでは、CDBルート、各PDB、各アプリケーション・ルートおよび各アプリケーションPDBのそれぞれがコンテナです。
CDBでは、インバウンド・サーバーは、単一のソース・データベースからLCRを受信して、現在のコンテナ(PDB、アプリケーション・ルート、アプリケーションPDBまたはCDBルート)でのみ変更を実行するように制限されています。単一のインバウンド・サーバーは、CDBの複数のコンテナに変更を適用できません。
インバウンド・サーバーがCDBルートにある場合、適用ユーザーは共通ユーザーである必要があります。インバウンド・サーバーがアプリケーション・ルートにある場合、適用ユーザーは共通ユーザーまたはアプリケーション共通ユーザーである必要があります。インバウンド・サーバーがPDBまたはアプリケーションPDBにある場合、適用ユーザーは共通ユーザーまたはローカル・ユーザーにできます。
ノート:
XStreamでは、アプリケーション・ルート・コンテナで行われた変更を同期しません。アプリケーション・ルート・コンテナで行われた操作のレプリケートにXStream Inレプリケーションを使用しないでください。ターゲットのアプリケーション・ルート・コンテナでのこれらの変更は手動で適用できます。PDBで行われる操作はレプリケートできることに注意してください。
親トピック: CDBでのXStreamの使用