5 XStream Outの管理
XStream Outコンポーネントとそのルールを管理できます。
5.1 XStream Outの管理について
XStream Out構成の一部で、アウトバウンド・サーバー、取得プロセス、ルールなどのデータベース・コンポーネントを変更できます。
XStream Outデータベース・コンポーネントを管理するためのメイン・インタフェースはPL/SQLです。具体的には、オラクル社が提供する次のPL/SQLパッケージを使用してXStream Outを管理します。
-
DBMS_XSTREAM_ADMDBMS_XSTREAM_ADMパッケージは、XStream Outを管理するためのメイン・パッケージです。このパッケージには、アウトバウンド・サーバーを構成、変更または削除するためのサブプログラムが含まれます。また、このパッケージでは、取得プロセスやアウトバウンド・サーバーで使用されるルールを変更できます。追記:
このパッケージの詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスを参照
-
DBMS_XSTREAM_AUTHDBMS_XSTREAM_AUTHパッケージでは、XStream管理者を構成および変更できます。関連項目:
-
このパッケージを使用してXStream管理者を作成する手順については、すべてのデータベースでのXStream管理者の構成を参照
-
このパッケージの詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスを参照
-
-
DBMS_APPLY_ADMDBMS_APPLY_ADMパッケージでは、アウトバウンド・サーバーを変更できます。関連項目:
このパッケージの詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスを参照
-
DBMS_CAPTURE_ADMDBMS_CAPTURE_ADMパッケージでは、取得プロセスを構成および変更できます。関連項目:
このパッケージの詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスを参照
5.2 アウトバウンド・サーバーの管理
アウトバウンド・サーバーの開始、停止、適用パラメータの設定、および接続ユーザーの変更を行うことで、アウトバウンド・サーバーを管理できます。
5.2.1 アウトバウンド・サーバーの起動
論理変更レコード(LCR)をXStreamクライアント・アプリケーションに送信するには、アウトバウンド・サーバーを有効にする必要があります。DBMS_OUTBOUND_ADMパッケージのSTART_OUTBOUNDプロシージャを実行して、既存のアウトバウンド・サーバーを起動します。
アウトバウンド・サーバーを起動するには、次のようにします。
-
アウトバウンド・サーバー・データベースにXStream管理者として接続します。
SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。
-
DBMS_XSTREAM_ADMパッケージのSTART_OUTBOUNDプロシージャを実行して、server_nameパラメータにアウトバウンド・サーバーを指定します。
次の例では、xoutという名前のアウトバウンド・サーバーが起動します。
例5-1 アウトバウンド・サーバーxoutの起動
BEGIN
DBMS_XSTREAM_ADM.START_OUTBOUND(
server_name => 'xout');
END;
/注意:
XStreamクライアント・アプリケーションがアウトバウンド・サーバーに接続された場合、アウトバウンド・サーバーおよびアウトバウンド・サーバーの取得プロセスのいずれかが無効になっている場合は、それらを自動的に起動します。
関連項目:
Oracle Enterprise Manager Cloud Controlを使用して適用プロセスまたはアウトバウンド・サーバーを起動する手順については、Oracle Enterprise Manager Cloud Controlのオンライン・ヘルプを参照
5.2.2 アウトバウンド・サーバーの停止
DBMS_XSTREAM_ADMパッケージのSTOP_SERVERプロシージャを実行して、既存のアウトバウンド・サーバーを停止します。XStream構成での問題のトラブルシューティングを行う際に、アウトバウンド・サーバーを停止することがあります。
アウトバウンド・サーバーを停止する方法:
-
アウトバウンド・サーバー・データベースにXStream管理者として接続します。
SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。
-
DBMS_XSTREAM_ADMパッケージのSTOP_SERVERプロシージャを実行して、server_nameパラメータのアウトバウンド・サーバーを指定します。
次の例では、xoutという名前のアウトバウンド・サーバーを停止します。
例5-2 アウトバウンド・サーバーxoutの停止
BEGIN
DBMS_XSTREAM_ADM.STOP_OUTBOUND(
server_name => 'xout');
END;
/関連項目:
Oracle Enterprise Manager Cloud Controlを使用して適用プロセスまたはアウトバウンド・サーバーを停止する手順については、Oracle Enterprise Manager Cloud Controlのオンライン・ヘルプを参照
5.2.3 アウトバウンド・サーバーの適用パラメータの設定
DBMS_XSTREAM_ADMパッケージのSET_PARAMETERプロシージャを使用して、アウトバウンド・サーバーの適用パラメータを設定します。適用パラメータはアウトバウンド・サーバーの動作を制御します。
アウトバウンド・サーバー・パラメータの設定方法:
-
アウトバウンド・サーバー・データベースにXStream管理者として接続します。
SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。
-
DBMS_XSTREAM_ADMパッケージのSET_PARAMETERプロシージャを実行します。
例5-3 アウトバウンド・サーバー・パラメータの設定
次の例では、xoutという名前のアウトバウンド・サーバーのdisable_on_errorパラメータをNに設定します。
BEGIN
DBMS_XSTREAM_ADM.SET_PARAMETER(
streams_name => 'xout',
streams_type => 'apply',
parameter => 'disable_on_error',
value => 'N');
END;
/
例5-4 デフォルト値へのアウトバウンド・サーバー・パラメータの設定
valueパラメータがNULLに設定されているか、または指定されていない場合、パラメータはデフォルト値に設定されます。次の例では、MAX_SGA_SIZE適用パラメータをNULLに設定します。
BEGIN
DBMS_XSTREAM_ADM.SET_PARAMETER(
streams_name => 'xout',
streams_type => 'apply',
parameter => 'max_sga_size',
value => NULL);
END;
/
注意:
-
valueパラメータは、パラメータ値が数値の場合にも、常に
VARCHAR2値として入力されます。 -
valueパラメータがNULLに設定されているか、または指定されていない場合、パラメータはデフォルト値に設定されます。
関連項目:
-
Oracle Enterprise Manager Cloud Controlを使用して適用パラメータを設定する手順については、Oracle Enterprise Manager Cloud Controlのオンライン・ヘルプを参照
-
適用パラメータの詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスを参照
5.2.4 アウトバウンド・サーバーの接続ユーザーの変更
クライアント・アプリケーションは、接続ユーザーとしてアウトバウンド・サーバーに接続します。DBMS_XSTREAM_ADMパッケージのALTER_OUTBOUNDプロシージャを使用して、アウトバウンド・サーバーの接続ユーザーを変更できます。
接続ユーザーとはLCRストリームを取得するためにアウトバウンド・サーバーに接続できるユーザーのことです。クライアント・アプリケーションは、接続ユーザーとしてアウトバウンド・サーバーに連結する必要があります。
クライアント・アプリケーションが別のユーザーとしてアウトバウンド・サーバーに接続する必要がある場合は、connect_userを変更できます。接続ユーザーに必要な権限が付与されていることを確認してください。
注意:
デフォルトのconnect_userはアウトバウンド・サーバーを構成したユーザーです。クライアント・アプリケーションを別のユーザーとして実行する必要がある場合は、次に概要を示す手順に従ってください。
アウトバウンド・サーバーのconnect_userを変更する方法:
-
アウトバウンド・サーバー・データベースにXStream管理者として接続します。
XStream管理者がアウトバウンド・サーバーの接続ユーザーを変更するには
DBAロールを付与されている必要があります。SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。
-
ALTER_OUTBOUNDプロシージャを実行して、次のパラメータを指定します。-
server_name: アウトバウンド・サーバーの名前を指定します。 -
connect_user: 新しい接続ユーザーを指定します。
-
例5-5 アウトバウンド・サーバーの接続ユーザーの変更
xoutという名前のアウトバウンド・サーバーの接続ユーザーをhrに変更するには、次の手順を実行します。
BEGIN
DBMS_XSTREAM_ADM.ALTER_OUTBOUND(
server_name => 'xout',
connect_user => 'hr');
END;
/
5.3 アウトバウンド・サーバーの取得プロセスの管理
アウトバウンド・サーバーの取得プロセスを管理できます。取得プロセスでは、データベースの変更を取得し、アウトバウンド・サーバーに送信します。
5.3.1 DBMS_XSTREAM_ADMパッケージが取得プロセスを管理できるかどうかのチェック
一部のXStream Out構成では、DBMS_XSTREAM_ADMパッケージを使用して、アウトバウンド・サーバーの変更を取得する取得プロセスを管理できます。
DBMS_XSTREAM_ADMパッケージを使用できない場合でも、常にDBMS_CAPTURE_ADMパッケージを使用して取得プロセスを管理できます。
次のいずれかの条件が満たされた場合、DBMS_XSTREAM_ADMパッケージでは、アウトバウンド・サーバーの取得プロセスを管理できます。
-
取得プロセスは、
DBMS_XSTREAM_ADMパッケージのCREATE_OUTBOUNDプロシージャによって作成されました。 -
取得プロセスで使用されたキューは、
CREATE_OUTBOUNDプロシージャによって作成されました。
これらのいずれかの条件が満たされた場合、DBMS_XSTREAM_ADMパッケージでは、次のようにアウトバウンド・サーバーの取得プロセスを管理できます。
-
取得プロセスのルール・セットにルールを追加および削除します
-
取得プロセスの取得ユーザーを変更します
-
開始システム変更番号(SCN)または開始時間を設定します
-
取得プロセスを削除します
DBMS_CAPTURE_ADMパッケージでは、次のように取得プロセスを管理できます。
-
取得プロセスを起動および停止します
-
取得プロセスのルール・セット、取得ユーザー、先頭SCN、開始SCNおよび開始時間の変更を含む、取得プロセスを変更します
-
取得プロセス・パラメータの設定
-
取得プロセスを削除します
アウトバウンド・サーバーの取得プロセスをDBMS_XSTREAM_ADMパッケージにより管理できるかどうかを確認する方法:
-
アウトバウンド・サーバー・データベースにXStream管理者として接続します。
SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。
-
次の問合せを実行します。
COLUMN SERVER_NAME HEADING 'Outbound Server Name' FORMAT A30 COLUMN CAPTURE_NAME HEADING 'Capture Process Name' FORMAT A30 SELECT SERVER_NAME, CAPTURE_NAME FROM ALL_XSTREAM_OUTBOUND;出力は次のようになります。
Outbound Server Name Capture Process Name ------------------------------ ------------------------------ XOUT CAP$_XOUT_4
アウトバウンド・サーバーの
CaptureProcessNameが非NULLである場合、DBMS_XSTREAM_ADMパッケージは取得プロセスを管理できます。この場合、DBMS_CAPTURE_ADMパッケージを使用して取得プロセスを管理することもできます。ただし、通常は、可能であればDBMS_XSTREAM_ADMパッケージを使用してアウトバウンド・サーバーの取得プロセスを管理することをお薦めします。アウトバウンド・サーバーの
CaptureProcessNameがNULLである場合、DBMS_XSTREAM_ADMパッケージは取得プロセスを管理できません。この場合、DBMS_CAPTURE_ADMパッケージを使用して取得プロセスを管理する必要があります。
5.3.2 取得プロセスの起動
データベースの変更を取得し、XStreamアウトバウンド・サーバーに変更を送信するには、取得プロセスを有効にする必要があります。既存の取得プロセスを起動するには、DBMS_CAPTURE_ADMパッケージのSTART_CAPTUREプロシージャを実行します。
取得プロセスを起動する方法:
-
取得プロセス・データベースにXStream管理者として接続します。
SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。
-
DBMS_CAPTURE_ADMパッケージのSTART_CAPTUREプロシージャを実行し、capture_nameパラメータの取得プロセスを指定します。
次の例では、xstream_captureという名前の取得プロセスを開始します。
例5-6 取得プロセスxstream_captureの起動
BEGIN
DBMS_CAPTURE_ADM.START_CAPTURE(
capture_name => 'xstream_capture');
END;
/注意:
XStreamクライアント・アプリケーションがアウトバウンド・サーバーに接続された場合、取得プロセスが無効の場合は、アウトバウンド・サーバーの取得プロセスを自動的に起動します。
関連項目:
Oracle Enterprise Manager Cloud Controlを使用して取得プロセスを起動する手順については、Oracle Enterprise Manager Cloud Controlのオンライン・ヘルプを参照
5.3.3 取得プロセスの停止
既存の取得プロセスを停止するには、DBMS_CAPTURE_ADMパッケージのSTOP_CAPTUREプロシージャを実行します。XStream構成での問題のトラブルシューティングを行う際に、取得プロセスを停止することがあります。
取得プロセスを停止する方法:
-
取得プロセス・データベースにXStream管理者として接続します。
SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。
-
DBMS_CAPTURE_ADMパッケージのSTOP_CAPTUREプロシージャを実行し、capture_nameパラメータの取得プロセスを指定します。
次の例では、xstream_captureという名前の取得プロセスを開始します。
例5-7 取得プロセスxstream_captureの停止
BEGIN
DBMS_CAPTURE_ADM.STOP_CAPTURE(
capture_name => 'xstream_capture');
END;
/関連項目:
Oracle Enterprise Manager Cloud Controlを使用して取得プロセスを停止する手順については、Oracle Enterprise Manager Cloud Controlのオンライン・ヘルプを参照
5.3.4 取得プロセス・パラメータの設定
取得プロセス・パラメータによって、取得プロセスの動作が制御されます。DBMS_CAPTURE_ADMパッケージのSET_PARAMETERプロシージャを使用して、取得プロセス・パラメータを設定します。
取得プロセス・パラメータを設定するには:
-
取得プロセス・データベースにXStream管理者として接続します。
SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。
-
DBMS_CAPTURE_ADMパッケージのSET_PARAMETERプロシージャを実行します。
次の例では、xstream_captureという名前の取得プロセスのparallelismパラメータをデフォルト値の0から1に設定します。parallelismパラメータによって、変更のためにREDOログを同時にマイニングするプロセスの数を制御します。追加のプロセスが起動されてから、取得プロセスの並列性を増やしたことによる効果を監視することをお薦めします。
例5-8 取得プロセス・パラメータの設定
BEGIN
DBMS_CAPTURE_ADM.SET_PARAMETER(
capture_name => 'xstream_capture',
parameter => 'parallelism',
value => '1');
END;
/注意:
-
parallelismパラメータを設定すると、取得プロセスが自動的に停止され、再起動されます。
-
valueパラメータは、パラメータ値が数値の場合にも、常に
VARCHAR2値として入力されます。 -
valueパラメータが
NULLに設定されているか、または指定されていない場合、パラメータはデフォルト値に設定されます。
関連項目:
-
Oracle Enterprise Manager Cloud Controlを使用して取得プロセス・パラメータを設定する手順については、Oracle Enterprise Manager Cloud Controlのオンライン・ヘルプを参照
-
取得プロセス・パラメータの詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照
5.3.5 アウトバウンド・サーバーの取得プロセスの取得ユーザーの変更
取得ユーザーとは、そのセキュリティ・ドメイン内で、取得プロセスがREDOログから変更を取得するユーザーです。
DBMS_XSTREAM_ADMパッケージのALTER_OUTBOUNDプロシージャを使用して、アウトバウンド・サーバーの変更を取得する取得プロセスの取得ユーザーを変更できます。
取得プロセスで、異なるセキュリティ・ドメイン内の変更を取得する必要がある場合は、取得ユーザーを変更できます。DBAロールを付与されたユーザーだけが、取得プロセスの取得ユーザーを変更できます。取得ユーザーに必要な権限が付与されていることを確認してください。取得ユーザーを変更すると、ALTER_OUTBOUNDプロシージャで、取得プロセスで使用されるキューに対するエンキュー権限が新しい取得ユーザーに付与され、そのユーザーがセキュアなキュー・ユーザーとして構成されます。
注意:
Oracle Database Vaultがインストールされている場合、取得ユーザーを変更するユーザーにBECOMEUSERシステム権限を付与する必要があります。Oracle Database Vaultがインストールされていない場合は、ユーザーにこの権限を付与する必要はありません。必要に応じて、取得ユーザーの変更後に、ユーザーからBECOMEUSERシステム権限を取り消すことができます。
関連項目:
取得ユーザーに必要な権限の詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照
アウトバウンド・サーバーの取得プロセスの取得ユーザーを変更する方法:
-
DBMS_XSTREAM_ADMパッケージが取得プロセスを管理できるかどうかを決定します。DBMS_XSTREAM_ADMパッケージが取得プロセスを管理できるかどうかのチェックを参照してください。チェックに基づいて、適切な手順を実行します。
-
取得プロセスを、
DBMS_XSTREAM_ADMパッケージを使用して管理できる場合は、ステップ2に進みます。 -
取得プロセスでは、
DBMS_XSTREAM_ADMパッケージを使用して管理できない場合、Oracle Streams概要および管理の手順に従います。
-
-
アウトバウンド・サーバー・データベースにXStream管理者として接続します。
取得ユーザーを変更するには、
ALTER_OUTBOUNDプロシージャを起動するユーザーにDBAロールが付与されている必要があります。取得ユーザーをSYSに設定できるのは、SYSユーザーに限られています。SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。
-
ALTER_OUTBOUNDプロシージャを実行して、次のパラメータを指定します。-
server_name: アウトバウンド・サーバーの名前を指定します。 -
capture_user: 新しい取得ユーザーを指定します。
-
例5-9 アウトバウンド・サーバーの取得プロセスの取得ユーザーの変更
xoutという名前のアウトバウンド・サーバーの取得ユーザーをhq_adminに変更するには、次の手順を実行します。
BEGIN
DBMS_XSTREAM_ADM.ALTER_OUTBOUND(
server_name => 'xout',
capture_user => 'hq_admin');
END;
/
5.3.6 アウトバウンド・サーバーの取得プロセスの開始SCNまたは開始時間の変更
DBMS_XSTREAM_ADMパッケージのALTER_OUTBOUNDプロシージャを使用して、アウトバウンド・サーバーの変更を取得する取得プロセスの開始システム変更番号(SCN)または開始時間を変更できます。
開始SCNは、取得プロセスが変更の取得を開始するSCNです。開始時間は、取得プロセスが変更の取得を開始する時間です。また、取得プロセスの開始SCNまたは開始時間をリセットするときは、必要なREDOログ・ファイルが取得プロセスで使用できることを確認してください。
取得プロセスから変更を受け取るいずれかの接続先データベースでPoint-in-Timeリカバリが実行された場合、通常は取得プロセスの開始SCNまたは開始時間をリセットします。
注意:
-
ALTER_OUTBOUNDプロシージャのstart_scnパラメータとstart_timeパラメータは相互に排他的です。 -
データベースの通常の再起動後に、取得プロセスの開始SCNを設定する必要はありません。
5.3.6.1 アウトバウンド・サーバーの取得プロセスの開始SCNの変更
アウトバウンド・サーバーの取得プロセスの開始SCNは変更できます。
取得プロセスの開始SCNを変更する方法:
-
DBMS_XSTREAM_ADMパッケージで取得プロセスを管理できるかどうかを判断します。DBMS_XSTREAM_ADMパッケージが取得プロセスを管理できるかどうかのチェックを参照してください。チェックに基づいて、適切な手順を実行します。
-
取得プロセスを、
DBMS_XSTREAM_ADMパッケージを使用して管理できる場合は、ステップ2に進みます。 -
取得プロセスでは、
DBMS_XSTREAM_ADMパッケージを使用して管理できない場合、Oracle Streams概要および管理の手順に従います。
-
-
アウトバウンド・サーバー・データベースにXStream管理者として接続します。
SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。
-
取得プロセスの先頭SCNをチェックします。
COLUMN CAPTURE_PROCESS HEADING 'Capture Process Name' FORMAT A30 COLUMN FIRST_SCN HEADING 'First SCN' FORMAT 99999999999999 SELECT CAPTURE_NAME, FIRST_SCN FROM ALL_CAPTURE; CAPTURE_NAME First SCN ------------------------------ --------------- CAP$_XOUT_1 604426
また、開始SCNを再設定する際、指定した開始SCNは、取得プロセスの先頭SCN値以上にする必要があります。
-
ALTER_OUTBOUNDプロシージャを実行して、次のパラメータを指定します。-
server_name: アウトバウンド・サーバーの名前を指定します。 -
start_scn: 取得プロセスが変更の取得を開始するSCNを指定します。
取得プロセスが有効な場合、
ALTER_OUTBOUNDプロシージャは自動的に停止し、start_scnパラメータがNULL以外のときに取得プロセスを再起動します。取得プロセスが無効な場合、
ALTER_OUTBOUNDプロシージャは、start_scnパラメータがNULL以外のときに取得プロセスを自動的に起動します。 -
例5-10 アウトバウンド・サーバーの取得プロセスの開始SCNの設定
xoutアウトバウンド・サーバーで使用される取得プロセスの開始SCNを650000に設定するには、次の手順を実行します。
BEGIN
DBMS_XSTREAM_ADM.ALTER_OUTBOUND(
server_name => 'xout',
start_scn => 650000);
END;
/
5.3.6.2 アウトバウンド・サーバーの取得プロセスの開始時間の変更
アウトバウンド・サーバーの取得プロセスの開始時間を変更できます。
取得プロセスの開始時間を変更する方法:
-
DBMS_XSTREAM_ADMパッケージで取得プロセスを管理できるかどうかを判断します。DBMS_XSTREAM_ADMパッケージが取得プロセスを管理できるかどうかのチェックを参照してください。チェックに基づいて、適切な手順を実行します。
-
取得プロセスを、
DBMS_XSTREAM_ADMパッケージを使用して管理できる場合は、ステップ2に進みます。 -
取得プロセスでは、
DBMS_XSTREAM_ADMパッケージを使用して管理できない場合、Oracle Streams概要および管理の手順に従います。
-
-
アウトバウンド・サーバー・データベースにXStream管理者として接続します。
SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。
-
取得プロセスの先頭SCNに対応する時間を確認します。
COLUMN CAPTURE_PROCESS HEADING 'Capture Process Name' FORMAT A30 COLUMN FIRST_SCN HEADING 'First SCN' FORMAT A40 SELECT CAPTURE_NAME, SCN_TO_TIMESTAMP(FIRST_SCN) FIRST_SCN FROM ALL_CAPTURE; CAPTURE_NAME First SCN ------------------------------ ---------------------------------------- CAP$_XOUT_1 05-MAY-10 08.11.17.000000000 AM
開始時間を再設定する際、指定した開始時間は、取得プロセスの最初のSCNに対応する時間と同じかそれより大きくする必要があります。
-
ALTER_OUTBOUNDプロシージャを実行して、次のパラメータを指定します。-
server_name: アウトバウンド・サーバーの名前を指定します。 -
start_time: 取得プロセスが変更の取得を開始する時間を指定します。
取得プロセスが有効な場合、
ALTER_OUTBOUNDプロシージャは自動的に停止し、start_timeパラメータがNULL以外のときに取得プロセスを再起動します。取得プロセスが無効な場合、
ALTER_OUTBOUNDプロシージャは、start_timeパラメータがNULL以外のときに取得プロセスを自動的に起動します。次の例では、
xoutという名前のアウトバウンド・サーバーの変更を取得する取得プロセスのstart_timeパラメータを設定します。 -
例5-11 開始時間の特定の時間への設定
xoutアウトバウンド・サーバーで使用される取得プロセスの開始時間を05-MAY-10 11.11.17 AMに設定するには、次の手順を実行します。
BEGIN
DBMS_XSTREAM_ADM.ALTER_OUTBOUND(
server_name => 'xout',
start_time => '05-MAY-10 11.11.17 AM');
END;
/
例5-12 NUMTODSINTERVAL SQL関数を使用した開始時間の設定
xoutアウトバウンド・サーバーで使用される取得プロセスの開始時間を、現在の時間より4時間前に設定するには、次の手順を実行します。
DECLARE
ts TIMESTAMP;
BEGIN
ts := SYSTIMESTAMP - NUMTODSINTERVAL(4, 'HOUR');
DBMS_XSTREAM_ADM.ALTER_OUTBOUND(
server_name => 'xout',
start_time => ts);
END;
/
5.3.7 取得プロセスの先頭SCNの設定
既存の取得プロセスの先頭システム変更番号(SCN)を設定できます。先頭SCNは、取得プロセスで変更を取得できる、REDOログ内のSCNです。
指定する先頭SCNは、次の要件を満たす必要があります。
-
取得プロセスの現在の先頭SCNより大きい値である必要があります。
-
取得プロセスの現在の適用済SCN以下の値である必要があります。ただし、取得プロセスに現在適用されているSCNがゼロである場合は、この条件を満たす必要はありません。
-
取得プロセスの必須チェックポイントSCN以下の値である必要があります。
データベース内の各取得プロセスの現行の先頭SCN、適用済SCNおよび必須チェックポイントSCNを特定するには、次の問合せを使用します。
SELECT CAPTURE_NAME, FIRST_SCN, APPLIED_SCN, REQUIRED_CHECKPOINT_SCN FROM ALL_CAPTURE;
取得プロセスの先頭SCNをリセットすると、新しい先頭SCN設定よりも値が小さい情報が、取得プロセスのLogMinerデータ・ディクショナリから自動的に削除されます。このため、取得プロセスの先頭SCNのリセット後は、その取得プロセスの開始SCNを新しい先頭SCNより小さい値に設定することはできません。また、新しい先頭SCNの設定前の情報を含むREDOログ・ファイルは、取得プロセスでは必要なくなります。
DBMS_CAPTURE_ADMパッケージのALTER_CAPTUREプロシージャを使用して取得プロセスの先頭SCNの値を設定します。
取得プロセスの先頭SCNを設定するには、次の手順を実行します。
-
取得プロセス・データベースにXStream管理者として接続します。
SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。
-
DBMS_CAPTURE_ADMパッケージのALTER_CAPTUREプロシージャを実行して、first_scnパラメータに新しい先頭SCNを指定します。
次の例では、xstream_capture取得プロセスの先頭SCNを351232に設定します。
例5-13 取得プロセスの先頭SCNの設定
BEGIN
DBMS_CAPTURE_ADM.ALTER_CAPTURE(
capture_name => 'xstream_capture',
first_scn => 351232);
END;
/注意:
-
指定された最小SCNが取得プロセスに対する現行の開始時SCNより大きい場合は、現行の開始時SCNが自動的に新しい最小SCNに変更されます。
-
過去のある時点でのREDOログ内の変更を取得する必要がある場合、取得プロセスを作成し、REDOログでの以前のデータ・ディクショナリ・ビルドに対応する先頭SCNを指定できます。
DBMS_CAPTURE_ADMパッケージのBUILDプロシージャによって、REDOログでデータ・ディクショナリ・ビルドが実行されます。 -
DBA_LOGMNR_PURGED_LOGデータ・ディクショナリ・ビューを問い合せて、取得プロセスに不要なREDOログ・ファイルを特定できます。
関連項目:
5.4 XStream Out構成のルールの管理
XStream Out構成に対するルールを管理できます。ルールは、アウトバウンド・サーバーにストリームされるデータベース変更と、アウトバウンド・サーバーがクライアント・アプリケーションにストリームするデータベース変更を制御します。
5.4.1 XStream Out構成へのルールの追加
スキーマ・ルール、表ルールおよびサブセット・ルールをXStream Out構成に追加できます。
5.4.1.1 XStream Out構成へのスキーマ・ルールおよび表ルールの追加
DBMS_XSTREAM_ADMパッケージのALTER_OUTBOUNDプロシージャを使用して、XStream Out構成にスキーマ・ルールおよび表ルールを追加できます。
ALTER_OUTBOUNDプロシージャは、データ操作言語(DML)の変更とデータ定義言語(DDL)の変更の両方に対するルールを追加します。
この項に示す手順に従うと、ALTER_OUTBOUNDプロシージャは常に、アウトバウンド・サーバーのルール・セットのいずれかに、指定されたスキーマおよび表のルールを追加します。DBMS_XSTREAM_ADMパッケージで、アウトバウンド・サーバーの取得プロセスを管理できる場合、ALTER_OUTBOUNDプロシージャでも、この取得プロセスで使用されるルール・セットのいずれかに指定されたスキーマおよび表のルールを追加します。
DBMS_XSTREAM_ADMパッケージで、アウトバウンド・サーバーの取得プロセスを管理できるかどうかを判断するには、DBMS_XSTREAM_ADMパッケージが取得プロセスを管理できるかどうかのチェックを参照してください。DBMS_XSTREAM_ADMパッケージで、アウトバウンド・サーバーの取得プロセスを管理できない場合、ALTER_OUTBOUNDプロシージャは、アウトバウンド・サーバーのルール・セットにのみルールを追加します。この場合、同じスキーマおよび表のルールを取得プロセスのルール・セットにも追加する必要がある場合、DBMS_XSTREAM_ADMパッケージのADD_*_RULESプロシージャを使用して追加することをお薦めします。
また、取得プロセスがアウトバウンド・サーバーとは異なるデータベースで実行されている場合、論理変更レコード(LCR)をアウトバウンド・サーバーのデータベースに送信する伝播にスキーマ・ルールおよび表ルールを追加します。DBMS_XSTREAM_ADMパッケージのADD_*_PROPAGATION_RULESプロシージャを使用してそれらを追加します。
スキーマ・ルールおよび表ルールをXStream Out構成に追加する手順:
-
アウトバウンド・サーバー・データベースにXStream管理者として接続します。
SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。
-
ALTER_OUTBOUNDプロシージャを実行して、次のパラメータを指定します。-
server_name: アウトバウンド・サーバーの名前を指定します。 -
table_names: ルールの追加先の表を指定するか、または表ルールを追加しない場合はNULLを指定します。 -
schema_name: ルールの追加先のスキーマを指定するか、またはスキーマ・ルールを追加しない場合はNULLを指定します。 -
add: ルールが追加されるようにTRUEを指定します。(FALSEを指定するとルールが削除されます) -
inclusion_rule: アウトバウンド・サーバーのポジティブ・ルール・セットにルールを追加するにはTRUEを指定し、アウトバウンド・サーバーのネガティブ・ルール・セットにルールを追加するにはFALSEを指定します。DBMS_XSTREAM_ADMパッケージで、アウトバウンド・サーバーの取得プロセスを管理できる場合、ルールは、この取得プロセスのルール・セットにも追加されます。
-
次の例では、xoutという名前のアウトバウンド・サーバーの構成にルールを追加します。
例5-14 hrスキーマ、oe.orders表、oe.order_items表のルールのポジティブ・ルール・セットへの追加
BEGIN
DBMS_XSTREAM_ADM.ALTER_OUTBOUND(
server_name => 'xout',
table_names => 'oe.orders, oe.order_items',
schema_names => 'hr',
add => TRUE,
inclusion_rule => TRUE);
END;
/例5-15 hrスキーマのルールのネガティブ・ルール・セットへの追加
BEGIN
DBMS_XSTREAM_ADM.ALTER_OUTBOUND(
server_name => 'xout',
table_names => NULL,
schema_names => 'hr',
add => TRUE,
inclusion_rule => FALSE);
END;
/関連項目:
-
取得プロセスのルールの管理の詳細は、Oracle Streams概要および管理を参照
5.4.1.2 アウトバウンド・サーバーのポジティブ・ルール・セットへのサブセット・ルールの追加
DBMS_XSTREAM_ADMパッケージのADD_SUBSET_OUTBOUND_RULESプロシージャを使用して、アウトバウンド・サーバーのポジティブ・ルール・セットにサブセット・ルールを追加できます。
ADD_SUBSET_OUTBOUND_RULESプロシージャでは、アウトバウンド・サーバーのポジティブ・ルール・セットに、DMLの変更に関してのルールのみが追加されます。DDLの変更に関するルールは追加されず、取得プロセスのルール・セットにルールは追加されません。
アウトバウンド・サーバーのポジティブ・ルール・セットにサブセット・ルールを追加する手順:
-
アウトバウンド・サーバー・データベースにXStream管理者として接続します。
SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。
-
ADD_SUBSET_OUTBOUND_RULESプロシージャを実行して、次のパラメータを指定します。-
server_name: アウトバウンド・サーバーの名前を指定します。 -
table_name: データのサブセットを取得し、ストリーミングの対象となる表を指定します。 -
condition: 表の行のサブセットに対する変更をストリーミングするサブセット条件(SQL文でのWHERE句と同様)を指定します。 -
column_list: 保持または破棄する列のサブセットを指定するか、すべての列を保持する場合はNULLを指定します。 -
keep:column_listパラメータにリストされている列を保持するにはTRUEを指定し、column_listパラメータの列を破棄するにはFALSEを指定します。
column_listがNULL以外に設定され、keepがTRUEに設定されている場合、このプロシージャは、column_listにリストされた列に対して、keep列の宣言ルールベース変換を作成します。column_listがNULL以外に設定され、keepがFALSEに設定されている場合、このプロシージャは、column_listにリストされた各列に対して、delete列の宣言ルールベースの変換を作成します。 -
-
取得プロセスのルール・セットまたはアウトバウンド・サーバーに行LCRをストリームする伝播にもサブセット・ルールを追加する必要がある場合、
DBMS_XSTREAM_ADMパッケージのADD_*_RULESプロシージャを使用してそれらを追加します。
例5-16 表内の行のサブセットへ変更をストリームするルールの追加
次の手順では、hr.employees表のdepartment_id値が40である場合にのみ、行変更に対してTRUEと評価するルールが作成されます。
DECLARE
cols DBMS_UTILITY.LNAME_ARRAY;
BEGIN
cols(1) := 'employee_id';
cols(2) := 'first_name';
cols(3) := 'last_name';
cols(4) := 'email';
cols(5) := 'phone_number';
cols(6) := 'hire_date';
cols(7) := 'job_id';
cols(8) := 'salary';
cols(9) := 'commission_pct';
cols(10) := 'manager_id';
cols(11) := 'department_id';
DBMS_XSTREAM_ADM.ADD_SUBSET_OUTBOUND_RULES(
server_name => 'xout',
table_name => 'hr.employees',
condition => 'department_id=40',
column_list => cols);
END;
/例5-17 表の行および列のサブセットへ変更をストリームするルールの追加
次の手順では、hr.employees表のdepartment_id値が40である場合にのみ、行変更に対してTRUEと評価するルールが作成されます。また、この手順では、salaryおよびcommission_pct列のdelete列の宣言ルールベースの変換も作成されます。
BEGIN
DBMS_XSTREAM_ADM.ADD_SUBSET_OUTBOUND_RULES(
server_name => 'xout',
table_name => 'hr.employees',
condition => 'department_id=40',
column_list => 'salary,commission_pct',
keep => FALSE);
END;
/
5.4.1.3 XStream Outコンポーネントへのカスタム条件を含むルールの追加
DBMS_XSTREAM_ADMパッケージ内のルールを作成する手順の一部には、and_conditionパラメータが含まれます。このパラメータでは、システム生成のルールに条件を追加できます。
and_conditionパラメータによって指定される条件は、次のようにAND句を使用してシステム作成ルール条件に追加されます。
(system_condition) AND (and_condition)
指定する条件内の変数は:lcrである必要があります。
XStream Outコンポーネントにカスタム条件を含むルールを追加する手順:
-
XStream Outコンポーネントが実行されているデータベースにXStream管理者として接続します。
SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。
-
ADD_*_RULESプロシージャを実行し、and_conditionパラメータのカスタム条件を指定します。これらのプロシージャの詳細は、システム作成ルールとXStreamを参照
LCRタイプ(行またはDDL)に依存するLCRメンバー・サブプログラムを指定する場合は、このプロシージャによって適切なルールのみが作成されることを確認します。つまり、行LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをTRUEに、include_ddlパラメータをFALSEに設定します。DDL LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをFALSEに、include_ddlパラメータをTRUEに設定します。
たとえば、GET_OBJECT_TYPEメンバー・ファンクションはDDL LCRのみに適用されます。したがって、and_conditionでこのメンバー・ファンクションを使用する場合は、include_dmlパラメータにFALSE、include_ddlパラメータにTRUEを指定します。
例5-18 カスタム条件を含む表ルールの追加
この例では、ADD_TABLE_RULESプロシージャで生成される表ルールは、表がhr.departments、ソース・データベースがdbs1.example.com、タグ値が16進数表現で'02'の場合のみ、TRUEに評価されます。
BEGIN
DBMS_XSTREAM_ADM.ADD_TABLE_RULES(
table_name => 'hr.departments',
streams_type => 'capture',
streams_name => 'xout_capture',
queue_name => 'xstream_queue',
include_dml => TRUE,
include_ddl => TRUE,
include_tagged_lcr => TRUE,
source_database => 'dbs1.example.com',
inclusion_rule => TRUE,
and_condition => ':lcr.get_tag() = HEXTORAW(''02'')');
END;
/
関連項目:
-
LCRメンバー・サブプログラムの詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照
-
タグの詳細は、Oracle Streamsレプリケーション管理者ガイドを参照
5.4.2 XStream Out構成からのルールの削除
XStream Out構成からルールを削除できます。
5.4.2.1 XStream Out構成からのスキーマ・ルールおよび表ルールの削除
DBMS_XSTREAM_ADMパッケージのALTER_OUTBOUNDプロシージャを使用して、XStream Out構成からスキーマ・ルールおよび表ルールを削除できます。ALTER_OUTBOUNDプロシージャは、DMLとDDLの両方の変更のルールを削除します。
この項に示す手順に従うと、ALTER_OUTBOUNDプロシージャでは常に、アウトバウンド・サーバーのルール・セットのいずれかから、指定したスキーマおよび表のルールが削除されます。DBMS_XSTREAM_ADMパッケージで、アウトバウンド・サーバーの取得プロセスを管理できる場合、ALTER_OUTBOUNDプロシージャでは、この取得プロセスで使用されるルール・セットのいずれかからも、指定したスキーマおよび表のルールが削除されます。
DBMS_XSTREAM_ADMパッケージで、アウトバウンド・サーバーの取得プロセスを管理できるかどうかを判断するには、DBMS_XSTREAM_ADMパッケージが取得プロセスを管理できるかどうかのチェックを参照してください。DBMS_XSTREAM_ADMパッケージで、アウトバウンド・サーバーの取得プロセスを管理できない場合、ALTER_OUTBOUNDプロシージャでは、アウトバウンド・サーバーのルール・セットからのみルールが削除されます。この場合、同じスキーマおよび表のルールを取得プロセスのルール・セットからも削除する必要がある場合、手順については、REMOVE_RULEプロシージャを使用したルールの削除を参照してください。
また、取得プロセスがアウトバウンド・サーバーとは異なるデータベースで実行されている場合、LCRをアウトバウンド・サーバーのデータベースに送信する伝播からスキーマ・ルールおよび表ルールを削除します。手順については、REMOVE_RULEプロシージャを使用したルールの削除を参照してください。
スキーマ・ルールおよび表ルールをXStream Out構成から削除する手順:
-
アウトバウンド・サーバー・データベースにXStream管理者として接続します。
SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。
-
ALTER_OUTBOUNDプロシージャを実行して、次のパラメータを指定します。-
server_name: アウトバウンド・サーバーの名前を指定します。 -
table_names: ルールを削除する対象の表を指定するか、または表ルールを削除しない場合はNULLを指定します。 -
schema_name: ルールを削除する対象のスキーマを指定するか、またはスキーマ・ルールを削除しない場合はNULLを指定します。 -
add: ルールが削除されるようにFALSEを指定します。(TRUEを指定するとルールが追加されます) -
inclusion_rule: アウトバウンド・サーバーのポジティブ・ルール・セットからルールを削除するにはTRUEを指定し、アウトバウンド・サーバーのネガティブ・ルール・セットからルールを削除するにはFALSEを指定します。DBMS_XSTREAM_ADMパッケージで、アウトバウンド・サーバーの取得プロセスを管理できる場合、ルールは、この取得プロセスのルール・セットからも削除されます。
次の例では、
xoutという名前のアウトバウンド・サーバーの構成からルールを削除します。 -
例5-19 hrスキーマ、oe.orders表、oe.order_items表のルールのポジティブ・ルール・セットからの削除
BEGIN
DBMS_XSTREAM_ADM.ALTER_OUTBOUND(
server_name => 'xout',
table_names => 'oe.orders, oe.order_items',
schema_names => 'hr',
add => FALSE,
inclusion_rule => TRUE);
END;
/例5-20 hrスキーマのルールのネガティブ・ルール・セットからの削除
BEGIN
DBMS_XSTREAM_ADM.ALTER_OUTBOUND(
server_name => 'xout',
table_names => NULL,
schema_names => 'hr',
add => FALSE,
inclusion_rule => FALSE);
END;
/
5.4.2.2 アウトバウンド・サーバーのポジティブ・ルール・セットからのサブセット・ルールの削除
DBMS_XSTREAM_ADMパッケージのREMOVE_SUBSET_OUTBOUND_RULESプロシージャを使用して、アウトバウンド・サーバーのポジティブ・ルール・セットからサブセット・ルールを削除できます。
REMOVE_SUBSET_OUTBOUND_RULESプロシージャでは、DMLの変更に関するルールのみが削除されます。DDLの変更に関するルールは削除されず、取得プロセスのルール・セットからルールは削除されません。
アウトバウンド・サーバーのポジティブ・ルール・セットからサブセット・ルールを削除する手順:
-
アウトバウンド・サーバー・データベースにXStream管理者として接続します。
SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。
-
次の問合せを実行して、サブセット・ルールのルール名を判別します。
SELECT RULE_OWNER, SUBSETTING_OPERATION, RULE_NAME FROM ALL_XSTREAM_RULES WHERE SUBSETTING_OPERATION IS NOT NULL;
-
REMOVE_SUBSET_OUTBOUND_RULESプロシージャを実行して、ステップ2に表示されているルールのリストから削除するルールを指定します。たとえば、ステップ2で次のような結果が返されたとします。
RULE_OWNER SUBSET RULE_NAME ------------------------------ ------ ------------------------------ XSTRMADMIN INSERT EMPLOYEES71 XSTRMADMIN UPDATE EMPLOYEES72 XSTRMADMIN DELETE EMPLOYEES73
-
サブセット・ルールが、取得プロセスのルール・セットと、アウトバウンド・サーバーに行LCRをストリームする伝播からも削除される必要がある場合、ルールの削除の詳細は、REMOVE_RULEプロシージャを使用したルールの削除を参照してください。
例5-21 アウトバウンド・サーバーのポジティブ・ルール・セットからのサブセット・ルールの削除
xoutアウトバウンド・サーバーのポジティブ・ルール・セットからルールを削除するには、次の手順を実行します。
BEGIN
DBMS_XSTREAM_ADM.REMOVE_SUBSET_OUTBOUND_RULES(
server_name => 'xout',
insert_rule_name => 'xstrmadmin.employees71',
update_rule_name => 'xstrmadmin.employees72',
delete_rule_name => 'xstrmadmin.employees73');
END;
/
5.4.2.3 REMOVE_RULEプロシージャを使用したルールの削除
DBMS_XSTREAM_ADMパッケージのREMOVE_RULEプロシージャを使用して、XStream Outコンポーネントのルール・セットから1つのルールを削除することも、すべてのルールを削除することもできます。
XStream Outコンポーネントには、取得プロセス、伝播、またはアウトバウンド・サーバーがあります。
REMOVE_RULEプロシージャは、DMLとDDLの両方の変更に関するルールのみを削除でき、コンポーネントのポジティブ・ルール・セットまたはネガティブ・ルール・セットのいずれかからルールを削除できます。
アウトバウンド・サーバーのルール・セットから1つのルールまたはすべてのルールを削除する手順:
-
XStream Outコンポーネントが実行されているデータベースにXStream管理者として接続します。
SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。
-
ルール名およびXStreamコンポーネントの名前を決定します。
この情報を表示する問合せについては、XStreamルールの監視を参照してください。
-
REMOVE_RULEプロシージャを実行します。
ポジティブ・ルール・セットを指定するには、inclusion_ruleパラメータをTRUEに設定します。
すべてのルールをルール・セットから削除することを指定するには、rule_nameパラメータをNULLに設定し、ネガティブ・ルール・セットを指定するには、inclusion_ruleパラメータをFALSEに設定します。
例5-22 アウトバウンド・サーバーのルール・セットからのルールの削除
この例では、xoutアウトバウンド・サーバーのポジティブ・ルール・セットからorders12という名前のルールを削除します。
BEGIN DBMS_XSTREAM_ADM.REMOVE_RULE( rule_name => 'orders12', streams_type => 'APPLY', streams_name => 'xout', inclusion_rule => TRUE); /
例5-23 アウトバウンド・サーバーのルール・セットからのすべてのルールの削除
この例では、xoutアウトバウンド・サーバーのネガティブ・ルール・セットからすべてのルールを削除します。
BEGIN DBMS_XSTREAM_ADM.REMOVE_RULE( rule_name => NULL, streams_type => 'APPLY', streams_name => 'xout', inclusion_rule => FALSE); /
5.5 宣言ルールベースの変換の管理
宣言ルールベース変換は、行LCRに対する共通の変換シナリオ・セットを扱います。
宣言ルールベースの変換を管理するには、DBMS_XSTREAM_ADMパッケージのプロシージャADD_COLUMN、DELETE_COLUMN、KEEP_COLUMNS、RENAME_COLUMN、RENAME_SCHEMAおよびRENAME_TABLEを使用します。
関連項目:
5.5.1 宣言ルールベースの変換の追加
例では、宣言ルールベースの変換のDMLルールへの追加を示しています。
注意:
DMLルールに対してのみ宣言ルールベースの変換を指定できます。DDLルールには指定できません。
5.5.1.1 表名を変更する宣言ルールベースの変換の追加
DBMS_XSTREAM_ADMパッケージのRENAME_TABLEプロシージャを使用して、行LCR内の表名を変更する宣言ルールベースの変換を追加します。
この項の例では、xstrmadminスキーマのjobs12ルールに宣言ルールベースの変換を追加します。
このプロシージャによって追加された宣言ルールベースの変換では、ルールjobs12が行LCRについてTRUEと評価された場合に、行LCR内の表hr.jobsの名前がhr.assignmentsに変更されます。jobs12ルールに複数の宣言ルールベースの変換が指定された場合、step_numberパラメータが0(ゼロ)に設定されているため、この変換はデフォルトの変換順序に従って実行されます。また、operationパラメータがADDに設定されており、変換はルールから削除されるのではなく、ルールに追加されることを示しています。
RENAME_TABLEプロシージャでは、表の他にスキーマ名を変更する変換を追加することもできます。たとえば、前述の例でスキーマ名をoeに変更するように指定するには、to_table_nameパラメータにoe.assignmentsを指定します。
5.5.1.2 列を追加する宣言ルールベースの変換の追加
DBMS_XSTREAM_ADMパッケージのADD_COLUMNプロシージャを使用して、行LCR内の行に列を追加する宣言ルールベースの変換を追加します。
この項の例では、xstrmadminスキーマのemployees35ルールに宣言ルールベースの変換を追加します。
このプロシージャによって追加された宣言ルールベースの変換では、ルールemployees35が行LCRについてTRUEと評価された場合に、行LCR内のhr.employees表の行に、データ型DATEのbirth_date列が追加されます。
ANYDATA.ConvertDateファンクションによって列の型および列の値が指定されることに注意してください。この例では、追加された列の値はNULLです。ただし、有効な日付を指定することもできます。追加する列に適したANYDATAファンクションを使用します。たとえば、追加する列のデータ型がNUMBERである場合、ANYDATA.ConvertNumberファンクションを使用します。
value_typeパラメータがNEWに設定されており、これは、行LCR内の新しい値に列が追加されることを示しています。OLDを指定して、古い値に列を追加することもできます。
employees35ルールに複数の宣言ルールベースの変換が指定された場合、step_numberパラメータが0(ゼロ)に設定されているため、この変換はデフォルトの変換順序に従って実行されます。また、operationパラメータがADDに設定されており、変換はルールから削除されるのではなく、ルールに追加されることを示しています。
注意:
ADD_COLUMNプロシージャはオーバーロードされます。column_functionパラメータを指定すると、追加された列の値を現行のシステム日付またはタイムスタンプにすることができます。column_valueとcolumn_functionパラメータは相互に排他的です。
関連項目:
AnyData型ファンクションの詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照
5.5.2 既存の宣言ルールベースの変換の上書き
DBMS_XSTREAM_ADMパッケージを使用して、既存の宣言ルールベースの変換を上書きできます。
宣言ルールベースの変換を追加するプロシージャのoperationパラメータをADDに設定すると、次のリストのパラメータが既存の変換パラメータと一致した場合に、既存の宣言ルールベースの変換が上書きされます。
-
ADD_COLUMNプロシージャ:rule_name、table_name、column_nameおよびstep_numberパラメータ -
DELETE_COLUMNプロシージャ:rule_name、table_name、column_nameおよびstep_numberパラメータ -
KEEP_COLUMNSプロシージャ:rule_name、table_name、column_listおよびstep_numberパラメータ、またはrule_name、table_name、column_tableおよびstep_numberパラメータ(column_listおよびcolumn_tableパラメータは相互に排他的です) -
RENAME_COLUMNプロシージャ:rule_name、table_name、from_column_nameおよびstep_numberパラメータ -
RENAME_SCHEMAプロシージャ:rule_name、from_schema_nameおよびstep_numberパラメータ -
RENAME_TABLEプロシージャ:rule_name、from_table_nameおよびstep_numberパラメータ
既存のルールベースの変換を上書きする手順:
-
アウトバウンド・サーバー・データベースにXStream管理者として接続します。
SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。
-
DBMS_XSTREAM_ADMパッケージの適切なプロシージャを実行し、適切なパラメータを指定します。
例5-24 RENAME_COLUMN宣言ルールベースの変換の上書き
次のプロシージャを実行して、既存の宣言ルールベースの変換を作成したとします。
BEGIN
DBMS_XSTREAM_ADM.RENAME_COLUMN(
rule_name => 'departments33',
table_name => 'hr.departments',
from_column_name => 'manager_id',
to_column_name => 'lead_id',
value_type => 'NEW',
step_number => 0,
operation => 'ADD');
END;
/
次のプロシージャを実行すると、この既存の宣言ルールベースの変換は上書きされます。
BEGIN
DBMS_XSTREAM_ADM.RENAME_COLUMN(
rule_name => 'departments33',
table_name => 'hr.departments',
from_column_name => 'manager_id',
to_column_name => 'lead_id',
value_type => '*',
step_number => 0,
operation => 'ADD');
END;
/
この場合、宣言ルールベースの変換のvalue_typeパラメータがNEWから*に変更されています。つまり、元の変換では新しい値の名前のみが行LCRで変更されますが、新しい変換では古い値と新しい値の両方の名前が行LCRで変更されます。
5.5.3 宣言ルールベースの変換の削除
宣言ルールベースの変換をルールから削除するには、変換を追加するために使用したものと同じプロシージャを使用しますが、operationパラメータにREMOVEを指定します。
宣言ルールベースの変換を削除する手順:
-
アウトバウンド・サーバー・データベースにXStream管理者として接続します。
SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。
-
DBMS_XSTREAM_ADMパッケージの適切なプロシージャを実行し、operationパラメータにREMOVEを指定します。
「宣言ルールベースの変換の管理」に示すいずれかの宣言変換プロシージャでoperationパラメータがREMOVEに設定されている場合、そのプロシージャのrule_nameパラメータ以外のパラメータはオプションになります。これらのオプションのパラメータがNULLに設定されている場合、これらはワイルドカードになります。
前述の例のRENAME_TABLEプロシージャは、1つ以上のオプションのパラメータがNULLに設定されている場合、次のように動作します。
表5-1 RENAME_TABLEプロシージャのオプション・パラメータの動作
| from_table_nameパラメータ | to_table_nameパラメータ | step_numberパラメータ | 結果 |
|---|---|---|---|
|
|
|
|
指定したルールからすべての表名変更変換が削除されます |
|
|
|
|
指定した |
|
|
|
|
指定した |
|
|
|
|
指定した |
|
|
|
|
指定した |
|
|
|
|
指定した |
|
|
|
|
指定した |
オプションのパラメータをNULLに設定してoperationパラメータをREMOVEに設定した場合、他の宣言変換プロシージャも同様に動作します。
例5-25 RENAME_TABLE宣言ルールベースの変換の削除
表名を変更する宣言ルールベースの変換の追加で追加した変換を削除するには、次のプロシージャを実行します。
BEGIN
DBMS_XSTREAM_ADM.RENAME_TABLE(
rule_name => 'strmadmin.jobs12',
from_table_name => 'hr.jobs',
to_table_name => 'hr.assignments',
step_number => 0,
operation => 'REMOVE');
END;
/
5.6 XStream Out構成のコンポーネントの削除
アウトバウンド・サーバーを削除するには、DBMS_XSTREAM_ADMパッケージのDROP_OUTBOUNDプロシージャを使用します。
このプロシージャでは、指定されたアウトバウンド・サーバーが常に削除されます。また、次の条件が両方とも満たされている場合は、アウトバウンド・サーバーで使用されるキューも削除されます。
-
DBMS_XSTREAM_ADMパッケージのADD_OUTBOUNDまたはCREATE_OUTBOUNDプロシージャによってキューが作成されました。 -
アウトバウンド・サーバーは、このキューの唯一のサブスクライバです。
前述の条件のいずれかが満たされていない場合、DROP_OUTBOUNDプロシージャはアウトバウント・サーバーのみを削除します。キューは削除されません。
また、次の条件が両方とも満たされている場合は、アウトバウンド・サーバーの取得プロセスも削除されます。
-
このプロシージャでは、アウトバウンド・サーバーのキューを削除できます。
-
DBMS_XSTREAM_ADMパッケージでは、アウトバウンド・サーバーの取得プロセスを管理できます。DBMS_XSTREAM_ADMパッケージが取得プロセスを管理できるかどうかのチェックを参照してください。
このプロシージャがキューを削除できても取得プロセスを管理できない場合には、取得プロセスを削除せずにキューが削除されます。
アウトバウンド・サーバーを削除する手順:
-
アウトバウンド・サーバー・データベースにXStream管理者として接続します。
SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。
-
DROP_OUTBOUNDプロシージャを実行します。
例5-26 アウトバウンド・サーバーの削除
xoutという名前のアウトバウンド・サーバーを削除するには、次の手順を実行します。
exec DBMS_XSTREAM_ADM.DROP_OUTBOUND('xout');
関連項目:
-
DROP_OUTBOUNDプロシージャの詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照 -
キューまたは取得プロセスの削除の詳細は、Oracle Streams概要および管理を参照
5.7 XStream Out構成の削除
DBMS_XSTREAM_ADMパッケージのREMOVE_XSTREAM_CONFIGURATIONプロシージャを実行して、マルチテナント・コンテナ・データベース(CDB)または非CDBでのXStream Out構成を削除します。
注意:
このプロシージャは、データベースでXStream Out構成全体を削除する必要がある場合にのみ実行してください。このプロシージャでは、すべてのXStream Inコンポーネント、Oracle GoldenGateコンポーネント、およびOracle Streamsコンポーネントもデータベースから削除されます。
XStream Out構成を削除する手順:
-
アウトバウンド・サーバー・データベースにXStream管理者として接続します。
CDBで、CDBルートに接続します。
SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。
-
REMOVE_XSTREAM_CONFIGURATIONプロシージャを実行します。CDB以外では、次の手順を実行します。
EXEC DBMS_XSTREAM_ADM.REMOVE_XSTREAM_CONFIGURATION();
CDBでは、すべてのコンテナが読取り/書込みモードでオープンしていることを確認し、次の手順を実行します。
EXEC DBMS_XSTREAM_ADM.REMOVE_XSTREAM_CONFIGURATION(container => 'ALL');
containerパラメータをALLに設定すると、CDB内のすべてのコンテナからXStream構成が削除されます。 -
データベースのXStream管理者を削除します(可能な場合)。
関連項目:
REMOVE_XSTREAM_CONFIGURATIONプロシージャで実行されるアクションの詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照