9 XStream Inの構成
XStreamによって使用されるOracle Databaseコンポーネントを構成できます。
- XStream Inの準備
XStream Inを構成する前に前提条件を満たす必要があります。 - XStream Inの構成
DBMS_XSTREAM_ADMパッケージのCREATE_INBOUNDプロシージャはインバウンド・サーバーを作成します。インバウンド・サーバーと通信してLCRをインバウンド・サーバーに送信するクライアント・アプリケーションを作成する必要があります。
関連項目:
親トピック: XStream In
9.1 XStream Inの準備
XStream Inを構成する前に、前提条件を満たしておく必要があります。
注意:
マルチテナント・コンテナ・データベースは、Oracle Database 20 cでサポートされる唯一のアーキテクチャです。ドキュメントが改訂されている間は、従来の用語が残っている可能性があります。ほとんどの場合、「データベース」と「非CDB」は、コンテキストに応じてCDBまたはPDBを指します。アップグレードなど、一部のコンテキストでは、「非CDB」が以前のリリースの非CDBを指します。
- XStream管理者の構成
XStream管理者は、XStream In環境でXStreamコンポーネントを構成および管理します。 - 関連する初期化パラメータの設定
一部の初期化パラメータは、XStreamインバウンド・サーバーの構成、操作、信頼性およびパフォーマンスのために重要です。これらのパラメータを適切に設定します。 - Streamsプールの構成
Streamsプールは、Oracle ReplicationおよびXStreamコンポーネントの両方で使用されるシステム・グローバル領域(SGA)内のメモリーの一部です。Streamsプールは、バッファ・キューのLCRをメモリーに格納し、インバウンド・サーバーにメモリーを提供します。 - ソース・データベースでの必要な場合のサプリメンタル・ロギングの指定
XStream構成で、XStream Out構成の取得プロセスによって取得された変更をインバウンド・サーバーが適用する場合、インバウンド・サーバーが変更を適用するソース・データベースの表の列に関するサプリメンタル・ロギングが必要になる場合があります。
親トピック: XStream Inの構成
9.1.1 XStream管理者の構成
XStream管理者は、XStream In環境内のXStreamコンポーネントを構成および管理します。
ユーザーに適切な権限を付与することによって、XStream管理者を構成できます。XStream構成に含まれる各OracleデータベースでXStream管理者を構成する必要があります。
マルチテナント・コンテナ・データベース(CDB)でXStream Inを構成する場合は、インバウンド・サーバーを実行するコンテナでXStream管理者を構成します。このコンテナには、CDBルート、プラガブル・データベース(PDB)、アプリケーション・ルートまたはアプリケーションPDBを使用できます。CDBでのXStream Inの使用の詳細は、XStream Inとマルチテナント環境を参照してください。
前提条件
XStream管理者を構成する前に、次の前提条件が満たされていることを確認してください。
-
XStream構成内の各データベースに、ユーザーの作成、権限の付与および表領域の作成を実行できる管理ユーザーとしてログインできることを確認します。
-
セキュリティ上の構成として、信頼できるユーザー・モデルと信頼されないユーザー・モデルのどちらを使用するかを決定します。詳細はXStreamのセキュリティ・モデルを参照してください。
-
XStream管理者として指定するユーザーを識別します。適切な権限を持つ新規ユーザーを作成するか、これらの権限を既存のユーザーに付与します。
SYSユーザーまたはSYSTEMユーザーをXStream管理者として使用しないでください。また、XStream管理者が、SYSTEM表領域をデフォルト表領域として使用しないことを確認してください。 -
XStream管理者に新しい表領域が必要な場合は、XStream構成内の各コンピュータ・システムに、その表領域用の十分な空き領域があることを確認します。表領域の推奨サイズは25 MBです。
-
DBMS_XSTREAM_AUTHパッケージのサブプログラムを実行するユーザーにはSYSDBA管理権限が必要であり、接続時にAS SYSDBAを使用してこの権限を行使する必要があります。
前提
この項では、次のことを想定しています。
-
CDB以外の場合のXStream管理者のユーザー名は
xstrmadminです。CDBでは、XStream管理者が共通ユーザーであれば、XStream管理者のユーザー名はc##xstrmadminです。CDBのXStream管理者がコンテナのローカル・ユーザーである場合、XStream管理者のユーザー名はxstrmadminです。 -
XStream管理者が使用する表領域は
xstream_tbsです。
XStream管理者の構成手順
-
SQL*Plusで、ユーザーの作成、権限の付与および表領域の作成を行うことができる管理ユーザーとして接続します。これ以降のすべてのステップは、この管理ユーザーとして接続したまま実行します。
関連項目:
SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照
-
XStream管理者用の表領域を作成するか、既存の表領域を使用します。
この表領域には、XStream管理者のスキーマで作成されるオブジェクトが格納されます。
たとえば、次の文では、XStream管理者用の新規表領域が作成されます。
CREATE TABLESPACE xstream_tbs DATAFILE '/usr/oracle/dbs/xstream_tbs.dbf' SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
CDB内の共通ユーザーとしてXStream管理者を作成する場合は、CDBルートとすべてのコンテナに表領域を作成する必要があります。共通ユーザーはすべてのコンテナの表領域へのアクセス権を持っている必要があるため、表領域はすべてのコンテナに必要です。
-
XStream管理者として機能する新しいユーザーを作成するか、既存のユーザーを識別します。
たとえば、
xstrmadminという名前のユーザーを作成し、このユーザーがxstream_tbs表領域を使用するように指定するには、次の文を実行します。CREATE USER xstrmadmin IDENTIFIED BY password DEFAULT TABLESPACE xstream_tbs QUOTA UNLIMITED ON xstream_tbs;XStream管理者をCDBで作成し、インバウンド・サーバーがCDBルート内に配置されている場合、XStream管理者は共通ユーザーである必要があります。
XStream管理者をCDBで作成し、インバウンド・サーバーがPDB、アプリケーション・ルートまたはアプリケーションPDBに配置されている場合、XStream管理者は共通ユーザーにすることも、ローカル・ユーザーにすることもできます。ただし、インバウンド・サーバーがCDBルート以外のコンテナに配置されている場合でも、共通ユーザーをXStream管理者として構成することをお薦めします。
共通ユーザーを作成するには、現在のコンテナがCDBルートになっている状態で、
CREATEUSER文にCONTAINER=ALL句を含めて実行します。CREATE USER c##xstrmadmin IDENTIFIED BY password DEFAULT TABLESPACE xstream_tbs QUOTA UNLIMITED ON xstream_tbs CONTAINER=ALL;注意:
管理ユーザーの適切なパスワードを入力します。
関連項目:
パスワード選択のガイドラインについては、Oracle Databaseセキュリティ・ガイドを参照
-
XStream管理者に
CREATESESSION権限を付与します。XStream管理者として機能する新しいユーザーを作成した場合は、このユーザーに
CREATESESSION権限を付与します。たとえば、ユーザー
xstrmadminにCREATESESSION権限を付与するには、次の文を実行します。GRANT CREATE SESSION TO xstrmadmin;
XStream管理者をCDBの共通ユーザーとして作成する場合は、XStream管理者に
CREATESESSION権限とSETCONTAINER権限を付与し、CONTAINER=ALL句を文に追加します。たとえば、CDBでユーザー
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管理者または信頼されないXStream管理者のそれぞれに該当する権限を付与できます。また、CDBでもCDB以外でも権限を付与できます。表9-1は、それぞれのケースに対応するキー・パラメータの設定を示したものです。表9-1 GRANT_ADMIN_PRIVILEGEのキー・パラメータの設定
XStream管理者のタイプ grant_select_privilegesパラメータの設定 containerパラメータの設定 CDB以外で信頼できる管理者
TRUECURRENT(デフォルト)CDB以外で信頼されない管理者
FALSE(デフォルト)CURRENT(デフォルト)CDBで信頼できる管理者
TRUEALLまたはCURRENTCDBで信頼されない管理者
FALSE(デフォルト)ALLまたはCURRENT注意:
-
いずれのシナリオでも、XStream管理者がデータベース上のXStream OutとXStream Inの両方の構成を管理する必要がある場合は、
privilege_typeパラメータに*を指定します。 -
CDBでは、
containerパラメータにALLが指定されている場合、現在のコンテナはCDBルート(CDB$ROOT)である必要があります。
-
-
必要に応じて、XStream管理者に追加の権限を付与します。
XStream管理者への追加の権限の付与を参照してください。
-
環境内のXStreamを使用する各データベースで前述のすべてのステップを繰り返します。
例9-1 CDB以外での信頼できるXStream管理者への権限付与(スクリプト生成なし)
BEGIN
DBMS_XSTREAM_AUTH.GRANT_ADMIN_PRIVILEGE(
grantee => 'xstrmadmin',
privilege_type => 'APPLY',
grant_select_privileges => TRUE);
END;
/例9-2 CDB以外での信頼できるXStream管理者への権限付与とスクリプトの生成
directory_nameパラメータに指定されるディレクトリが存在し、現在のユーザーがそのディレクトリにアクセスできる必要があります。
BEGIN
DBMS_XSTREAM_AUTH.GRANT_ADMIN_PRIVILEGE(
grantee => 'xstrmadmin',
privilege_type => 'APPLY',
grant_select_privileges => TRUE,
do_grants => TRUE,
file_name => 'grant_xstrm_privs.sql',
directory_name => 'xstrm_dir');
END;
/例9-3 CDB以外での信頼されないXStream管理者への権限付与(スクリプト生成なし)
BEGIN
DBMS_XSTREAM_AUTH.GRANT_ADMIN_PRIVILEGE(
grantee => 'xstrmadmin',
privilege_type => 'APPLY',
grant_select_privileges => FALSE);
END;
/例9-4 CDBでの信頼できるXStream管理者への権限付与(スクリプト生成なし)
この例では、XStream管理者は共通ユーザーです。
BEGIN
DBMS_XSTREAM_AUTH.GRANT_ADMIN_PRIVILEGE(
grantee => 'c##xstrmadmin',
privilege_type => 'APPLY',
grant_select_privileges => TRUE,
container => 'ALL');
END;
/- XStream管理者への追加権限の付与
XStream管理者に追加権限が必要な場合があります。
親トピック: XStream Inの準備
9.1.1.1 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のオンライン・ヘルプを参照してください。 -
インバウンド・サーバーに適用ユーザーが指定されていない場合は、他のユーザーが所有している適用オブジェクトに対してDML変更およびDDL変更を実行するために必要な権限をXStream管理者に付与します。適用ユーザーが指定されている場合、適用ユーザーにはこれらの権限が必要です。これらの権限は、直接またはロールを介して付与できます。
-
インバウンド・サーバーに適用ユーザーが指定されていない場合は、他のユーザーが所有しており、インバウンド・サーバーが実行するPL/SQLサブプログラムに対する
EXECUTE権限を、XStream管理者に付与します。これらのサブプログラムは、適用ハンドラまたはエラー・ハンドラで使用できます。適用ユーザーが指定されている場合、適用ユーザーにはこれらの権限が必要です。これらの権限は、直接付与する必要があります。ロールを介して付与することはできません。 -
別のユーザーが所有しているPL/SQLファンクションのうち、インバウンド・サーバーで使用されるルールのカスタム・ルールベースの変換で指定されているすべてのファンクションに対する
EXECUTE権限を、XStream管理者に付与します。インバウンド・サーバーで適用ユーザーが指定されている場合、その適用ユーザーにはこれらの権限が必要です。これらの権限は、直接付与する必要があります。ロールを介して付与することはできません。 -
XStream管理者がインバウンド・サーバーによって使用されるキューを所有しておらず、キューの作成時にそのキューのキュー・ユーザーとして指定されていない場合、XStream管理者がLCRをキューにエンキューしたり、キューからデキューできるようにするには、XStream管理者をそのキューの保護キュー・ユーザーとして構成する必要があります。また、XStream管理者には、そのキューに対する
ENQUEUE権限またはDEQUEUE権限(あるいはその両方)が必要な場合があります。 -
XStream管理者がアクセスする必要がある可能性がある任意のオブジェクト・タイプに対する
EXECUTE権限をXStream管理者に付与します。これらの権限は、直接またはロールを介して付与できます。 -
Oracle Database Vaultを使用している場合は、次の追加の権限が必要です。
-
インバウンド・サーバーの適用ユーザーに、レプリケートされたデータベース・オブジェクトを含むレルムに変更を適用するための権限を付与する必要があります。レプリケートされたデータベース・オブジェクトは、インバウンド・サーバーが変更を適用するオブジェクトです。
適用ユーザーにレルムに対する権限を付与するには、
DVSYS.DBMS_MACADM.ADD_AUTH_TO_REALMプロシージャを実行して、レルムおよび適用ユーザーを指定します。たとえば、salesレルムに対する権限を適用ユーザーxstrmadminに付与するには、次のプロシージャを実行します。BEGIN DVSYS.DBMS_MACADM.ADD_AUTH_TO_REALM( realm_name => 'sales', grantee => 'xstrmadmin'); END; / -
インバウンド・サーバーを作成または変更するユーザーに、
BECOMEUSERシステム権限を付与する必要があります。Oracle Database Vaultがインストールされていない場合は、これらのアクションを実行するユーザーに
BECOMEUSERシステム権限を付与する必要はありません。必要に応じて、これらのいずれかのアクションの完了後に、ユーザーのBECOMEUSERシステム権限を取り消すことができます。
-
親トピック: XStream管理者の構成
9.1.2 関連する初期化パラメータの設定
一部の初期化パラメータは、XStreamインバウンド・サーバーの構成、動作、信頼性およびパフォーマンスにとって重要な意味を持ちます。これらのパラメータを適切な値に設定します。
XStreamインバウンド・サーバーに適用される要件は次のとおりです。
-
PROCESSES初期化パラメータが、インバウンド・サーバーのバックグラウンド・プロセスおよびOracle Databaseの他のすべてのバックグラウンド・プロセスに対応できる十分な大きさの値に設定されていることを確認してください。 -
SESSIONS初期化パラメータが、インバウンド・サーバーのバックグラウンド・プロセスによって使用されるセッションおよびOracle Databaseの他のすべてのセッションに対応できる十分な大きさの値に設定されていることを確認してください。
親トピック: XStream Inの準備
9.1.3 Streamsプールの構成
Streamsプールは、Oracle ReplicationおよびXStreamコンポーネントの両方で使用されるシステム・グローバル領域(SGA)内のメモリーの一部です。Streamsプールは、バッファ・キューのLCRをメモリーに格納し、インバウンド・サーバーにメモリーを提供します。
Streamsプールの構成に関する考慮事項は次のとおりです。
-
Streamsプール用に300 MB以上のメモリーが必要です。
-
ベスト・プラクティスとして、
STREAMS_POOL_SIZE初期化パラメータを、必要なStreamsプールのサイズに明示的に設定することをお薦めします。 -
XStream Inの構成後、
max_sga_size適用パラメータを使用して、インバウンド・サーバー専用に割り当てられるSGAメモリーの量を制御できます。 -
各データベースのStreamsプールに、XStreamコンポーネントを実行し、LCRを格納してコンポーネントを正しく実行するための十分な容量があることを確認してください。
-
Streamsプールは、インバウンド・サーバーの初回起動時に初期化されます。
次の条件が満たされる場合、Streamsプール・サイズはSTREAMS_POOL_SIZEパラメータによって指定される値(バイト単位)になります。
-
MEMORY_TARGET、MEMORY_MAX_TARGETおよびSGA_TARGET初期化パラメータがすべて0(ゼロ)に設定されている。 -
STREAMS_POOL_SIZE初期化パラメータが0(ゼロ)以外の値に設定されている。
次の条件が満たされる場合、自動共有メモリー管理機能によってStreamsプールのサイズが自動的に管理されます。
-
MEMORY_TARGETおよびMEMORY_MAX_TARGET初期化パラメータの両方が0(ゼロ)に設定されている。 -
SGA_TARGET初期化パラメータが0(ゼロ)以外の値に設定されている。
自動共有メモリー管理を使用している場合に、STREAMS_POOL_SIZE初期化パラメータも0(ゼロ)以外の値に設定すると、自動共有メモリー管理でその値がOracle Replicationプールの最小値として使用されます。ご使用の環境が、正しく機能するにはOracle Replicationプールの最小メモリー量の指定を必要とする場合は、最小サイズを設定できます。自動共有メモリー管理によってOracle Replicationプールに割り当てられている現在のメモリーを表示するには、V$SGA_DYNAMIC_COMPONENTSビューを問い合せます。また、V$STREAMS_POOL_STATISTICSビューを問い合せることで、Oracle Replicationプールの現在の使用状況を表示できます。
関連項目:
-
max_sga_size適用パラメータの詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照
親トピック: XStream Inの準備
9.1.4 ソース・データベースでのサプリメンタル・ロギングの指定(必要な場合)
XStream Out構成の取得プロセスによって取得された変更をインバウンド・サーバーが適用するXStream構成では、ソース・データベースでインバウンド・サーバーが変更を適用する表の列に対して、サプリメンタル・ロギングが必要になる場合があります。
必要なサプリメンタル・ロギングは、作成するインバウンド・サーバーの構成によって異なります。
関連項目:
親トピック: XStream Inの準備
9.2 XStream Inの構成
DBMS_XSTREAM_ADMパッケージのCREATE_INBOUNDプロシージャは、インバウンド・サーバーを作成します。インバウンド・サーバーと通信し、LCRをインバウンド・サーバーに送信するクライアント・アプリケーションを作成する必要があります。
XStream In構成のインバウンド・サーバーは、クライアント・アプリケーションから変更のストリームを受信します。インバウンド・サーバーは、これらの変更をOracleデータベース内のデータベース・オブジェクトに適用することも、これらの変更をカスタマイズされた方法でを処理することもできます。クライアント・アプリケーションは、インバウンド・サーバーに接続し、OCIまたはJavaインタフェースを使用して、LCRにカプセル化された行変更とDDL変更を送信できます。
前提条件
XStream Inを構成する前に、次の前提条件が満たされていることを確認してください。
-
XStream Inの準備で説明しているタスクを完了します。
XStream In構成例の前提
この項では、次のことを想定しています。
-
インバウンド・サーバーの名前は
xinです。 -
インバウンド・サーバーは、XStreamクライアント・アプリケーションから受信したすべての変更を適用します。
-
インバウンド・サーバーが使用するキューは
xstrmadmin.xin_queueです。
図9-1に、このXStream In構成の概要を示します。
インバウンド・サーバーの作成手順
-
SQL*Plusで、インバウンド・サーバーを実行するデータベースにXStream管理者として接続します。
CDBでXStream Inを構成する場合は、インバウンド・サーバーが変更を適用するコンテナに接続します。このコンテナには、CDBルート、PDB、アプリケーション・ルートまたはアプリケーションPDBを使用できます。インバウンド・サーバーは、自身が配置されているコンテナでのみ変更を適用できます。
関連項目:
-
SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照
-
SQL*PlusでのCDBのコンテナへの接続の詳細は、Oracleマルチテナント管理者ガイドを参照してください
-
CDBでのXStream Inの使用方法の詳細は、XStream Inとマルチテナント環境を参照
-
-
CREATE_INBOUNDプロシージャを実行します。たとえば、次の
CREATE_INBOUNDプロシージャは、xinという名前のインバウンド・サーバーを構成します。BEGIN DBMS_XSTREAM_ADM.CREATE_INBOUND( server_name => 'xin', queue_name => 'xin_queue'); END; /このプロシージャを実行すると、次のアクションが実行されます。
-
xinという名前のインバウンド・サーバーを作成します。 -
xin_queueという名前のキューをインバウンド・サーバーのキューとして設定します。このキューが存在しない場合は、これを作成します。このキューは、クライアント・アプリケーションによって送信されたLCRは格納しません。かわりに、LCRでエラーが発生した場合に、エラー・トランザクションを格納します。現在のユーザーはキューの所有者です。この例では、現在のユーザーはXStream管理者です。 -
現在のユーザーをインバウンド・サーバーの適用ユーザーとして設定します。この例では、現在のユーザーはXStream管理者です。クライアント・アプリケーションは、インバウンド・サーバーと対話するために、適用ユーザーとしてデータベースに接続する必要があります。
ヒント:
デフォルトでは、インバウンド・サーバーはルールまたはルール・セットを使用しません。このため、クライアント・アプリケーションによって送信されたすべてのLCRが処理されます。ルールおよびルール・セットを追加するには、
DBMS_XSTREAM_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照してください。 -
-
必要に応じて、インバウンド・サーバーの適用ハンドラを作成します。
適用ハンドラはオプションです。適用ハンドラは、インバウンド・サーバーに送信されたLCRをカスタマイズされた方法で処理します。
関連項目:
-
インバウンド・サーバーに接続してLCRを送信するクライアント・アプリケーションを作成および実行します。
関連項目:
サンプル・アプリケーションについては、サンプルXStreamクライアント・アプリケーションを参照
-
インバウンド・サーバーが使用不可の場合は、インバウンド・サーバーを起動します。
たとえば、次のように入力します。
exec DBMS_APPLY_ADM.START_APPLY('xin');
親トピック: XStream Inの構成
