5 XStream Outの管理

XStream Outコンポーネントとそのルールを管理できます。

5.1 XStream Outの管理について

XStream Out構成の一部であるデータベース・コンポーネント(アウトバウンド・サーバー、取得プロセス、ルールなど)を変更できます。

XStream Outデータベース・コンポーネントを管理するためのメイン・インタフェースはPL/SQLです。具体的には、オラクル社が提供する次のPL/SQLパッケージを使用してXStream Outを管理します。

5.2 アウトバウンド・サーバーの管理

アウトバウンド・サーバーを管理できます。具体的には、アウトバウンド・サーバーの開始、停止、適用パラメータの設定、接続ユーザーの変更を行うことができます。

5.2.1 アウトバウンド・サーバーの起動

論理変更レコード(LCR)をXStreamクライアント・アプリケーションに送信するには、アウトバウンド・サーバーを有効にする必要があります。DBMS_OUTBOUND_ADMパッケージのSTART_OUTBOUNDプロシージャを実行して、既存のアウトバウンド・サーバーを起動します。

アウトバウンド・サーバーを起動するには、次のようにします。

  1. アウトバウンド・サーバー・データベースにXStream管理者として接続します。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  2. 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構成での問題のトラブルシューティングを行う際に、アウトバウンド・サーバーを停止させる場合があります。

アウトバウンド・サーバーを停止する方法:

  1. アウトバウンド・サーバー・データベースにXStream管理者として接続します。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  2. 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プロシージャを使用します。適用パラメータはアウトバウンド・サーバーの動作を制御します。

アウトバウンド・サーバーのパラメータの設定方法:

  1. アウトバウンド・サーバー・データベースにXStream管理者として接続します。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  2. 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に設定されているか、または指定されていない場合、パラメータはデフォルト値に設定されます。

関連項目:

5.2.4 アウトバウンド・サーバーの接続ユーザーの変更

クライアント・アプリケーションは、接続ユーザーとしてアウトバウンド・サーバーに接続します。DBMS_XSTREAM_ADMパッケージのALTER_OUTBOUNDプロシージャを使用して、アウトバウンド・サーバーの接続ユーザーを変更できます。

接続ユーザーとはLCRストリームを取得するためにアウトバウンド・サーバーに接続できるユーザーのことです。クライアント・アプリケーションは、接続ユーザーとしてアウトバウンド・サーバーに接続する必要があります。

クライアント・アプリケーションが別のユーザーとしてアウトバウンド・サーバーに接続する必要がある場合は、connect_userを変更できます。接続ユーザーに必要な権限が付与されていることを確認してください。

注意:

デフォルトのconnect_userはアウトバウンド・サーバーを構成したユーザーです。クライアント・アプリケーションを別のユーザーとして実行する必要がある場合は、次に示す手順に従ってください。

アウトバウンド・サーバーのconnect_userを変更する方法:

  1. アウトバウンド・サーバー・データベースにXStream管理者として接続します。

    XStream管理者がアウトバウンド・サーバーの接続ユーザーを変更するにはDBAロールを付与されている必要があります。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  2. 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パッケージにより管理できるかどうかを確認する方法:

  1. アウトバウンド・サーバー・データベースにXStream管理者として接続します。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  2. 次の問合せを実行します。

    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
    

    アウトバウンド・サーバーのCapture Process Nameが非NULLである場合、DBMS_XSTREAM_ADMパッケージは取得プロセスを管理できます。この場合、DBMS_CAPTURE_ADMパッケージを使用して取得プロセスを管理することもできます。ただし、可能ならば、DBMS_XSTREAM_ADMパッケージを使用してアウトバウンド・サーバーの取得プロセスを管理する方を、通常はお薦めします。

    アウトバウンド・サーバーのCapture Process NameNULLである場合、DBMS_XSTREAM_ADMパッケージは取得プロセスを管理できません。この場合、DBMS_CAPTURE_ADMパッケージを使用して取得プロセスを管理する必要があります。

5.3.2 取得プロセスの起動

データベースの変更を取得し、XStreamアウトバウンド・サーバーに変更を送信するには、取得プロセスを有効にする必要があります。既存の取得プロセスを起動するには、DBMS_CAPTURE_ADMパッケージのSTART_CAPTUREプロシージャを実行します。

取得プロセスを起動する方法:

  1. 取得プロセス・データベースにXStream管理者として接続します。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  2. 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構成での問題のトラブルシューティングを行う際に、取得プロセスを停止させる場合があります。

取得プロセスを停止する方法:

  1. 取得プロセス・データベースにXStream管理者として接続します。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  2. 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プロシージャを使用して、取得プロセス・パラメータを設定します。

取得プロセス・パラメータを設定するには:

  1. 取得プロセス・データベースにXStream管理者として接続します。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  2. 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に設定されているか、または指定されていない場合、パラメータはデフォルト値に設定されます。

関連項目:

5.3.5 アウトバウンド・サーバーの取得プロセスの取得ユーザーの変更

取得ユーザーとは、そのセキュリティ・ドメイン内で、取得プロセスがREDOログから変更を取得するユーザーです。

DBMS_XSTREAM_ADMパッケージのALTER_OUTBOUNDプロシージャを使用して、アウトバウンド・サーバーの変更を取得する取得プロセスの取得ユーザーを変更できます。

取得プロセスで、異なるセキュリティ・ドメイン内の変更を取得する必要がある場合は、取得ユーザーを変更できます。DBAロールを付与されたユーザーだけが、取得プロセスの取得ユーザーを変更できます。取得ユーザーに必要な権限が付与されていることを確認してください。取得ユーザーを変更すると、取得プロセスで使用されるキューに対するエンキュー権限がALTER_OUTBOUNDプロシージャによって新しい取得ユーザーに付与され、そのユーザーがセキュアなキュー・ユーザーとして構成されます。

注意:

Oracle Database Vaultがインストールされている場合、取得ユーザーを変更するユーザーにBECOMEUSERシステム権限を付与する必要があります。Oracle Database Vaultがインストールされていない場合は、ユーザーにこの権限を付与する必要はありません。必要に応じて、取得ユーザーの変更後に、ユーザーからBECOMEUSERシステム権限を取り消すことができます。

関連項目:

取得ユーザーに必要な権限の詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照してください。

アウトバウンド・サーバーの取得プロセスの取得ユーザーを変更する方法:

  1. DBMS_XSTREAM_ADMパッケージで取得プロセスを管理できるかどうかを判断します。DBMS_XSTREAM_ADMパッケージが取得プロセスを管理できるかどうかのチェックを参照してください。

    チェックに基づいて、適切な手順を実行します。

    • 取得プロセスを、DBMS_XSTREAM_ADMパッケージを使用して管理できる場合は、ステップ2に進みます。

    • DBMS_XSTREAM_ADMパッケージを使用して取得プロセスを管理できない場合、Oracle Streams概要および管理の手順に従います。

  2. アウトバウンド・サーバー・データベースにXStream管理者として接続します。

    取得ユーザーを変更するには、ALTER_OUTBOUNDプロシージャを起動するユーザーにDBAロールが付与されている必要があります。取得ユーザーをSYSに設定できるのは、SYSユーザーに限られています。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  3. 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_scnstart_timeパラメータは相互に排他的です。

  • データベースの通常の再起動後に、取得プロセスの開始SCNを設定する必要はありません。

5.3.6.1 アウトバウンド・サーバーの取得プロセスの開始SCNの変更

アウトバウンド・サーバーの取得プロセスの開始SCNは変更できます。

取得プロセスの開始SCNを変更する方法:

  1. DBMS_XSTREAM_ADMパッケージで取得プロセスを管理できるかどうかを判断します。DBMS_XSTREAM_ADMパッケージが取得プロセスを管理できるかどうかのチェックを参照してください。

    チェックに基づいて、適切な手順を実行します。

    • 取得プロセスを、DBMS_XSTREAM_ADMパッケージを使用して管理できる場合は、ステップ2に進みます。

    • DBMS_XSTREAM_ADMパッケージを使用して取得プロセスを管理できない場合、Oracle Streams概要および管理の手順に従います。

  2. アウトバウンド・サーバー・データベースにXStream管理者として接続します。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  3. 取得プロセスの先頭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値以上にする必要があります。

  4. ALTER_OUTBOUNDプロシージャを実行して、次のパラメータを指定します。

    • server_name: アウトバウンド・サーバーの名前を指定します。

    • start_scn: 取得プロセスが変更の取得を開始するSCNを指定します。

    取得プロセスが有効な場合、start_scnパラメータがNULL以外のときは、ALTER_OUTBOUNDプロシージャは自動的に取得プロセスを停止し、再起動します。

    取得プロセスが無効な場合、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 アウトバウンド・サーバーの取得プロセスの開始時間の変更

アウトバウンド・サーバーの取得プロセスの開始時間を変更できます。

取得プロセスの開始時間を変更する方法:

  1. DBMS_XSTREAM_ADMパッケージで取得プロセスを管理できるかどうかを判断します。DBMS_XSTREAM_ADMパッケージが取得プロセスを管理できるかどうかのチェックを参照してください。

    チェックに基づいて、適切な手順を実行します。

    • 取得プロセスを、DBMS_XSTREAM_ADMパッケージを使用して管理できる場合は、ステップ2に進みます。

    • DBMS_XSTREAM_ADMパッケージを使用して取得プロセスを管理できない場合、Oracle Streams概要および管理の手順に従います。

  2. アウトバウンド・サーバー・データベースにXStream管理者として接続します。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  3. 取得プロセスの先頭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に対応する時間と同じである必要があります。

  4. ALTER_OUTBOUNDプロシージャを実行して、次のパラメータを指定します。

    • server_name: アウトバウンド・サーバーの名前を指定します。

    • start_time: 取得プロセスが変更の取得を開始する時間を指定します。

    取得プロセスが有効な場合、start_timeパラメータがNULL以外のときは、ALTER_OUTBOUNDプロシージャは自動的に取得プロセスを停止し、再起動します。

    取得プロセスが無効な場合、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を設定するには、次の手順を実行します。

  1. 取得プロセス・データベースにXStream管理者として接続します。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  2. 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構成に追加する手順:

  1. アウトバウンド・サーバー・データベースにXStream管理者として接続します。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  2. 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;
/
5.4.1.2 アウトバウンド・サーバーのポジティブ・ルール・セットへのサブセット・ルールの追加

DBMS_XSTREAM_ADMパッケージのADD_SUBSET_OUTBOUND_RULESプロシージャを使用して、アウトバウンド・サーバーのポジティブ・ルール・セットにサブセット・ルールを追加できます。

ADD_SUBSET_OUTBOUND_RULESプロシージャでは、アウトバウンド・サーバーのポジティブ・ルール・セットに、DMLの変更に関してのルールのみが追加されます。DDLの変更に関するルールは追加されず、取得プロセスのルール・セットにルールは追加されません。

アウトバウンド・サーバーのポジティブ・ルール・セットにサブセット・ルールを追加する手順:

  1. アウトバウンド・サーバー・データベースにXStream管理者として接続します。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  2. ADD_SUBSET_OUTBOUND_RULESプロシージャを実行して、次のパラメータを指定します。

    • server_name: アウトバウンド・サーバーの名前を指定します。

    • table_name: データのサブセットの取得先であり、ストリーミングの対象となる表を指定します。

    • condition: 表の行のサブセットに対する変更をストリーミングするサブセット条件(SQL文でのWHERE句と同様)を指定します。

    • column_list: 保持または破棄する列のサブセットを指定するか、すべての列を保持する場合はNULLを指定します。

    • keep: column_listパラメータにリストされている列を保持するにはTRUEを指定し、column_listパラメータの列を破棄するにはFALSEを指定します。

    column_listNULL以外に設定され、keepTRUEに設定されている場合、このプロシージャは、column_listにリストされた列に対して、keep列の宣言ルールベース変換を作成します。

    column_listNULL以外に設定され、keepFALSEに設定されている場合、このプロシージャは、column_listにリストされた各列に対して、delete列の宣言ルールベースの変換を作成します。

  3. サブセット・ルールを、取得プロセスのルール・セットまたはアウトバウンド・サーバーに行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コンポーネントにカスタム条件を含むルールを追加する手順:

  1. XStream Outコンポーネントが実行されているデータベースにXStream管理者として接続します。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  2. 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パラメータにFALSEinclude_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;
/

関連項目:

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構成から削除する手順:

  1. アウトバウンド・サーバー・データベースにXStream管理者として接続します。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  2. 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の変更に関するルールは削除されず、取得プロセスのルール・セットからルールは削除されません。

アウトバウンド・サーバーのポジティブ・ルール・セットからサブセット・ルールを削除する手順:

  1. アウトバウンド・サーバー・データベースにXStream管理者として接続します。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  2. 次の問合せを実行して、サブセット・ルールのルール名を判別します。

    SELECT RULE_OWNER, SUBSETTING_OPERATION, RULE_NAME 
       FROM ALL_XSTREAM_RULES 
       WHERE SUBSETTING_OPERATION IS NOT NULL;
    
  3. REMOVE_SUBSET_OUTBOUND_RULESプロシージャを実行して、ステップ2で表示されたルールのリストから、削除するルールを指定します。

    たとえば、ステップ2で次のような結果が返されたとします。

    RULE_OWNER                     SUBSET RULE_NAME
    ------------------------------ ------ ------------------------------
    XSTRMADMIN                     INSERT EMPLOYEES71
    XSTRMADMIN                     UPDATE EMPLOYEES72
    XSTRMADMIN                     DELETE EMPLOYEES73
    
  4. サブセット・ルールが、取得プロセスのルール・セットと、アウトバウンド・サーバーに行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つのルールまたはすべてのルールを削除する手順:

  1. XStream Outコンポーネントが実行されているデータベースにXStream管理者として接続します。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  2. ルール名およびXStreamコンポーネントの名前を判別します。

    この情報を表示する問合せについては、XStreamルールの監視を参照してください。

  3. 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_COLUMNDELETE_COLUMNKEEP_COLUMNSRENAME_COLUMNRENAME_SCHEMARENAME_TABLEプロシージャを使用します。

5.5.1 宣言ルールベースの変換の追加

宣言ルールベースの変換をDMLルールに追加する方法の例を示します。

注意:

DMLルールに対してのみ宣言ルールベースの変換を指定できます。DDLルールには指定できません。

5.5.1.1 表名を変更する宣言ルールベースの変換の追加

DBMS_XSTREAM_ADMパッケージのRENAME_TABLEプロシージャを使用して、行LCR内の表名を変更する宣言ルールベースの変換を追加します。

この項の例では、xstrmadminスキーマのjobs12ルールに宣言ルールベースの変換を追加します。

  1. アウトバウンド・サーバー・データベースにXStream管理者として接続します。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  2. 次のプロシージャを実行します。
    BEGIN 
      DBMS_XSTREAM_ADM.RENAME_TABLE(
        rule_name       => 'xstrmadmin.jobs12',
        from_table_name => 'hr.jobs',
        to_table_name   => 'hr.assignments', 
        step_number     => 0,
        operation       => 'ADD');
    END;
    /
    

このプロシージャによって追加された宣言ルールベースの変換では、ルール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ルールに宣言ルールベースの変換を追加します。

  1. アウトバウンド・サーバー・データベースにXStream管理者として接続します。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  2. 次のプロシージャを実行します。
    BEGIN 
      DBMS_XSTREAM_ADM.ADD_COLUMN(
        rule_name    => 'xstrmadmin.employees35',
        table_name   => 'hr.employees',
        column_name  => 'birth_date', 
        column_value => ANYDATA.ConvertDate(NULL),
        value_type   => 'NEW',
        step_number  => 0,
        operation    => 'ADD');
    END;
    /
    

このプロシージャによって追加された宣言ルールベースの変換では、ルールemployees35が行LCRについてTRUEと評価された場合に、行LCR内のhr.employees表の行に、データ型DATEbirth_date列が追加されます。

ANYDATA.ConvertDateファンクションによって列の型および列の値が指定されることに注意してください。この例では、追加された列の値はNULLです。ただし、有効な日付を指定することもできます。追加する列に適したANYDATAファンクションを使用します。たとえば、追加する列のデータ型がNUMBERである場合、ANYDATA.ConvertNumberファンクションを使用します。

value_typeパラメータがNEWに設定されており、これは、行LCR内の新しい値に列が追加されることを示しています。OLDを指定して、古い値に列を追加することもできます。

employees35ルールに複数の宣言ルールベースの変換が指定された場合、step_numberパラメータが0(ゼロ)に設定されているため、この変換はデフォルトの変換順序に従って実行されます。また、operationパラメータがADDに設定されており、変換はルールから削除されるのではなく、ルールに追加されることを示しています。

注意:

ADD_COLUMNプロシージャはオーバーロードされます。column_functionパラメータを指定すると、追加された列の値を現行のシステム日付またはタイムスタンプにすることができます。column_valuecolumn_functionパラメータは相互に排他的です。

関連項目:

AnyDataタイプのファンクションの詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照してください。

5.5.2 既存の宣言ルールベースの変換の上書き

DBMS_XSTREAM_ADMパッケージを使用して、既存の宣言ルールベースの変換を上書きできます。

宣言ルールベースの変換を追加するプロシージャのoperationパラメータをADDに設定すると、次のリストのパラメータが既存の変換パラメータと一致した場合に、既存の宣言ルールベースの変換が上書きされます。

  • ADD_COLUMNプロシージャ: rule_nametable_namecolumn_nameおよびstep_numberパラメータ

  • DELETE_COLUMNプロシージャ: rule_nametable_namecolumn_nameおよびstep_numberパラメータ

  • KEEP_COLUMNSプロシージャ: rule_nametable_namecolumn_listおよびstep_numberパラメータ、またはrule_nametable_namecolumn_tableおよびstep_numberパラメータ(column_listおよびcolumn_tableパラメータは相互に排他的です)

  • RENAME_COLUMNプロシージャ: rule_nametable_namefrom_column_nameおよびstep_numberパラメータ

  • RENAME_SCHEMAプロシージャ: rule_namefrom_schema_nameおよびstep_numberパラメータ

  • RENAME_TABLEプロシージャ: rule_namefrom_table_nameおよびstep_numberパラメータ

既存のルールベースの変換を上書きする手順:

  1. アウトバウンド・サーバー・データベースにXStream管理者として接続します。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  2. 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を指定します。

宣言ルールベースの変換を削除する手順:

  1. アウトバウンド・サーバー・データベースにXStream管理者として接続します。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  2. 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

NULL

NULL

指定したルールからすべての表名変更変換が削除されます

NULL以外

NULL

NULL

指定したfrom_table_nameを含むすべての表名変更変換が、指定したルールから削除されます

NULL

NULL以外

NULL

指定したto_table_nameを含むすべての表名変更変換が、指定したルールから削除されます

NULL

NULL

NULL以外

指定したstep_numberを含むすべての表名変更変換が、指定したルールから削除されます

NULL以外

NULL以外

NULL

指定したfrom_table_nameおよびto_table_nameを含むすべての表名変更変換が、指定したルールから削除されます

NULL

NULL以外

NULL以外

指定したto_table_nameおよびstep_numberを含むすべての表名変更変換が、指定したルールから削除されます

NULL以外

NULL

NULL以外

指定したfrom_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プロシージャはアウトバウント・サーバーのみを削除します。キューは削除されません。

また、次の条件が両方とも満たされている場合は、アウトバウンド・サーバーの取得プロセスも削除されます。

このプロシージャがキューを削除できても取得プロセスを管理できない場合には、取得プロセスを削除せずにキューが削除されます。

アウトバウンド・サーバーを削除する手順:

  1. アウトバウンド・サーバー・データベースにXStream管理者として接続します。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  2. DROP_OUTBOUNDプロシージャを実行します。

例5-26 アウトバウンド・サーバーの削除

xoutという名前のアウトバウンド・サーバーを削除するには、次のプロシージャを実行します。

exec DBMS_XSTREAM_ADM.DROP_OUTBOUND('xout');

関連項目:

5.7 XStream Out構成の削除

マルチテナント・コンテナ・データベース(CDB)または非CDBのXStream Out構成を削除するには、DBMS_XSTREAM_ADMパッケージのREMOVE_XSTREAM_CONFIGURATIONプロシージャを実行します。

注意:

このプロシージャは、データベースでXStream Out構成全体を削除する必要がある場合にのみ実行してください。このプロシージャでは、すべてのXStream Inコンポーネント、Oracle GoldenGateコンポーネントおよびOracle Streamsコンポーネントもデータベースから削除されます。

XStream Out構成を削除する手順:

  1. アウトバウンド・サーバー・データベースにXStream管理者として接続します。

    CDBで、CDBルートに接続します。

    SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。

  2. 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構成が削除されます。

  3. データベースのXStream管理者を削除します(可能な場合)。

関連項目:

REMOVE_XSTREAM_CONFIGURATIONプロシージャで実行されるアクションの詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照してください。