4 XStream Outの構成
XStream Outプロセスで使用されるOracle Databaseコンポーネントを構成できます。
- XStream Outの準備
XStream Outの構成の準備のために、意思決定を行い、タスクを完了する必要があります。 - XStream Outの構成
XStream Out構成のアウトバウンド・サーバーは、Oracleデータベースの変更をクライアント・アプリケーションにストリームします。
4.1 XStream Outの準備
XStream Outの構成の準備のために、意思決定を行い、タスクを完了する必要があります。
- XStream Outの構成方法の決定
XStream Outを構成するとき、データベースの変更を取得してこれらの変更を論理変更レコード(LCR)の形式でアウトバウンド・サーバーに送信するようにXStreamコンポーネントを構成する必要があります。 - XStream Outの構成の前提条件
XStream Outアウトバウンド・サーバーの準備は、Oracle Streamsレプリケーション環境の準備に似ています。
4.1.1 XStream Outの構成方法の決定
XStream Outを構成するとき、データベースの変更を取得してこれらの変更を論理変更レコード(LCR)の形式でアウトバウンド・サーバーに送信するようにXStreamコンポーネントを構成する必要があります。
これらのコンポーネントには、取得プロセスおよび少なくとも1つのキューが含まれます。取得プロセスには、ローカル取得プロセスまたはダウンストリーム取得プロセスを使用できます。一部の構成では伝播も構成する必要があります。
ローカル取得とは、ソース・データベース上で取得プロセスが実行されることを意味します。ソース・データベースは、変更が発生したデータベースです。ダウンストリーム取得とは、ソース・データベース以外のデータベース上で取得プロセスが実行されることを意味します。ダウンストリーム取得を使用する主な理由は、ソース・データベースの負荷を削減して、パフォーマンスを向上させることです。ローカル取得を使用する主な理由は、構成および管理が容易であることです。
ソース・データベースに対する変更を取得するデータベースは、取得データベースと呼ばれます。次のいずれかのデータベースを取得データベースとして使用できます。
-
ソース・データベース(ローカル取得)
-
宛先データベース(ダウンストリーム取得)
-
第3のデータベース(ダウンストリーム取得)
アウトバウンド・サーバーを実行しているデータベースが取得データベースでない場合、伝播によって、取得データベースからアウトバウンド・サーバーを実行しているデータベースに変更が送信されます。アウトバウンド・サーバーを実行しているデータベースが取得データベースである場合、取得プロセスとアウトバウンド・サーバーが同じキューを使用するため、データベース間のこの伝播は不要です。
このコンポーネントは、次の方法で構成できます。
-
ローカル取得およびアウトバウンド・サーバーが同じデータベースに存在する場合:データベース・オブジェクト、取得プロセスおよびアウトバウンド・サーバーがすべて同じデータベース内に存在します。すべてのコンポーネントが1つのデータベースにあるため、構成およびメンテナンスが最も容易な構成です。この構成の概要については、図4-1を参照してください。
-
ローカル取得およびアウトバウンド・サーバーが異なるデータベースに存在する場合:データベース・オブジェクトおよび取得プロセスは1つのデータベースに存在し、アウトバウンド・サーバーは別のデータベースに存在します。伝播によって、ソース・データベースからアウトバウンド・サーバー・データベースにLCRが送信されます。この構成は、構成およびメンテナンスを簡単に行うことができ、アウトバウンド・サーバー・データベースのパフォーマンスを最適化する必要がある場合にお薦めします。この構成の概要については、図4-2を参照してください。
-
ダウンストリーム取得およびアウトバウンド・サーバーが同じデータベースに存在する場合:データベース・オブジェクトは1つのデータベースに存在し、取得プロセスおよびアウトバウンド・サーバーは別のデータベースに存在します。この構成は、データベース・オブジェクトが存在するデータベースのパフォーマンスを最適化し、変更の取得をもう1つのデータベースで行って負荷を軽減する必要がある場合に適しています。この構成では、ほとんどのコンポーネントはアウトバウンド・サーバーを持つデータベースで実行されます。この構成の概要については、図4-3を参照してください。
-
ダウンストリーム取得およびアウトバウンド・サーバーが異なるデータベースに存在する場合:データベース・オブジェクトは1つのデータベースに存在し、アウトバウンド・サーバーは別のデータベースに存在し、取得プロセスは3つ目のデータベースに存在します。この構成は、データベース・オブジェクトを持つデータベースおよびアウトバウンド・サーバーを持つデータベースの両方のパフォーマンスを最適化する場合に最適です。この構成では、取得プロセスが3つ目のデータベースで実行され、伝播によって、取得データベースからアウトバウンド・サーバー・データベースにLCRが送信されます。この構成の概要については、図4-4を参照してください。
次の図は、これらの異なる構成を示しています。
ダウンストリーム取得プロセスを構成する場合は、構成するダウンストリーム取得プロセスのタイプを決定する必要があります。使用可能なタイプは次のとおりです。
-
リアルタイム・ダウンストリーム取得プロセスの構成: ソース・データベースのREDO転送サービスがREDOデータをダウンストリーム・データベースに送信し、ダウンストリーム・データベースのリモート・ファイル・サーバー・プロセス(RFS)でネットワークを介してREDOデータを受け取り、スタンバイREDOログにREDOデータを格納します。取得プロセスは変更をリアルタイムで取得します。
-
アーカイブ・ログ・ダウンストリーム取得プロセス構成: この構成では、ソース・データベースからのアーカイブREDOログ・ファイルがダウンストリーム・データベースにコピーされ、取得プロセスによってこれらのアーカイブREDOログ・ファイル内の変更が取得されます。これらのログ・ファイルは、REDO転送サービスを使用して自動的に転送することも、FTPなどの方法を使用して手動で転送することもできます。
アーカイブ・ログ・ダウンストリーム取得と比較すると、リアルタイム・ダウンストリーム取得には、ソース・データベースで行われた変更を短時間で取得できるというメリットがあります。リアルタイム・ダウンストリーム取得プロセスでは、REDOログ・ファイルがアーカイブされるまで待たずにREDOログ・ファイルから変更を取得できるため、時間が短縮されます。1つのダウンストリーム・データベースで、同じソース・データベースから変更を取得する複数のリアルタイム・ダウンストリーム取得プロセスを構成することはできますが、複数のソース・データベースに対するリアルタイム・ダウンストリーム取得を構成することはできません。
リアルタイム・ダウンストリーム取得と比較すると、アーカイブ・ログ・ダウンストリーム取得には、複数のソース・データベースに対するダウンストリーム取得プロセスを1つのダウンストリーム・データベースで使用できるというメリットがあります。REDOログ・ファイルを複数のソース・データベースから単一のダウンストリーム・データベースにコピーし、それらのREDOログ・ファイル内の変更を複数のアーカイブ・ログ・ダウンストリーム取得プロセスで取得するように構成できます。
関連項目:
4.1.2 XStream Outの構成の前提条件
XStream Outアウトバウンド・サーバーの準備は、Oracle Streamsレプリケーション環境の準備に似ています。
変更を取得して適用プロセスに送信するためのOracle Streamsレプリケーション環境で使用されるコンポーネントは、変更を取得してアウトバウンド・サーバーに送信するために使用されるコンポーネントと同じです。これらのコンポーネントには、取得プロセスと1つ以上のキューが含まれます。取得プロセスがアウトバウンド・サーバーとは異なるデータベース上で実行される場合は伝播も必要です。
この項で説明するタスクの一部は、Oracle Streamsレプリケーション管理者ガイドで詳しく説明されています。この項では各タスクの概要と、XStream Out構成用のタスクの実行に関する特定の情報を提供します。
- すべてのデータベースでのXStream管理者の構成
XStream管理者は、XStream Out環境でXStreamコンポーネントを構成および管理します。 - XStream管理者への追加権限の付与
XStream管理者に追加権限が必要な場合があります。 - 必要な場合のネットワーク接続およびデータベース・リンクの構成
XStream Out構成に複数のデータベースが含まれている場合は、ネットワーク接続性やデータベース・リンクが必要です。 - 各ソース・データベースがARCHIVELOGモードであることの確認
取得プロセスによって取得される変更を生成する各ソース・データベースはARCHIVELOG
モードである必要があります。 - 関連する初期化パラメータの設定
一部の初期化パラメータは、XStream構成でのコンポーネントの構成、操作、信頼性およびパフォーマンスにとって重要です。これらのパラメータを適切に設定します。 - Streamsプールの構成
Streamsプールは、Oracle StreamsとXStreamコンポーネントの両方で使用されるシステム・グローバル領域(SGA)内のメモリーの一部です。 - 必要な場合のサプリメンタル・ロギングの構成
取得プロセスを使用して変更を取得する場合は、列に対する変更が宛先データベースで正常に適用されるように、ソース・データベースで特定の列にサプリメンタル・ロギングを指定する必要があります。 - 必要な場合のダウンストリーム・データベースへのログ・ファイル転送の構成
ローカル取得プロセスを使用するように決定した場合は、ログ・ファイルの転送は不要です。ただし、REDO転送サービスを使用してアーカイブREDOログ・ファイルをダウンストリーム・データベースに自動的に転送するダウンストリーム取得を使用するように決定した場合は、ソース・データベースから取得データベースへのログ・ファイルの転送を構成します。 - 必要な場合のリアルタイム・ダウンストリーム取得のためのスタンバイREDOログの追加
リアルタイム・ダウンストリーム取得を構成する場合、スタンバイREDOログを取得データベースに追加します。
4.1.2.1 すべてのデータベースでのXStream管理者の構成
XStream管理者は、XStream Out環境でXStreamコンポーネントを構成および管理します。
ユーザーに適切な権限を付与することによって、XStream管理者を構成できます。XStream構成に含まれる各OracleデータベースでXStream管理者を構成する必要があります。
前提条件
XStream管理者を構成する前に、次の前提条件が満たされていることを確認します。
-
ユーザーの作成、権限の付与および表領域の作成ができる管理ユーザーとしてXStream構成の各データベースにログインできることを確認してください。
-
セキュリティについての信頼できるユーザー・モデルと信頼されないユーザー・モデルのどちらとするかを決定します。詳細は、XStreamのセキュリティ・モデルを参照してください。
-
XStream管理者になるユーザーを特定します。適切な権限を持つ新規ユーザーを作成するか、これらの権限を既存のユーザーに付与します。
SYS
またはSYSTEM
ユーザーをXStream管理者として使用しないでください。また、XStream管理者は、デフォルト表領域としてSYSTEM
表領域を使用しないようにしてください。 -
XStream管理者に新しい表領域が必要な場合、XStream構成の各コンピュータ・システム上に、表領域のためのディスクの空き領域が十分あることを確認します。表領域の推奨サイズは25MBです。
-
DBMS_XSTREAM_AUTH
パッケージのサブプログラムを実行するユーザーにはSYSDBA
管理権限が必要であり、接続時にAS SYSDBA
を使用してこの権限を行使する必要があります。
前提条件
この項では、次のことを想定しています。
-
XStream管理者のユーザー名は、非CDBの場合は
xstrmadmin
です。XStream管理者のユーザー名は、マルチテナント・コンテナ・データベース(CDB)の場合はc##xstrmadmin
です。 -
XStream管理者によって使用される表領域は、
xstream_tbs
です。
XStream管理者を構成するには、次の手順を実行します。
-
SQL*Plusで、ユーザーの作成、権限の付与および表領域の作成を行うことができる管理ユーザーとして接続します。これ以降のすべての手順は、この管理ユーザーとして接続したまま実行します。
CDB内のXStream OutのためのXStream管理者を構成する場合、rootに接続し、CDBルートでXStream管理者を構成します。
関連項目:
-
SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。
-
XStream OutおよびCDBの詳細は、XStream Outおよびマルチテナント環境を参照してください。
-
-
XStream管理者用の表領域を作成するか、既存の表領域を使用します。
この表領域には、XStream管理者のスキーマに作成されたあらゆるオブジェクトが格納されます。
たとえば、次の文では、XStream管理者用の新規表領域が作成されます。
CREATE TABLESPACE xstream_tbs DATAFILE '/usr/oracle/dbs/xstream_tbs.dbf' SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
CDB内でXStream管理者を作成する場合、CDBルート、すべてのプラガブル・データベース、すべてのアプリケーション・ルートおよびすべてのアプリケーション・コンテナ(PDB)を含む、CDB内のすべてのコンテナに表領域を作成する必要があります。XStream管理者は共通ユーザーである必要があり、したがってすべてのコンテナの表領域へのアクセス権を持つ必要があるため、表領域はすべてのコンテナで必要です。
-
XStream管理者として機能する新しいユーザーを作成するか、既存のユーザーを指定します。
たとえば、ユーザー
xstrmadmin
を作成し、このユーザーがxstream_tbs
表領域を使用するように指定するには、次の文を実行します。CREATE USER xstrmadmin IDENTIFIED BY password DEFAULT TABLESPACE xstream_tbs QUOTA UNLIMITED ON xstream_tbs;
CDBでXStream管理者を作成する場合、XStream管理者は共通ユーザーである必要があります。したがって、
CREATE
USER
文にCONTAINER=ALL
句を含めます。CREATE USER c##xstrmadmin IDENTIFIED BY password DEFAULT TABLESPACE xstream_tbs QUOTA UNLIMITED ON xstream_tbs CONTAINER=ALL;
注意:
管理ユーザーの適切なパスワードを入力します。
関連項目:
パスワード選択のガイドラインについては、Oracle Databaseセキュリティ・ガイドを参照してください
-
XStream管理者に
CREATE
SESSION
権限を付与します。XStream管理者として機能する新しいユーザーを作成した場合、このユーザーに
CREATE
SESSION
権限を付与します。たとえば、ユーザー
xstrmadmin
にCREATE
SESSION
権限を付与するには、次の文を実行します。GRANT CREATE SESSION TO xstrmadmin;
CDB内でXStream管理者を作成する場合、XStream管理者に
CREATE
SESSION
権限およびSET
CONTAINER
権限を付与し、CONTAINER=ALL
句を文に含めます。たとえば、CDBでユーザー
c##xstrmadmin
にこれらの権限を付与するには、次の文を実行します。GRANT CREATE SESSION, SET CONTAINER TO c##xstrmadmin CONTAINER=ALL;
-
DBMS_XSTREAM_AUTH
パッケージのGRANT_ADMIN_PRIVILEGE
プロシージャを実行します。ユーザー作成サブプログラム内のパッケージのサブプログラムを実行する場合、ユーザーには、パッケージに対する
EXECUTE
権限が明示的に付与されていることが必要です。また、ユーザー作成サブプログラム内のビューを問い合せる場合は、そのデータ・ディクショナリ・ビューに対する明示的なREAD
またはSELECT
権限が必要です。これらの権限は、ロールを通じて付与できません。これらの権限をXStream管理者に付与するには、GRANT_ADMIN_PRIVILEGE
プロシージャを実行するか、または権限を直接付与します。GRANT_ADMIN_PRIVILEGE
プロシージャのパラメータの設定によっては、信頼できるまたは信頼できないXStream管理者の適切な権限を付与でき、非CDBまたはCDBで権限を付与できます。表4-1はそれぞれのケースについてのキー・パラメータ設定を示します。表4-1 GRANT_ADMIN_PRIVILEGEのキー・パラメータ設定
XStream管理者のタイプ grant_select_privilegesのパラメータ設定 containerのパラメータ設定 非CDBで信頼できる管理者
TRUE
CURRENT
(デフォルト)非CDBで信頼できない管理者
FALSE
(デフォルト)CURRENT
(デフォルト)CDBで信頼できる管理者
TRUE
ALL
CDBで信頼できない管理者
FALSE
(デフォルト)ALL
注意:
-
いずれのシナリオの場合でも、XStream管理者がデータベースでXStream OutおよびXStream In構成の両方を管理する必要がある場合、
privilege_type
パラメータに*
を指定します。 -
CDBでは、
container
パラメータにALL
が指定されている場合、現在のコンテナはCDBルート(CDB$ROOT
)である必要があります。
-
-
必要に応じて、XStream管理者に追加の権限を付与します。
XStream管理者への追加権限の付与を参照してください。
-
XStreamを使用する環境内の各Oracleデータベースで前述のすべての手順を繰り返します。
例4-1 非CDBの信頼できるXStream管理者に対する権限の付与(スクリプトの生成なし)
BEGIN DBMS_XSTREAM_AUTH.GRANT_ADMIN_PRIVILEGE( grantee => 'xstrmadmin', privilege_type => 'CAPTURE', grant_select_privileges => TRUE); END; /
例4-2 非CDBの信頼できるXStream管理者に対する権限の付与(スクリプトの生成あり)
directory_name
パラメータに指定したディレクトリが存在し、現在のユーザーがアクセスできる必要があります。
BEGIN DBMS_XSTREAM_AUTH.GRANT_ADMIN_PRIVILEGE( grantee => 'xstrmadmin', privilege_type => 'CAPTURE', grant_select_privileges => TRUE, do_grants => TRUE, file_name => 'grant_xstrm_privs.sql', directory_name => 'xstrm_dir'); END; /
例4-3 非CDBの信頼できないXStream管理者に対する権限の付与(スクリプトの生成なし)
BEGIN DBMS_XSTREAM_AUTH.GRANT_ADMIN_PRIVILEGE( grantee => 'xstrmadmin', privilege_type => 'CAPTURE', grant_select_privileges => FALSE); END; /
例4-4 CDBの信頼できるXStream管理者に対する権限の付与(スクリプトの生成なし)
BEGIN DBMS_XSTREAM_AUTH.GRANT_ADMIN_PRIVILEGE( grantee => 'c##xstrmadmin', privilege_type => 'CAPTURE', grant_select_privileges => TRUE, container => 'ALL'); END; /
4.1.2.2 XStream管理者への追加権限の付与
XStream管理者に追加権限が必要な場合があります。
必要に応じて、次の追加権限をXStream管理者に付与します。
-
Oracle Enterprise Manager Cloud Controlを使用して、XStreamコンポーネントを持つデータベースを管理する場合、XStream管理者は信頼できるユーザーである必要があり、
DBA
ロールが付与される必要があります。また、XStream管理者がOracle Enterprise Manager管理ユーザーになるように構成する必要があります。これにより、Oracle Enterprise Manager Cloud Controlジョブの実行に必要な権限など、Oracle Enterprise Manager Cloud Controlで必要な追加の権限が付与されます。Oracle Enterprise Manager管理ユーザーの作成については、Oracle Enterprise Manager Cloud Controlのオンライン・ヘルプを参照してください。 -
ローカル・データベースでアクションを実行する権限をリモートのXStream管理者に付与します。これらの権限を付与するには、
DBMS_XSTREAM_AUTH
パッケージのGRANT_REMOTE_ADMIN_ACCESS
プロシージャを使用します。この権限は、リモートのXStream管理者が、ローカルのXStream管理者に接続して管理アクションを実行するデータベース・リンクを使用する場合に付与します。具体的には、次のいずれかの条件に該当する場合にこれらの権限を付与します。-
ローカル・ソース・データベースで発生した変更を取得するリモート・ダウンストリーム・データベースでダウンストリーム取得プロセスを構成し、そのダウンストリーム取得プロセスでデータベース・リンクを使用してソース・データベースで管理アクションを実行する。
-
リモートXStream管理者を使用して、ローカル・データベースのレプリケートされたデータベース・オブジェクトにインスタンス化システム変更番号(SCN)値を設定する。
-
-
取得プロセス、伝播、またはアウトバウンド・サーバーで使用されるルールにカスタム・ルールベースの変換で指定されている、他ユーザー所有のすべてのPL/SQLファンクションに対する
EXECUTE
権限をXStream管理者に付与します。取得プロセスで取得ユーザーが指定されている場合、その取得ユーザーにはこれらの権限が必要です。これらの権限は、直接付与する必要があります。ロールを介して付与することはできません。 -
必要に応じて、データベース・オブジェクトを変更する権限をXStream管理者に付与します。たとえば、XStream管理者が別のスキーマ内の表にサプリメンタル・ログ・グループを作成する必要がある場合、XStream管理者にはその表を変更する権限が必要です。これらの権限は、直接またはロールを介して付与できます。
-
XStream管理者が取得プロセス、伝播、またはアウトバウンド・サーバーによって使用されるキューを所有しておらず、キューの作成時にそのキューのキュー・ユーザーとして指定されていない場合、XStream管理者がLCRをキューにエンキューしたり、キューからデキューできるようにするには、XStream管理者をそのキューの保護キュー・ユーザーとして構成する必要があります。また、XStream管理者には、そのキューに対する
ENQUEUE
権限またはDEQUEUE
権限(あるいはその両方)が必要な場合があります。キューを管理する方法の詳細は、Oracle Streams概要および管理を参照してください。 -
XStream管理者がアクセスする必要がある場合がある任意のオブジェクト・タイプに対する
EXECUTE
権限をXStream管理者に付与します。これらの権限は、直接またはロールを介して付与できます。 -
Oracle Database Vaultを使用している場合、取得プロセスの作成、アウトバウンド・サーバーの作成および取得プロセスのための取得ユーザーの変更というタスクを実行するために、XStream管理者に
DV_XSTREAM_ADMIN
ロールを付与する必要があります。XStream管理者がこれらのタスクを実行しない場合は、XStream管理者のDV_XSTREAM_ADMIN
ロールを取り消すことができます。また、次の操作を実行するユーザーに
BECOME
USER
システム権限を付与する必要があります。-
取得プロセスの作成または変更
-
アウトバウンド・サーバーの作成または変更
Oracle Database Vaultがインストールされていない場合は、これらのアクションを実行するユーザーに
BECOME
USER
システム権限を付与する必要はありません。必要に応じて、これらのいずれかのアクションの完了後に、ユーザーのBECOME
USER
システム権限を取り消すことができます。Oracle Database Vault管理者ガイドを参照してください。
-
4.1.2.3 必要な場合のネットワーク接続およびデータベース・リンクの構成
XStream Out構成に複数のデータベースが含まれている場合は、ネットワーク接続とデータベース・リンクが必要です。
すべてのコンポーネントが同じデータベースで実行される場合、ネットワーク接続もデータベース・リンクも必要ありません。これらのコンポーネントには、取得プロセス、キューおよびアウトバウンド・サーバーが含まれています。
次のいずれかの方法でXStreamを構成する場合は、ネットワーク接続とデータベース・リンクを構成する必要があります。
-
取得プロセスおよびアウトバウンド・サーバーが別のデータベースで実行される。
-
ダウンストリーム取得が使用される。
これらの決定の詳細は、「XStream Outの構成方法の決定」を参照してください。
ネットワーク接続が必要な場合、データベースで相互に通信できるようにネットワークとOracle Netを構成します。
次のデータベース・リンクが必要です。
-
取得プロセスがアウトバウンド・サーバーとは異なるデータベースで実行されている場合、取得データベースからアウトバウンド・サーバー・データベースへのデータベース・リンクを作成します。伝播はこのデータベース・リンクを使用して、取得データベースからアウトバウンド・サーバー・データベースに変更を送信します。
-
ダウンストリーム取得を使用する場合は、取得データベースからソース・データベースへのデータベース・リンクを作成します。ソース・データベースは、取得プロセスが変更を取得するために使用するREDOデータを生成するデータベースです。取得プロセスはこのデータベース・リンクを使用して、ソース・データベースで管理タスクを実行します。
各データベース・リンクの名前は宛先データベースのグローバル名と一致する必要があり、各データベース・リンクは、XStream管理者のスキーマに作成する必要があります。
たとえば、次の特性を持つ構成でデータベース・リンクを作成するとします。
-
ソース・データベースのグローバル名は
dbs1.example.com
です。 -
宛先データベースのグローバル名は
dbs2.example.com
です。 -
XStream管理者はそれぞれのデータベースで
xstrmadmin
です。
前述の前提で、次の文ではdbs1.example.com
からdbs2.example.com
へのデータベース・リンクが作成されます。
CONNECT xstrmadmin@dbs1.example.com Enter password: password CREATE DATABASE LINK dbs2.example.com CONNECT TO xstrmadmin IDENTIFIED BY password USING 'dbs2.example.com';
関連項目:
-
データベース・リンクの詳細は、Oracle Database管理者ガイドを参照してください。
4.1.2.4 各ソース・データベースがARCHIVELOGモードであることの確認
取得プロセスによって取得される変更を生成する各ソース・データベースはARCHIVELOG
モードである必要があります。
ダウンストリーム取得プロセスでは、リアルタイム・ダウンストリーム取得プロセスを構成する場合、ダウンストリーム・データベースもARCHIVELOG
モードである必要があります。ダウンストリーム・データベースでアーカイブ・ログ・ダウンストリーム取得プロセスのみを実行する場合は、ダウンストリーム・データベースをARCHIVELOG
モードにする必要はありません。
Oracle Real Application Clusters (Oracle RAC)環境でXStreamを構成している場合は、すべてのインスタンスからのすべてのスレッドのアーカイブREDOログ・ファイルが、取得プロセスを実行するインスタンスから使用できる必要があります。この要件は、ローカルおよびダウンストリーム取得プロセスの両方に関連します。
関連項目:
ARCHIVELOG
モードでデータベースを実行する手順については、Oracle Database管理者ガイドを参照してください
4.1.2.5 関連する初期化パラメータの設定
一部の初期化パラメータは、XStream構成でのコンポーネントの構成、操作、信頼性およびパフォーマンスにとって重要です。これらのパラメータを適切に設定します。
XStreamアウトバウンド・サーバーには次の要件が適用されます。
-
PROCESSES
初期化パラメータが、アウトバウンド・サーバーのバックグラウンド・プロセスとその他のOracle Databaseバックグラウンド・プロセスすべてを受け入れるのに十分な大きさの値に設定されていることを確認してください。 -
SESSIONS
初期化パラメータが、アウトバウンド・サーバーのバックグラウンド・プロセスによって使用されるセッションとその他のすべてのOracle Databaseセッションを受け入れるのに十分な大きさの値に設定されていることを確認してください。
4.1.2.6 Streamsプールの構成
Streamsプールは、Oracle StreamsおよびXStreamコンポーネントの両方で使用されるシステム・グローバル領域(SGA)内のメモリーの一部です。
Streamsプールは、バッファ・キューLCRをメモリー内に格納し、取得プロセスおよびアウトバウンド・サーバーにメモリーを提供します。
Streamsプールの構成に関する考慮事項は次のとおりです。
-
Streamsプールには300MB以上のメモリーが必要です。
-
XStream Outを構成したら、
max_sga_size
取得プロセス・パラメータを使用して、取得プロセス専用に割り当てられたシステム・グローバル領域(SGA)メモリーの量を制御できます。データベース上のすべてのコンポーネントに割り当てられたシステムグローバル領域(SGA)メモリーは、合計で
STREAMS_POOL_SIZE
初期化パラメータに設定されている値未満である必要があります。 -
XStream Outを構成したら、
max_sga_size
適用パラメータを使用して、アウトバウンド・サーバー専用に割り当てられるSGAメモリーの量を制御できます。 -
各データベースのStreamsプールに、XStreamコンポーネントを実行してLCRを格納し、コンポーネントを正しく実行するために十分な容量があることを確認してください。
-
Streamsプールは、アウトバウンド・サーバーが最初に起動されるときに初期化されます。
-
ベスト・プラクティスは、
STREAMS_POOL_SIZE
初期化パラメータを必要なStreamsプール・サイズに明示的に設定することです。
次の条件が満たされる場合、自動共有メモリー管理機能によってStreamsプールのサイズが自動的に管理されます。
-
MEMORY_TARGET
およびMEMORY_MAX_TARGET
初期化パラメータの両方が0
(ゼロ)に設定されている。 -
SGA_TARGET
初期化パラメータが0(ゼロ)以外の値に設定されている。
次の条件が満たされる場合、Streamsプール・サイズはSTREAMS_POOL_SIZE
パラメータによって指定される値(バイト単位)になります。
-
MEMORY_TARGET
、MEMORY_MAX_TARGET
およびSGA_TARGET
初期化パラメータがすべて0
(ゼロ)に設定されている。 -
STREAMS_POOL_SIZE
初期化パラメータが0(ゼロ)以外の値に設定されている。
自動共有メモリー管理を使用している場合に、STREAMS_POOL_SIZE
初期化パラメータも0(ゼロ)以外の値に設定すると、自動共有メモリー管理でその値がOracle Streamsプールの最小値として使用されます。環境が適切に動作するためにOracle Streamsプールに最小メモリー量が必要な場合は、最小サイズを設定できます。自動共有メモリー管理によってOracle Streamsプールに割り当てられている現行のメモリーを表示するには、V$SGA_DYNAMIC_COMPONENTS
ビューを問い合せます。また、V$STREAMS_POOL_STATISTICS
ビューを問い合せて、Oracle Streamsプールの現在の使用状況を表示できます。
関連項目:
-
max_sga_size
取得プロセス・パラメータの詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスを参照してください
4.1.2.7 必要な場合のサプリメンタル・ロギングの構成
取得プロセスを使用して変更を取得する場合は、列に対する変更が宛先データベースで正常に適用されるように、ソース・データベースで特定の列にサプリメンタル・ロギングを指定する必要があります。
サプリメンタル・ロギングによって、これらの列に関する追加の情報がREDOログに記録されます。この追加の情報は、取得プロセスによって取得されて論理変更レコード(LCR)に含められ、XStreamインバウンド・サーバーまたはクライアント・アプリケーションによって変更を適切に処理するために必要とされる場合があります。
- XStream環境内の必要なサプリメンタル・ロギング
サプリメンタル・ロギングには、データベース・サプリメンタル・ロギングと表サプリメンタル・ロギングの2種類があります。 - 無条件ログ・グループを使用した表サプリメンタル・ロギングの指定
無条件ログ・グループを使用してサプリメンタル・ロギングを指定できます。 - 条件付きログ・グループを使用した表サプリメンタル・ロギングの指定
条件付きログ・グループを使用して表サプリメンタル・ロギングを指定できます。 - サプリメンタル・ログ・グループの削除
条件付きまたは無条件のサプリメンタル・ログ・グループを削除するには、ALTER
TABLE
文にDROP
SUPPLEMENTAL
LOG
GROUP
句を使用します。 - キー列のデータベース・サプリメンタル・ロギングの指定
ソース・データベース内のすべての主キー列、一意キー列、ビットマップ索引列および外部キー列について、サプリメンタル・ロギングを指定するオプションがあります。 - キー列のデータベース・サプリメンタル・ロギングの削除
ソース・データベース内のすべての主キー列、一意キー列、ビットマップ索引列および外部キー列のサプリメンタル・ロギングを削除するには、ALTER
DATABASE
DROP
SUPPLEMENTAL
LOG
DATA
文を発行します。 - サプリメンタル・ロギングを自動的に指定するプロシージャ
DBMS_CAPTURE_ADM
パッケージの一部のプロシージャでは、サプリメンタル・ロギングが自動的に指定されます。
4.1.2.7.1 XStream環境内の必要なサプリメンタル・ロギング
サプリメンタル・ロギングには、データベース・サプリメンタル・ロギングと表サプリメンタル・ロギングの2種類があります。
データベース・サプリメンタル・ロギングではデータベース全体のサプリメンタル・ロギングが指定されますが、表サプリメンタル・ロギングでは、特定の表のサプリメンタル・ロギングに使用するログ・グループを指定できます。表サプリメンタル・ロギングを使用する場合は、無条件ログ・グループと条件付きログ・グループのどちらかを選択できます。
無条件ログ・グループでは、表が変更されると、指定した列が変更の影響を受けるかどうかに関係なく、その列のビフォア・イメージがログに記録されます。無条件ログ・グループは、「常時ログ・グループ」と呼ばれることがあります。条件付きログ・グループでは、ログ・グループ内の少なくとも1列が変更される場合にのみ、指定したすべての列のビフォア・イメージがログに記録されます。
データベース・レベルのサプリメンタル・ロギング、表レベルの無条件ログ・グループおよび表レベルの条件付きログ・グループによって、変更ログに記録する古い値が決定されます。
取得プロセスによって取得されたLCRを、1つ以上のXStreamインバウンド・サーバーを使用して適用する予定の場合は、宛先データベースの表内にある次のタイプの列について、ソース・データベースでサプリメンタル・ロギングを使用可能にする必要があります。
-
宛先データベースで変更が適用される表の主キーに使用されるソース・データベースの列はすべて、ログ・グループに無条件でログを記録するか、主キー列のデータベース・サプリメンタル・ロギングによってログを記録する必要があります。
-
変更を適用するインバウンド・サーバーの並列性が1より大きい場合、ソース・データベースの複数の列に基づく宛先データベースの一意制約列は、条件付きでログに記録する必要があります。一意制約列がソース・データベースの1つの列に基づく場合は、サプリメンタル・ロギングを指定する必要はありません。
-
変更を適用するインバウンド・サーバーの並列性が1より大きい場合、ソース・データベースの複数の列に基づく宛先データベースの外部キー列は、条件付きでログに記録する必要があります。外部キー列がソース・データベースの1つの列に基づく場合は、サプリメンタル・ロギングを指定する必要はありません。
-
変更を適用するインバウンド・サーバーの並列性が1より大きい場合、ソース・データベースの複数の列に基づく宛先データベースのビットマップ索引列は、条件付きでログに記録する必要があります。ビットマップ索引列がソース・データベースの1つの列に基づく場合は、サプリメンタル・ロギングを指定する必要はありません。
-
宛先データベースでインバウンド・サーバーの代替キー列として使用されるソース・データベースの列は、無条件でログに記録する必要があります。表の代替キー列を指定するには、
DBMS_APPLY_ADM
パッケージのSET_KEY_COLUMNS
プロシージャを使用します。 -
ソース・データベースの複数の列が宛先データベースの列リストに使用されている場合、適用時に競合解消用の列リストで指定された列は、条件付きでログに記録する必要があります。
-
宛先データベースの文DMLハンドラ、変更ハンドラ、プロシージャDMLハンドラまたはエラー・ハンドラで使用されるソース・データベースの列は、無条件でログに記録する必要があります。
-
ルールまたはルールベースの変換で使用されるソース・データベースの列は、無条件でログに記録する必要があります。
-
宛先データベースで値の仮想依存性定義に指定されているソース・データベースの列は、無条件でログに記録する必要があります。
-
宛先データベースで表の行のサブセット化を指定する場合は、宛先表に含まれるソース・データベースの列またはサブセット条件に含まれるソース・データベースの列を、無条件でログに記録する必要があります。インバウンド・サーバーの行のサブセット化条件を指定するには、
DBMS_XSTREAM_ADM
パッケージのADD_SUBSET_RULES
プロシージャでdml_condition
パラメータを使用します。
ソース・データベースでこれらのタイプの列にサプリメンタル・ロギングを使用しないと、これらの列が関係する変更は宛先データベースで正しく適用されない可能性があります。
注意:
LOB、LONG
、LONG
RAW
、ユーザー定義型(オブジェクト型、REF
、VARRAY、ネストした表など)およびOracle提供の型(Any
型、XML型、空間型、メディア型など)のデータ型の列は、サプリメンタル・ログ・グループに含めることはできません。
4.1.2.7.2 無条件ログ・グループを使用した表サプリメンタル・ロギングの指定
無条件ログ・グループを使用してサプリメンタル・ロギングを指定できます。
表の主キー列のみを含む無条件のサプリメンタル・ログ・グループを指定するには、ADD
SUPPLEMENTAL
LOG
DATA
句にPRIMARY
KEY
オプションを指定してALTER
TABLE
文を実行します。たとえば、次の文ではシステム生成名を使用して、無条件のログ・グループにhr.regions
表の主キー列が追加されます。
ALTER TABLE hr.regions ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
表のすべての列を含む無条件のサプリメンタル・ログ・グループを指定するには、ADD
SUPPLEMENTAL
LOG
DATA
句にALL
オプションを指定して、ALTER
TABLE
文を実行します。たとえば、次の文ではシステム生成名を使用して、無条件のログ・グループにhr.regions
表のすべての列が追加されます。
ALTER TABLE hr.regions ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
ユーザーが選択した列を含む無条件のサプリメンタル・ログ・グループを指定するには、ADD
SUPPLEMENTAL
LOG
GROUP
句にALWAYS
を指定して、ALTER
TABLE
文を使用します。これらのログ・グループにはキー列を含めることができます(必要な場合)。
たとえば、次の文では、無条件のログ・グループlog_group_dep_pk
にhr.departments
表のdepartment_id
列およびmanager_id
列が追加されます。
ALTER TABLE hr.departments ADD SUPPLEMENTAL LOG GROUP log_group_dep_pk (department_id, manager_id) ALWAYS;
ALWAYS
指定があるため、このログ・グループは無条件のログ・グループになります。
4.1.2.7.3 条件付きログ・グループを使用した表サプリメンタル・ロギングの指定
条件付きログ・グループを使用して表サプリメンタル・ロギングを指定できます。
ALTER
TABLE
文のADD
SUPPLEMENTAL
LOG
DATA
句で、次のオプションを使用できます。
-
FOREIGN
KEY
オプション: 表の外部キー列を含む条件付きログ・グループが作成されます。 -
UNIQUE
オプション: 表の一意キー列およびビットマップ索引列を含む条件付きログ・グループが作成されます。
1つのALTER
TABLE
文に複数のオプションを指定する場合、各オプションに対して個別の条件付きログ・グループが作成されます。
たとえば、次の文では、2つの条件付きログ・グループが作成されます。
ALTER TABLE hr.employees ADD SUPPLEMENTAL LOG DATA (UNIQUE, FOREIGN KEY) COLUMNS;
一方の条件付きログ・グループには表の一意キー列およびビットマップ索引列が含まれ、他方には表の外部キー列が含まれます。どちらのログ・グループもシステム生成名を持ちます。
注意:
UNIQUE
オプションを指定した場合、ビットマップ結合索引列のサプリメンタル・ロギングは有効になりません。
追加するように選択したすべての列を含む条件付きのサプリメンタル・ログ・グループを指定するには、ADD
SUPPLEMENTAL
LOG
GROUP
句を指定して、ALTER
TABLE
文を実行します。ログ・グループを条件付きにするには、ALWAYS
指定を含めないでください。
たとえば、hr.jobs
表のmin_salary
およびmax_salary
列が、宛先データベースで競合解消用の列リストに含まれているとします。次の文では、min_salary
およびmax_salary
列が条件付きのログ・グループlog_group_jobs_cr
に追加されます。
ALTER TABLE hr.jobs ADD SUPPLEMENTAL LOG GROUP log_group_jobs_cr (min_salary, max_salary);
4.1.2.7.4 サプリメンタル・ログ・グループの削除
条件付きまたは無条件のサプリメンタル・ログ・グループを削除するには、ALTER
TABLE
文にDROP
SUPPLEMENTAL
LOG
GROUP
句を使用します。
たとえば、サプリメンタル・ログ・グループlog_group_jobs_cr
を削除するには、次の文を実行します。
ALTER TABLE hr.jobs DROP SUPPLEMENTAL LOG GROUP log_group_jobs_cr;
4.1.2.7.5 キー列のデータベース・サプリメンタル・ロギングの指定
ソース・データベース内のすべての主キー列、一意キー列、ビットマップ索引列および外部キー列について、サプリメンタル・ロギングを指定するオプションがあります。
データベース全体に対する変更を取得するように取得プロセスを構成する場合は、このオプションを選択できます。ソース・データベース内のすべての主キー列、一意キー列、ビットマップ索引列および外部キー列のサプリメンタル・ロギングを指定するには、次のSQL文を発行します。
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE, FOREIGN KEY) COLUMNS;
主キー列、一意キー列、ビットマップ索引列および外部キー列がすべてのソース・データベースと宛先データベースで同一の場合に、このコマンドをソース・データベースで実行すると、すべての宛先データベースで主キー列、一意キー列、ビットマップ索引列および外部キー列に必要なサプリメンタル・ロギングが提供されます。PRIMARY
KEY
オプションを指定した場合に、表が変更されると、行の主キーのすべての列がREDOログ・ファイルに記録されます(無条件ロギング)。UNIQUE
オプションを指定した場合に、一意キーまたはビットマップ索引に属するいずれかの列が変更されると、行の一意キーおよびビットマップ索引のすべての列がREDOログ・ファイルに記録されます(条件付きロギング)。FOREIGN
KEY
オプションを指定した場合に、外部キーに属するいずれかの列が変更されると、行の外部キーのすべての列がREDOログ・ファイルに記録されます(条件付きロギング)。
これらのオプションの1つ以上を省略できます。たとえば、データベースのすべての外部キー列に対してサプリメンタル・ロギングが必要でない場合、次の例に示すとおり、FOREIGN
KEY
オプションを省略できます。
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE) COLUMNS;
PRIMARY
KEY
、UNIQUE
およびFOREIGN
KEY
のみでなく、ALL
オプションを使用することもできます。ALL
オプションを指定すると、行が変更された場合に、その行のすべての列(LOB、LONG
、LONG
RAW
、ユーザー定義型およびOracleが提供する型の列を除く)がREDOログ・ファイルに記録されます(無条件ロギング)。
サプリメンタル・ロギング文は累積的に実行されます。異なる識別キーを指定して2つのALTER
DATABASE
ADD
SUPPLEMENTAL
LOG
DATA
文を連続して発行すると、どちらのキーに対してもサプリメンタル・ロギングが行われます。
注意:
UNIQUE
オプションを指定した場合、ビットマップ結合索引列のサプリメンタル・ロギングは有効になりません。
関連項目:
データ型の詳細は、Oracle Database SQL言語リファレンスを参照してください。
4.1.2.7.6 キー列のデータベース・サプリメンタル・ロギングの削除
ソース・データベース内のすべての主キー列、一意キー列、ビットマップ索引列および外部キー列のサプリメンタル・ロギングを削除するには、ALTER
DATABASE
DROP
SUPPLEMENTAL
LOG
DATA
文を発行します。
たとえば、すべての主キー列、一意キー列、ビットマップ索引列および外部キー列のデータベース・サプリメンタル・ロギングを削除するには、次のSQL文を発行します。
ALTER DATABASE DROP SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE, FOREIGN KEY) COLUMNS;
注意:
キー列のデータベース・サプリメンタル・ロギングを削除しても、既存の表レベルのサプリメンタル・ログ・グループには影響しません。
4.1.2.7.7 サプリメンタル・ロギングを自動的に指定するプロシージャ
DBMS_CAPTURE_ADM
パッケージの一部のプロシージャでは、サプリメンタル・ロギングが自動的に指定されます。
DBMS_CAPTURE_ADM
パッケージの次のプロシージャでは、サプリメンタル・ロギングが自動的に指定されます。
BUILD
プロシージャでは、ALTER
DATABASE
ADD
SUPPLEMENTAL
LOG
DATA
文を実行することで、データベース・サプリメンタル・ロギングが自動的に指定されます。ほとんどの場合、BUILD
プロシージャは取得プロセスの作成時に自動的に実行されます。
PREPARE_GLOBAL_INSTANTIATION
、PREPARE_SCHEMA_INSTANTIATION
およびPREPARE_TABLE_INSTANTIATION
プロシージャでは、インストール用に準備された表の主キー列、一意キー列、ビットマップ索引列および外部キー列のサプリメンタル・ロギングが自動的に指定されます。
DBMS_XSTREAM_ADM
パッケージ内の特定のプロシージャは、前にリストした、ADD_SUBSET_RULES
、ADD_TABLE_RULES
、ADD_SCHEMA_RULES
、ADD_GLOBAL_RULES
などのプロシージャを自動的に実行します。
関連項目:
これらのプロシージャの詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスを参照してください
4.1.2.8 必要な場合のダウンストリーム・データベースへのログ・ファイルの転送の構成
ローカル取得プロセスを使用するように決定した場合は、ログ・ファイルの転送は不要です。ただし、REDO転送サービスを使用してアーカイブREDOログ・ファイルをダウンストリーム・データベースに自動的に転送するダウンストリーム取得を使用するように決定した場合は、ソース・データベースから取得データベースへのログ・ファイルの転送を構成します。
この決定の詳細は、「XStream Outの構成方法の決定」を参照してください。
ヒント:
Oracle Enterprise Manager Cloud Controlを使用して、ログ・ファイルの転送およびダウンストリーム取得プロセスを構成できます。手順については、Oracle Enterprise Manager Cloud Controlのオンライン・ヘルプを参照してください。
この項の手順では、ソース・データベースのREDOログ・ファイルを取得データベースに転送するように構成し、取得データベースでそれらのREDOログ・ファイルを受け入れるように構成します。
ダウンストリーム・データベースへのログ・ファイル転送を構成するには、次のようにします。
-
ソース・データベースでダウンストリーム・データベースと通信できるように、Oracle Netを構成します。
-
両方のデータベースで、REDOデータの転送がサポートされるように認証を構成します。
REDO転送セッションは、Secure Sockets Layer(SSL)プロトコルまたはリモート・ログイン・パスワード・ファイルのいずれかを使用して認証されます。ソース・データベースにリモート・ログイン・パスワード・ファイルがある場合は、ダウンストリーム取得データベース・システムの適切なディレクトリにこのファイルをコピーします。パスワード・ファイルは、ソース・データベースおよびダウンストリーム取得データベースで同じである必要があります。
関連項目:
REDO転送の認証要件の詳細は、Oracle Data Guard概要および管理を参照してください
-
ソース・データベースからダウンストリーム・データベースにREDOデータを転送するREDO転送サービスを構成するために、ソース・データベースで次の初期化パラメータを設定します。
-
LOG_ARCHIVE_DEST_
n
: ダウンストリーム・データベースにREDOデータを送信するように1つ以上のLOG_ARCHIVE_DEST_
n
初期化パラメータを設定します。このパラメータの次の属性を次の方法で設定します。-
SERVICE
: ダウンストリーム・データベースのネットワーク・サービス名を指定します。 -
ASYNC
またはSYNC
: REDO転送モードを指定します。ASYNC
を指定するメリットは、ソース・データベースのパフォーマンスにほとんど影響を与えないことです。ダウンストリーム・データベースまたはネットワークのパフォーマンスが低い場合は、ASYNC
を使用してソース・データベースのパフォーマンスへの影響を回避することをお薦めします。SYNC
を指定するメリットは、ASYNC
を指定した場合より高速にダウンストリーム・データベースにREDOデータが送信されることです。また、SYNC
AFFIRM
を指定すると、MAXIMUM
AVAILABILITY
スタンバイ保護モードと同様に動作します。ALTER
DATABASE
STANDBY
DATABASE
TO
MAXIMIZE
AVAILABILITY
SQL文を指定しても、XStreamの取得プロセスには影響しないことに注意してください。 -
NOREGISTER
: この属性を指定すると、アーカイブREDOログ・ファイルの位置が、ダウンストリーム・データベースの制御ファイルに記録されません。 -
VALID_FOR
:(ONLINE_LOGFILE,PRIMARY_ROLE)
または(ONLINE_LOGFILE,ALL_ROLES)
のいずれかを指定します。 -
TEMPLATE
: アーカイブ・ログ・ダウンストリームの取得プロセスを構成するときには、ダウンストリーム・データベースでアーカイブREDOログ用のディレクトリおよびフォーマット・テンプレートを指定します。TEMPLATE
属性は、ダウンストリーム・データベースのLOG_ARCHIVE_FORMAT
初期化パラメータ設定を上書きします。TEMPLATE
属性は、リモートの接続先でのみ有効です。各ソース・データベースで、フォーマットに%t
、%s
および%r
のすべての変数を使用していることを確認します。リアルタイム・ダウンストリームの取得プロセスを構成するときには、
TEMPLATE
属性を指定しないでください。 -
DB_UNIQUE_NAME
: ダウンストリーム・データベースの一意の名前。ダウンストリーム・データベースでDB_UNIQUE_NAME
初期化パラメータに指定した名前を使用します。
次に、リアルタイム・ダウンストリーム取得プロセスにダウンストリーム・データベース
dbs2
を指定するLOG_ARCHIVE_DEST_
n
設定の例を示します。LOG_ARCHIVE_DEST_2='SERVICE=DBS2.EXAMPLE.COM ASYNC NOREGISTER VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dbs2'
次に、アーカイブ・ログ・ダウンストリーム取得プロセスにダウンストリーム・データベース
dbs2
を指定するLOG_ARCHIVE_DEST_
n
設定の例を示します。LOG_ARCHIVE_DEST_2='SERVICE=DBS2.EXAMPLE.COM ASYNC NOREGISTER VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) TEMPLATE=/usr/oracle/log_for_dbs1/dbs1_arch_%t_%s_%r.log DB_UNIQUE_NAME=dbs2'
リアルタイム・ダウンストリーム取得とアーカイブ・ログ・ダウンストリーム取得の違いの詳細は、XStream Outの構成方法の決定を参照してください。
ヒント:
アーカイブ・ログ・ダウンストリーム取得プロセスを構成している場合は、リモート・ソース・データベースからのログ・ファイルとローカル・データベースのログ・ファイルを別々に保持する
TEMPLATE
属性の値を指定してください。また、ダウンストリーム・データベースに複数のソース・データベースからのログ・ファイルが含まれている場合、各ソース・データベースからのログ・ファイルを個別に格納する必要があります。 -
-
LOG_ARCHIVE_DEST_STATE_
n
: ダウンストリーム・データベースのLOG_ARCHIVE_DEST_
n
パラメータに対応するこの初期化パラメータをENABLE
に設定します。たとえば、ダウンストリーム・データベースに
LOG_ARCHIVE_DEST_2
初期化パラメータが設定されている場合、LOG_ARCHIVE_DEST_STATE_2
パラメータを次のように設定します。LOG_ARCHIVE_DEST_STATE_2=ENABLE
-
LOG_ARCHIVE_CONFIG
: ソース・データベースおよびダウンストリーム・データベースのDB_UNIQUE_NAME
を含むように、この初期化パラメータのDB_CONFIG
属性を設定します。たとえば、ソース・データベースの
DB_UNIQUE_NAME
がdbs1
で、ダウンストリーム・データベースのDB_UNIQUE_NAME
がdbs2
の場合は、次のパラメータを指定します。LOG_ARCHIVE_CONFIG='DG_CONFIG=(dbs1,dbs2)'
デフォルトで、
LOG_ARCHIVE_CONFIG
パラメータによって、データベースによるREDOの送受信が可能になります。
関連項目:
これらの初期化パラメータの詳細は、Oracle DatabaseリファレンスおよびOracle Data Guard概要および管理を参照してください
-
-
ダウンストリーム・データベースで、ソース・データベースおよびダウンストリーム・データベースの
DB_UNIQUE_NAME
を含むように、LOG_ARCHIVE_CONFIG
初期化パラメータのDB_CONFIG
属性を設定します。たとえば、ソース・データベースの
DB_UNIQUE_NAME
がdbs1
で、ダウンストリーム・データベースのDB_UNIQUE_NAME
がdbs2
の場合は、次のパラメータを指定します。LOG_ARCHIVE_CONFIG='DG_CONFIG=(dbs1,dbs2)'
デフォルトで、
LOG_ARCHIVE_CONFIG
パラメータによって、データベースによるREDOの送受信が可能になります。 -
手順3または手順4で、データベース上でインスタンスを実行中に初期化パラメータをリセットした場合、データベースが再起動されたときに新しい値が保持されるように、それらのパラメータを初期化パラメータ・ファイルでもリセットする必要があります。
手順3または4で、インスタンスの実行中に初期化パラメータをリセットせず、初期化パラメータ・ファイルでリセットした場合は、データベースを再起動します。ソース・データベースのグローバル名は、ソース・データベースがオープンな場合にのみダウンストリーム・データベースに送信されるため、ダウンストリーム・データベースにREDOログ・ファイルを送信するときには、ソース・データベースがオープンである必要があります。
これらの手順が完了すると、リアルタイム・ダウンストリーム取得プロセスを構成する必要がある場合に、ダウンストリーム・データベースにスタンバイREDOログ・ファイルを追加できます。この場合、必要な場合のリアルタイム・ダウンストリーム取得のためのスタンバイREDOログの追加の手順を参照してください。
4.1.2.9 必要な場合のリアルタイム・ダウンストリーム取得のためのスタンバイREDOログの追加
リアルタイム・ダウンストリーム取得を構成するように決定した場合、スタンバイREDOログを取得データベースに追加します。
この決定の詳細は、「XStream Outの構成方法の決定」を参照してください。
この項の例では、ダウンストリーム・データベースでスタンバイREDOログを追加します。スタンバイREDOログは、リアルタイム・ダウンストリーム取得プロセスを構成するために必要です。この例では、ソース・データベースはdbs1.example.com
、ダウンストリーム・データベースはdbs2.example.com
です。
この項の手順は、リアルタイム・ダウンストリーム取得を構成している場合にのみ実行する必要があります。アーカイブ・ログ・ダウンストリーム取得を構成している場合、この項の手順は実行しないでください。
リアルタイム・ダウンストリーム取得のためのスタンバイREDOログを追加するには、次のようにします。
-
必要な場合のダウンストリーム・データベースへのログ・ファイルの転送の構成の手順を実行します。
-
ダウンストリーム・データベースで、次の初期化パラメータを設定して、ローカルに生成されるREDOデータのアーカイブを構成します。
-
LOG_ARCHIVE_DEST_
n
初期化パラメータで、ダウンストリーム・データベースを実行中のコンピュータ・システム上のディレクトリまたは高速リカバリ領域のいずれかになるよう、アーカイブ・ログの宛先を少なくとも1つ設定します。このパラメータの次の属性を次の方法で設定します。-
LOCATION
: ディスク・ディレクトリの有効なパス名を指定するか、または高速リカバリ領域を使用するためにUSE_DB_RECOVERY_FILE_DEST
を指定します。この場所は、スタンバイREDOログから書き込まれるアーカイブREDOログ・ファイルのローカルの宛先です。リモート・ソース・データベースからのログ・ファイルは、ローカル・データベースのログ・ファイルとは別々に保持する必要があります。高速リカバリ領域の構成の詳細は、Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイドを参照してください。 -
VALID_FOR
:(ONLINE_LOGFILE,PRIMARY_ROLE)
または(ONLINE_LOGFILE,ALL_ROLES)
のいずれかを指定します。
次に、リアルタイム・ダウンストリーム取得データベースでローカルに生成されるREDOデータのための
LOG_ARCHIVE_DEST_
n
設定の例を示します。LOG_ARCHIVE_DEST_1='LOCATION=/home/arc_dest/local_rl_dbs2 VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE)'
リアルタイム・ダウンストリーム取得の構成では、アーカイブ・スタンバイREDOログ・ファイルとダウンストリーム・データベースで生成されるアーカイブ・オンラインREDOログ・ファイルは別々に保持する必要があります。これを行うには、
VALID_FOR
属性のREDOログ・タイプに、ALL_LOGFILES
のかわりにONLINE_LOGFILE
を指定します。必要に応じて、
LOG_ARCHIVE_DEST_
n
初期化パラメータの他の属性を指定できます。 -
-
この手順で以前に設定した
LOG_ARCHIVE_DEST_
n
パラメータに対応するLOG_ARCHIVE_DEST_STATE_
n
初期化パラメータを、ENABLE
に設定します。たとえば、
LOG_ARCHIVE_DEST_1
初期化パラメータが設定されている場合は、LOG_ARCHIVE_DEST_STATE_1
パラメータを次のとおり設定します。LOG_ARCHIVE_DEST_STATE_1=ENABLE
-
-
ダウンストリーム・データベースで、次の初期化パラメータを設定して、ソース・データベースからREDOデータを受信し、そのREDOデータをダウンストリーム・データベースのスタンバイREDOログに書き込むようにダウンストリーム・データベースを構成します。
-
LOG_ARCHIVE_DEST_
n
初期化パラメータで、ダウンストリーム・データベースを実行中のコンピュータ・システム上のディレクトリまたは高速リカバリ領域のいずれかになるよう、アーカイブ・ログの宛先を少なくとも1つ設定します。このパラメータの次の属性を次の方法で設定します。-
LOCATION
: ディスク・ディレクトリの有効なパス名を指定するか、または高速リカバリ領域を使用するためにUSE_DB_RECOVERY_FILE_DEST
を指定します。この場所は、スタンバイREDOログから書き込まれるアーカイブREDOログ・ファイルのローカルの宛先です。リモート・ソース・データベースからのログ・ファイルは、ローカル・データベースのログ・ファイルとは別々に保持する必要があります。高速リカバリ領域の構成の詳細は、Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイドを参照してください。 -
VALID_FOR
:(STANDBY_LOGFILE,PRIMARY_ROLE)
または(STANDBY_LOGFILE,ALL_ROLES)
を指定します。
次に、リアルタイム・ダウンストリーム取得データベースでソース・データベースから受信するREDOデータのための
LOG_ARCHIVE_DEST_
n
設定の例を示します。LOG_ARCHIVE_DEST_2='LOCATION=/home/arc_dest/srl_dbs1 VALID_FOR=(STANDBY_LOGFILE,PRIMARY_ROLE)'
必要に応じて、
LOG_ARCHIVE_DEST_
n
初期化パラメータの他の属性を指定できます。 -
-
この手順で以前に設定した
LOG_ARCHIVE_DEST_
n
パラメータに対応するLOG_ARCHIVE_DEST_STATE_
n
初期化パラメータを、ENABLE
に設定します。たとえば、ダウンストリーム・データベースに
LOG_ARCHIVE_DEST_2
初期化パラメータが設定されている場合、LOG_ARCHIVE_DEST_STATE_2
パラメータを次のように設定します。LOG_ARCHIVE_DEST_STATE_2=ENABLE
関連項目:
これらの初期化パラメータの詳細は、Oracle DatabaseリファレンスおよびOracle Data Guard概要および管理を参照してください
-
-
手順2または手順3で、データベース上でインスタンスを実行中に初期化パラメータをリセットした場合、データベースが再起動されたときに新しい値が保持されるように、それらのパラメータを関連する初期化パラメータ・ファイルでもリセットする必要があります。
手順2または手順3で、インスタンスの実行中には初期化パラメータをリセットしなかったが、初期化パラメータ・ファイルでリセットした場合は、データベースを再起動します。ソース・データベースのグローバル名は、ソース・データベースがオープンな場合にのみダウンストリーム・データベースに送信されるため、ダウンストリーム・データベースにREDOデータを送信するときには、ソース・データベースがオープンである必要があります。
-
スタンバイREDOログ・ファイルを作成します。
注意:
次の手順では、スタンバイREDOログ・ファイルをダウンストリーム・データベースに追加する一般的な方法の概要を示します。スタンバイREDOログ・ファイルを追加するための特定の手順とSQL文は、環境によって異なります。たとえば、Oracle Real Application Clusters(Oracle RAC)環境では、異なる手順を使用します。スタンバイREDOログ・ファイルをデータベースに追加する手順の詳細は、Oracle Data Guard概要および管理を参照してください。
-
SQL*Plusで、管理ユーザーとしてソース・データベース
dbs1.example.com
に接続します。SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。
-
ソース・データベースで使用されるログ・ファイルのサイズを決定します。スタンバイ・ログ・ファイルのサイズは、ソース・データベースのログ・ファイルのサイズと同じ(またはそれ以上)にする必要があります。たとえば、ソース・データベースのログ・ファイルのサイズが500MBの場合、スタンバイ・ログ・ファイルのサイズは500MB以上にする必要があります。ソース・データベースで
V$LOG
ビューを問い合せて、ソース・データベースのREDOログ・ファイルのサイズ(バイト単位)を確認できます。たとえば、
V$LOG
ビューを問い合せます。SELECT BYTES FROM V$LOG;
-
ダウンストリーム・データベースで必要なスタンバイ・ログ・ファイル・グループの数を決定します。
スタンバイ・ログ・ファイル・グループの数は、ソース・データベースのオンライン・ログ・ファイル・グループの数より1つ以上多くする必要があります。たとえば、ソース・データベースに2つのオンライン・ログ・ファイル・グループが存在する場合、ダウンストリーム・データベースには3つ以上のスタンバイ・ログ・ファイル・グループが必要です。
単一インスタンス・データベースでソース・データベースの
V$LOG
ビューを問い合せるか、またはデータベース・クラスタのGV$LOG
ビューを問い合せることで、ソース・データベースのオンライン・ログ・ファイル・グループの数を判別できます。たとえば、
GV$LOG
ビューを問い合せます。SELECT COUNT(GROUP#) FROM GV$LOG;
-
SQL*Plusで、管理ユーザーとしてダウンストリーム・データベース
dbs2.example.com
に接続します。 -
SQL文
ALTER
DATABASE
ADD
STANDBY
LOGFILE
を使用して、スタンバイ・ログ・ファイル・グループをダウンストリーム・データベースに追加します。たとえば、ソース・データベースに2つのオンラインREDOログ・ファイル・グループが存在し、そのソース・データベースで500MBのログ・ファイル・サイズが使用されていると想定します。この場合は、次の文を使用して、適切なスタンバイ・ログ・ファイル・グループを作成します。
ALTER DATABASE ADD STANDBY LOGFILE GROUP 3 ('/oracle/dbs/slog3a.rdo', '/oracle/dbs/slog3b.rdo') SIZE 500M; ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/oracle/dbs/slog4.rdo', '/oracle/dbs/slog4b.rdo') SIZE 500M; ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/oracle/dbs/slog5.rdo', '/oracle/dbs/slog5b.rdo') SIZE 500M;
-
次の問合せを実行して、スタンバイ・ログ・ファイル・グループが正常に追加されたことを確認します。
SELECT GROUP#, THREAD#, SEQUENCE#, ARCHIVED, STATUS FROM V$STANDBY_LOG;
出力は次のようになります。
GROUP# THREAD# SEQUENCE# ARC STATUS ---------- ---------- ---------- --- ---------- 3 0 0 YES UNASSIGNED 4 0 0 YES UNASSIGNED 5 0 0 YES UNASSIGNED
-
ソース・データベースからのログ・ファイルが手順3で
LOCATION
属性に指定した場所に存在することを確認します。ディレクトリ内のファイルを確認するには、ソース・データベースのログ・ファイルを切り替える必要がある場合があります。
-
これらの手順が完了すると、リアルタイム・ダウンストリーム取得プロセスを構成できます。
ヒント:
Oracle Enterprise Manager Cloud Controlを使用して、リアルタイム・ダウンストリーム取得を構成できます。手順については、Oracle Enterprise Manager Cloud Controlのオンライン・ヘルプを参照してください。
4.2 XStream Outの構成
XStream Out構成のアウトバウンド・サーバーは、Oracleデータベースの変更をクライアント・アプリケーションにストリームします。
クライアント・アプリケーションは、Oracle Call Interface(OCI)またはJavaインタフェースを使用してアウトバウンド・サーバーに連結し、これらの変更を受け取ります。
アウトバウンド・サーバーの構成には、取得されたデータベース変更をアウトバウンド・サーバーに送信するコンポーネントの作成が含まれます。また、アウトバウンド・サーバー自体の構成も含まれ、これにはクライアント・アプリケーションがアウトバウンド・サーバーに連結するために使用する接続ユーザーの指定も含まれます。
DBMS_XSTREAM_ADM
パッケージの次のプロシージャを使用して、アウトバウンド・サーバーを作成できます。
-
CREATE_OUTBOUND
プロシージャは、アウトバウンド・サーバー、キューおよび取得プロセスを1回のプロシージャ・コールで単一データベースに作成します。 -
ADD_OUTBOUND
プロシージャは、アウトバウンド・サーバーを作成したり、既存のXStream Out構成にアウトバウンド・サーバーを追加したりできます。既存のXStream Out構成を持たないデータベースでこのプロシージャを使用すると、アウトバウンド・サーバーの作成のみが実行されます。取得プロセスとキューを個別に作成する必要があり、これらはADD_OUTBOUND
プロシージャを実行する前に存在する必要があります。取得プロセスは、アウトバウンド・サーバーと同じデータベースまたは別のデータベースに構成できます。
いずれの場合も、アウトバウンド・サーバーと通信し、アウトバウンド・サーバーからLCRを受信するクライアント・アプリケーションを作成する必要があります。
複数のアウトバウンド・サーバーが必要な場合は、CREATE_OUTBOUND
プロシージャを使用して、最初のアウトバウンド・サーバーのデータベース変更を取得する取得プロセスを作成できます。次に、ADD_OUTBOUND
プロシージャを実行して、取得された同じ変更内容を取得する追加のアウトバウンド・サーバーを追加できます。取得プロセスは、アウトバウンド・サーバーと同じデータベースまたは別のデータベースに存在できます。
また、CDBでXStream Outを構成する場合は特別な考慮事項があります。この項では、CDBでアウトバウンド・サーバーを作成する手順を説明します。
ヒント:
複数のアウトバウンド・サーバーを持つXStream Out構成のベスト・プラクティスは、すべてのアウトバウンド・サーバーの変更を取得する1つの取得プロセスを作成することです。
- CREATE_OUTBOUNDを使用したアウトバウンド・サーバーの構成
DBMS_XSTREAM_ADM
パッケージのCREATE_OUTBOUND
プロシージャは、単一のデータベース内に取得プロセス、キューおよびアウトバウンド・サーバーを作成します。 - 取得プロセス・ストリームへのアウトバウンド・サーバーの追加
XStream Out構成では多くの場合、1つの取得プロセスからのLCRのストリームを処理する複数のアウトバウンド・サーバーが必要です。少なくとも1つのアウトバウンド・サーバーが含まれているデータベースに追加のアウトバウンド・サーバーを追加できます。 - ADD_OUTBOUNDを使用したアウトバウンド・サーバーの構成
DBMS_XSTREAM_ADM
パッケージのADD_OUTBOUND
プロシージャは、アウトバウンド・サーバーを作成します。 - CDB内でのXStream Outの構成
CDB内でXStream Outを構成する場合、XStream Outによって取得されてクライアント・アプリケーションに送信される対象となるデータベース変更を決定する必要があります。XStream Outは、CDBルート、すべてのPDB、すべてのアプリケーション・ルートおよびすべてのアプリケーションPDBを含むすべてのコンテナのすべてのデータベース変更をストリームできます。また、XStream Outは特定のコンテナの変更をストリームすることもできます。
4.2.1 CREATE_OUTBOUNDを使用したアウトバウンド・サーバーの構成
DBMS_XSTREAM_ADM
パッケージのCREATE_OUTBOUND
プロシージャは、単一のデータベース内に取得プロセス、キューおよびアウトバウンド・サーバーを作成します。
取得プロセスとアウトバウンド・サーバーの両方が、プロシージャによって作成されたキューを使用します。プロシージャを実行するとき、ユーザーが新規のアウトバウンド・サーバーの名前を指定し、プロシージャによって取得プロセスおよびキューの名が生成されます。すべてのコンポーネントを同じデータベース上で実行させる場合、CREATE_OUTBOUND
プロシージャは、アウトバウンド・サーバーを作成するための最も速く、簡単な方法です。
前提条件
XStream Outを構成する前に、次の前提条件が満たされていることを確認します。
-
XStream Outの構成の前提条件で説明されているタスクが完了している。
前提条件
この項では、次のことを想定しています。
-
取得プロセスはローカル取得プロセスで、アウトバウンド・サーバーと同じデータベースで実行されます。
この項の手順は、XStream Outの構成方法の決定に記載されている、同じデータベース構成上のローカル取得およびアウトバウンド・サーバーのみ設定できます。
-
アウトバウンド・サーバーの名前は
xout
です。 -
oe.orders
表およびoe.order_items
表に対して行われたデータ操作言語(DML)およびデータ定義言語(DDL)の変更は、アウトバウンド・サーバーに送信されます。 -
hr
スキーマに対して行われたDMLおよびDDLの変更は、アウトバウンド・サーバーに送信されます。
図4-5は、このXStream Out構成の概要を示したものです。
CREATE_OUTBOUND
プロシージャを使用してアウトバウンド・サーバーを作成するには、次のようにします。
-
SQL*Plusで、データベースにXStream管理者として接続します。
SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。
-
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', table_names => tables, schema_names => schemas); END; /
このプロシージャを実行すると、次のアクションが実行されます。
-
oe.orders
表、oe.order_items
表およびhr
スキーマ内のすべての表のサプリメンタル・ロギングを構成します。 -
取得プロセスおよびアウトバウンド・サーバーで使用されるシステム生成名でキューを作成します。
-
oe.orders
表、oe.order_items
表およびhr
スキーマに対するDMLおよびDDLの変更を取得するよう指示するルール・セットを使用する、システム生成名を持つ取得プロセスを作成して起動します。 -
oe.orders
表、oe.order_items
表およびhr
スキーマに対するDMLおよびDDLの変更をクライアント・アプリケーションに送信するよう指示するルール・セットを使用する、xout
という名前のアウトバウンド・サーバーを作成して起動します。 -
現在のユーザーをアウトバウンド・サーバーの接続ユーザーとして設定します。この例では、現在のユーザーはXStream管理者です。クライアント・アプリケーションは、アウトバウンド・サーバーと対話するために接続ユーザーとしてデータベースに接続する必要があります。
注意:
server_name
値は30バイトを超えることはできません。ヒント:
すべてのデータベース変更を取得してアウトバウンド・サーバーに送信するには、
table_names
およびschema_names
パラメータをNULL
(デフォルト)に指定します。 -
-
アウトバウンド・サーバーに接続してLCRを受信するクライアント・アプリケーションを作成して実行します。サンプル・アプリケーションについては、「サンプルXStreamクライアント・アプリケーション」を参照してください。
-
手順2で作成された取得プロセスからLCRを受信する1つ以上の追加のアウトバウンド・サーバーを追加するには、「取得プロセス・ストリームへのアウトバウンド・サーバーの追加」の手順に従います。
クライアント・アプリケーションを実行すると、アウトバウンド・サーバーが自動的に起動します。
4.2.2 取得プロセス・ストリームへのアウトバウンド・サーバーの追加
XStream Out構成では多くの場合、1つの取得プロセスからのLCRのストリームを処理する複数のアウトバウンド・サーバーが必要です。少なくとも1つのアウトバウンド・サーバーが含まれているデータベースに追加のアウトバウンド・サーバーを追加できます。
追加されたアウトバウンド・サーバーは、別のアウトバウンド・サーバーと同じキューを使用して取得プロセスからLCRを受信します。XStream Out環境が存在する場合は、DBMS_XSTREAM_ADM
パッケージのADD_OUTBOUND
プロシージャを使用して、取得プロセス・ストリームに別のアウトバウンド・サーバーを追加します。
前提条件
この項の手順を実行する前に、少なくとも1つのアウトバウンド・サーバーが含まれているXStream Out環境を構成します。次の項では、XStream Out環境の構成について説明します。
前提条件
この項では、次のことを想定しています。
-
アウトバウンド・サーバーの名前は
xout2
です。 -
アウトバウンド・サーバーによって使用されるキューは、
xstrmadmin.xstream_queue
です。 -
oe.orders
表およびoe.order_items
表に対して行われたDMLおよびDDLの変更は、アウトバウンド・サーバーに送信されます。 -
hr
スキーマに対して行われたDMLおよびDDLの変更は、アウトバウンド・サーバーに送信されます。 -
データベース変更のソース・データベースは、
db1.example.com
です。
図4-6は、このXStream Out構成の概要を示したものです。
ADD_OUTBOUND
プロシージャを使用して取得プロセス・ストリームに別のアウトバウンド・サーバーを追加するには、次のようにします。
-
SQL*Plusで、追加のアウトバウンド・サーバーを実行するデータベースにXStream管理者として接続します。
SQL*Plusでデータベースに接続する方法については、『Oracle Database管理者ガイド』を参照してください。
-
取得プロセスからLCRを受信する既存のアウトバウンド・サーバーで使用されるキューの名前を確認します。
アウトバウンド・サーバーに関する一般情報の表示の問合せを実行して、キューの所有者および名前を確認します。この問合せでは、取得プロセスの名前およびソース・データベース名も表示されます。
-
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 => 'xout2', queue_name => 'xstrmadmin.xstream_queue', source_database => 'db1.example.com', table_names => tables, schema_names => schemas); END; /
このプロシージャを実行すると、次のアクションが実行されます。
-
xout2
という名前のアウトバウンド・サーバーを作成します。アウトバウンド・サーバーには、oe.orders
表、oe.order_items
表およびhr
スキーマに対するDMLおよびDDLの変更をクライアント・アプリケーションに送信するよう指示するルール・セットがあります。ルールでは、これらの変更はdb1.example.com
データベースで発生したものである必要があることを指定します。アウトバウンド・サーバーは、キューxstrmadmin.xstream_queue
からLCRをデキューします。 -
現在のユーザーをアウトバウンド・サーバーの接続ユーザーとして設定します。この例では、現在のユーザーはXStream管理者です。クライアント・アプリケーションは、アウトバウンド・サーバーと対話するために接続ユーザーとしてデータベースに接続する必要があります。
注意:
server_name
値は30バイトを超えることはできません。ヒント:
取得プロセスによって送信されたすべてのLCRをアウトバウンド・サーバーで受信するには、
table_names
およびschema_names
パラメータをNULL
(デフォルト)に指定します。 -
-
クライアント・アプリケーションが存在しない場合は、アウトバウンド・サーバーに接続してLCRを受信するクライアント・アプリケーションを作成して実行します。サンプル・アプリケーションについては、「サンプルXStreamクライアント・アプリケーション」を参照してください。
クライアント・アプリケーションを実行すると、アウトバウンド・サーバーが自動的に起動します。
4.2.3 ADD_OUTBOUNDを使用したアウトバウンド・サーバーの構成
DBMS_XSTREAM_ADM
パッケージのADD_OUTBOUND
プロシージャは、アウトバウンド・サーバーを作成します。
このプロシージャは、取得プロセスおよびキューを作成しません。既存のXStream Out構成を持たないデータベースでは、これらのコンポーネントを手動で構成する必要があります。
ADD_OUTBOUND
プロシージャを使用して、XStream Outの構成方法の決定に記載されているいずれかの構成を設定できます。ただし、ローカル取得とアウトバウンド・サーバーを同じデータベース上に構成することを選択した場合は、CREATE_OUTBOUND
プロシージャを使用してすべてのコンポーネントを同時に構成する方が通常は簡単です。CREATE_OUTBOUNDを使用したアウトバウンド・サーバーの構成を参照してください。
この項には、ダウンストリーム取得とアウトバウンド・サーバーを同じデータベースに構成した例があります。
前提条件
XStream Outを構成する前に、次の前提条件が満たされていることを確認します。
-
XStream Outの構成の前提条件で説明されているタスクが完了している。
ダウンストリーム取得を使用することを決定した場合は、ソース・データベースからダウンストリーム・データベースへのログ・ファイル転送を構成する必要があります。必要な場合のダウンストリーム・データベースへのログ・ファイルの転送の構成を参照してください。
リアルタイム・ダウンストリーム取得を使用する場合は、必要なスタンバイREDOログを追加する必要もあります。必要な場合のリアルタイム・ダウンストリーム取得のためのスタンバイREDOログの追加を参照してください。
この項の例では、ダウンストリーム取得を使用します。このため、この例を実行するにはログ・ファイル転送を構成する必要があります。
前提条件
この項では、次のことを想定しています。
-
アウトバウンド・サーバーの名前は
xout
です。 -
アウトバウンド・サーバーによって使用されるキューは、
xstrmadmin.xstream_queue
です。 -
ソース・データベースは
db1.example.com
です。 -
取得プロセスおよびアウトバウンド・サーバーは、ソース・データベースとは異なるデータベースで実行されます。このため、ダウンストリーム取得が構成されます。
-
oe.orders
表およびoe.order_items
表に対して行われたDMLおよびDDLの変更は、アウトバウンド・サーバーに送信されます。 -
hr
スキーマに対して行われたDMLおよびDDLの変更は、アウトバウンド・サーバーに送信されます。
図4-7は、このXStream Out構成の概要を示したものです。
ADD_OUTBOUND
プロシージャを使用してアウトバウンド・サーバーを作成するには、次のようにします。
-
SQL*Plusで、取得プロセス(取得データベース)を実行するデータベースにXStream管理者として接続します。
SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。
-
取得プロセスで使用されるキューを作成します。
たとえば、次のプロシージャを実行します。
BEGIN DBMS_XSTREAM_ADM.SET_UP_QUEUE( queue_table => 'xstrmadmin.xstream_queue_table', queue_name => 'xstrmadmin.xstream_queue'); END; /
-
ダウンストリーム取得データベースからソース・データベースへのデータベース・リンクを作成します。
この例では、ダウンストリーム取得データベースから
db1.example.com
へのデータベース・リンクを作成します。たとえば、ユーザーxstrmadmin
が両方のデータベースのXStream管理者の場合、次のようにデータベース・リンクを作成します。CREATE DATABASE LINK db1.example.com CONNECT TO xstrmadmin IDENTIFIED BY password USING 'db1.example.com';
必要な場合のネットワーク接続およびデータベース・リンクの構成を参照してください。
データベース・リンクを作成しない場合は、ソース・データベースで次の手順を実行する必要があります。
-
ソース・データベースに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
このプロシージャによって、ダウンストリーム取得データベースで作成される取得プロセスの有効な先頭SCN値が表示されます。戻されたSCN値をメモし、手順4で取得プロセスを作成するときに使用できるようにしてください。
-
必要なサプリメンタル・ロギングが、ソース・データベースでデータベース・オブジェクトに対して指定されていることを確認してください。
この例では、サプリメンタル・ロギングが、
db1.example.com
データベースのhr
スキーマ、oe.orders
表およびoe.order_items
表に対して構成されていることを確認します。サプリメンタル・ロギングの指定手順については必要な場合のサプリメンタル・ロギングの構成を参照してください。
これらの手順は、データベース・リンクを作成する場合は不要です。
-
-
ダウンストリーム取得データベースに接続しているときに、取得プロセスを作成し、取得プロセスにルールを追加します。
たとえば、次のプロシージャを実行して、取得プロセスを作成します。
BEGIN DBMS_CAPTURE_ADM.CREATE_CAPTURE( queue_name => 'xstrmadmin.xstream_queue', capture_name => 'xout_capture', capture_class => 'xstream'); END; /
hr
スキーマ、oe.orders
表およびoe.order_items
表への変更を取得する取得プロセスのルール・セットにルールを追加します。たとえば、次のプロシージャを実行してルールを作成します。
BEGIN DBMS_XSTREAM_ADM.ADD_SCHEMA_RULES( schema_name => 'hr', streams_type => 'capture', streams_name => 'xout_capture', queue_name => 'xstrmadmin.xstream_queue', include_dml => TRUE, include_ddl => TRUE, source_database => 'db1.example.com'); END; / BEGIN DBMS_XSTREAM_ADM.ADD_TABLE_RULES( table_name => 'oe.orders', streams_type => 'capture', streams_name => 'xout_capture', queue_name => 'xstrmadmin.xstream_queue', include_dml => TRUE, include_ddl => TRUE, source_database => 'db1.example.com'); END; / BEGIN DBMS_XSTREAM_ADM.ADD_TABLE_RULES( table_name => 'oe.order_items', streams_type => 'capture', streams_name => 'xout_capture', queue_name => 'xstrmadmin.xstream_queue', include_dml => TRUE, include_ddl => TRUE, source_database => 'db1.example.com'); END; /
取得プロセスは起動しないでください。
-
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 => 'xstrmadmin.xstream_queue', source_database => 'db1.example.com', table_names => tables, schema_names => schemas); END; /
このプロシージャを実行すると、次のアクションが実行されます。
-
xout
という名前のアウトバウンド・サーバーを作成します。アウトバウンド・サーバーには、oe.orders
表、oe.order_items
表およびhr
スキーマに対するDMLおよびDDLの変更をクライアント・アプリケーションに送信するよう指示するルール・セットがあります。ルールでは、これらの変更はdb1.example.com
データベースで発生したものである必要があることを指定します。アウトバウンド・サーバーは、キューxstrmadmin.xstream_queue
からLCRをデキューします。 -
現在のユーザーをアウトバウンド・サーバーの接続ユーザーとして設定します。この例では、現在のユーザーはXStream管理者です。クライアント・アプリケーションは、アウトバウンド・サーバーと対話するために接続ユーザーとしてデータベースに接続する必要があります。
注意:
server_name
値は30バイトを超えることはできません。ヒント:
取得プロセスによって送信されたすべてのLCRをアウトバウンド・サーバーで受信するには、
table_names
およびschema_names
パラメータをNULL
(デフォルト)に指定します。 -
-
アウトバウンド・サーバーに接続してLCRを受信するクライアント・アプリケーションを作成して実行します。サンプル・アプリケーションについては、「サンプルXStreamクライアント・アプリケーション」を参照してください。
クライアント・アプリケーションを実行すると、アウトバウンド・サーバーが自動的に起動します。
-
手順4で作成された取得プロセスからLCRを受信する1つ以上の追加のアウトバウンド・サーバーを追加するには、「取得プロセス・ストリームへのアウトバウンド・サーバーの追加」の手順に従います。
4.2.4 CDB内でのXStream Outの構成
CDB内でXStream Outを構成する場合、XStream Outによって取得されてクライアント・アプリケーションに送信される対象となるデータベース変更を決定する必要があります。XStream Outは、CDBルート、すべてのPDB、すべてのアプリケーション・ルートおよびすべてのアプリケーションPDBを含むすべてのコンテナのすべてのデータベース変更をストリームできます。また、XStream Outは特定のコンテナの変更をストリームすることもできます。
また、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がある場合は、ソース・データベースを1つのCDB内に存在させ、ダウンストリーム取得を使用して別のCDB内の変更を取得できます。
4.2.4.1 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の変更は、アウトバウンド・サーバーに送信されます。
図4-8は、このXStream Out構成の概要を示したものです。
図4-8 PDBについてCREATE_OUTBOUNDを使用して作成されたXStream Out構成の例
「図4-8 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内のすべてのコンテナ(CDBルート、すべてのPDB、すべてのアプリケーション・ルートおよびすべてのアプリケーションPDBが含まれます)の変更を取得し、これらの変更内容をXStreamクライアント・アプリケーションに送信するには、
CREATE_OUTBOUND
プロシージャを実行する際にsource_database
パラメータを省略します。 -
CREATE_OUTBOUND
プロシージャが正常に完了した後、必要に応じて1つ以上のコンテナのオープン・モードを変更します。
手順2.bに記載されている手順を実行すると、次のアクションが実行されます。
-
pdb1.example.com
PDBのoe.orders
表、oe.order_items
表およびhr
スキーマ内のすべての表のサプリメンタル・ロギングを構成します。 -
取得プロセスおよびアウトバウンド・サーバーで使用されるシステム生成名でキューを作成します。
-
pdb1.example.com
PDBからoe.orders
表、oe.order_items
表および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を受信するクライアント・アプリケーションを作成して実行します。
クライアント・アプリケーションを実行すると、アウトバウンド・サーバーが自動的に起動します。
4.2.4.2 CDB内でのダウンストリーム取得を使用したXStream Outの構成
ダウンストリーム取得を使用すると、XStream Outコンポーネントをソース・データベース以外のデータベースに配置できます。複数のCDBがある場合は、ソース・データベースを1つのCDB内に存在させ、ダウンストリーム取得を使用して別のCDB内の変更を取得できます。
前提条件
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の変更は、アウトバウンド・サーバーに送信されます。
図4-9は、この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値が表示されます。戻されたSCN値をメモし、手順6で取得プロセスを作成するときに使用できるようにしてください。 -
必要なサプリメンタル・ロギングが、ソースCDB内のデータベース・オブジェクトに対して指定されていることを確認してください。
この例では、サプリメンタル・ロギングが、
pdb1.example.com
PDBのhr
スキーマ、oe.orders
表および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
プロシージャによって戻されるSCN値をfirst_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で自動的に起動します。
関連トピック