5 XStream Outの管理
XStream Outコンポーネントとそのルールを管理できます。
- XStream Outの管理について
XStream Out構成の一部であるデータベース・コンポーネント(アウトバウンド・サーバー、取得プロセス、ルールなど)を変更できます。 - アウトバウンド・サーバーの管理
アウトバウンド・サーバーを管理できます。具体的には、アウトバウンド・サーバーの開始、停止、適用パラメータの設定、接続ユーザーの変更を行うことができます。 - アウトバウンド・サーバーの取得プロセスの管理
アウトバウンド・サーバーの取得プロセスを管理できます。取得プロセスでは、データベースの変更を取得し、アウトバウンド・サーバーに送信します。 - XStream Out構成のルールの管理
XStream Out構成のルールを管理できます。ルールは、アウトバウンド・サーバーにストリームされるデータベース変更と、アウトバウンド・サーバーがクライアント・アプリケーションにストリームするデータベース変更を制御します。 - 宣言ルールベース変換の管理
宣言ルールベース変換は、行LCRに対する共通の変換シナリオ・セットを扱います。 - XStream Out構成のコンポーネントの削除
アウトバウンド・サーバーを削除するには、DBMS_XSTREAM_ADM
パッケージのDROP_OUTBOUND
プロシージャを使用します。 - XStream Out構成の削除
マルチテナント・コンテナ・データベース(CDB)または非CDBのXStream Out構成を削除するには、DBMS_XSTREAM_ADM
パッケージのREMOVE_XSTREAM_CONFIGURATION
プロシージャを実行します。
5.1 XStream Outの管理について
XStream Out構成の一部であるデータベース・コンポーネント(アウトバウンド・サーバー、取得プロセス、ルールなど)を変更できます。
XStream Outデータベース・コンポーネントを管理するためのメイン・インタフェースはPL/SQLです。具体的には、オラクル社が提供する次のPL/SQLパッケージを使用してXStream Outを管理します。
-
DBMS_XSTREAM_ADM
DBMS_XSTREAM_ADM
パッケージは、XStream Outを管理するためのメイン・パッケージです。このパッケージには、アウトバウンド・サーバーを構成、変更または削除するためのサブプログラムが含まれています。また、このパッケージでは、取得プロセスやアウトバウンド・サーバーで使用されるルールを変更できます。追記:
このパッケージの詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスを参照してください。
-
DBMS_XSTREAM_AUTH
DBMS_XSTREAM_AUTH
パッケージでは、XStream管理者を構成および変更できます。関連項目:
-
このパッケージを使用してXStream管理者を作成する手順は、すべてのデータベースでのXStream管理者の構成を参照してください。
-
このパッケージの詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスを参照してください。
-
-
DBMS_APPLY_ADM
DBMS_APPLY_ADM
パッケージでは、アウトバウンド・サーバーを変更できます。関連項目:
このパッケージの詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスを参照してください。
-
DBMS_CAPTURE_ADM
DBMS_CAPTURE_ADM
パッケージでは、取得プロセスを構成および変更できます。関連項目:
このパッケージの詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスを参照してください。
5.2 アウトバウンド・サーバーの管理
アウトバウンド・サーバーを管理できます。具体的には、アウトバウンド・サーバーの開始、停止、適用パラメータの設定、接続ユーザーの変更を行うことができます。
- アウトバウンド・サーバーの起動
論理変更レコード(LCR)をXStreamクライアント・アプリケーションに送信するには、アウトバウンド・サーバーを有効にする必要があります。DBMS_OUTBOUND_ADM
パッケージのSTART_OUTBOUND
プロシージャを実行して、既存のアウトバウンド・サーバーを起動します。 - 既存のアウトバウンド・サーバーの停止
DBMS_XSTREAM_ADM
パッケージのSTOP_SERVER
プロシージャを実行して、既存のアウトバウンド・サーバーを停止します。XStream構成での問題のトラブルシューティングを行う際に、アウトバウンド・サーバーを停止させる場合があります。 - アウトバウンド・サーバーの適用パラメータの設定
DBMS_XSTREAM_ADM
パッケージのSET_PARAMETER
プロシージャを使用して、アウトバウンド・サーバーの適用パラメータを設定します。適用パラメータはアウトバウンド・サーバーの動作を制御します。 - アウトバウンド・サーバーの接続ユーザーの変更
クライアント・アプリケーションは、接続ユーザーとしてアウトバウンド・サーバーに接続します。DBMS_XSTREAM_ADM
パッケージのALTER_OUTBOUND
プロシージャを使用して、アウトバウンド・サーバーの接続ユーザーを変更できます。
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 アウトバウンド・サーバーの取得プロセスの管理
アウトバウンド・サーバーの取得プロセスを管理できます。取得プロセスでは、データベースの変更を取得し、アウトバウンド・サーバーに送信します。
- DBMS_XSTREAM_ADMパッケージが取得プロセスを管理できるかどうかのチェック
XStream Out構成では、DBMS_XSTREAM_ADM
パッケージを使用して、アウトバウンド・サーバーの変更を取得する取得プロセスを管理できます。 - 取得プロセスの起動
データベースの変更を取得し、XStreamアウトバウンド・サーバーに変更を送信するには、取得プロセスを有効にする必要があります。既存の取得プロセスを起動するには、DBMS_CAPTURE_ADM
パッケージのSTART_CAPTURE
プロシージャを実行します。 - 取得プロセスの停止
既存の取得プロセスを停止するには、DBMS_CAPTURE_ADM
パッケージのSTOP_CAPTURE
プロシージャを実行します。XStream構成での問題のトラブルシューティングを行う際に、取得プロセスを停止させる場合があります。 - 取得プロセス・パラメータの設定
取得プロセスの動作方法は、取得プロセス・パラメータによって制御されます。DBMS_CAPTURE_ADM
パッケージのSET_PARAMETER
プロシージャを使用して、取得プロセス・パラメータを設定します。 - アウトバウンド・サーバーの取得ユーザーの変更
取得ユーザーとは、そのセキュリティ・ドメイン内で、取得プロセスがREDOログから変更を取得するユーザーです。 - アウトバウンド・サーバーの取得プロセスの開始SCNまたは開始時間の変更
DBMS_XSTREAM_ADM
パッケージのALTER_OUTBOUND
プロシージャを使用して、アウトバウンド・サーバーの変更を取得する取得プロセスの開始システム変更番号(SCN)または開始時間を変更できます。 - 取得プロセスの先頭のSCNの設定
既存の取得プロセスの先頭システム変更番号(SCN)を設定できます。先頭SCNは、取得プロセスで変更を取得できる、REDOログ内のSCNです。
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
アウトバウンド・サーバーの
Capture
Process
Name
が非NULL
である場合、DBMS_XSTREAM_ADM
パッケージは取得プロセスを管理できます。この場合、DBMS_CAPTURE_ADM
パッケージを使用して取得プロセスを管理することもできます。ただし、可能ならば、DBMS_XSTREAM_ADM
パッケージを使用してアウトバウンド・サーバーの取得プロセスを管理する方を、通常はお薦めします。アウトバウンド・サーバーの
Capture
Process
Name
が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がインストールされている場合、取得ユーザーを変更するユーザーにBECOME
USER
システム権限を付与する必要があります。Oracle Database Vaultがインストールされていない場合は、ユーザーにこの権限を付与する必要はありません。必要に応じて、取得ユーザーの変更後に、ユーザーからBECOME
USER
システム権限を取り消すことができます。
関連項目:
取得ユーザーに必要な権限の詳細は、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を設定する必要はありません。
- アウトバウンド・サーバーの取得プロセスの開始SCNの変更
アウトバウンド・サーバーの取得プロセスの開始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を指定します。
取得プロセスが有効な場合、
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 アウトバウンド・サーバーの取得プロセスの開始時間の変更
アウトバウンド・サーバーの取得プロセスの開始時間を変更できます。
取得プロセスの開始時間を変更する方法:
-
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
: 取得プロセスが変更の取得を開始する時間を指定します。
取得プロセスが有効な場合、
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を設定するには、次の手順を実行します。
-
取得プロセス・データベースに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構成に対するルールを管理できます。ルールは、アウトバウンド・サーバーにストリームされるデータベース変更と、アウトバウンド・サーバーがクライアント・アプリケーションにストリームするデータベース変更を制御します。
- XStream Out構成へのルールの追加
スキーマ・ルール、表ルールおよびサブセット・ルールをXStream Out構成に追加できます。 - XStream Out構成からのルールの削除
XStream Out構成からルールを削除できます。
5.4.1 ルールのXStream Out構成への追加
スキーマ・ルール、表ルールおよびサブセット・ルールをXStream Out構成に追加できます。
- XStream Out構成へのスキーマ・ルールおよび表ルールの追加
DBMS_XSTREAM_ADM
パッケージのALTER_OUTBOUND
プロシージャを使用して、XStream Out構成にスキーマ・ルールおよび表ルールを追加できます。 - アウトバウンド・サーバーのポジティブ・ルール・セットへのサブセット・ルールの追加
DBMS_XSTREAM_ADM
パッケージのADD_SUBSET_OUTBOUND_RULES
プロシージャを使用して、アウトバウンド・サーバーのポジティブ・ルール・セットにサブセット・ルールを追加できます。 - カスタム条件付きルールのXStream Outコンポーネントへの追加
DBMS_XSTREAM_ADM
パッケージのルールを作成するプロシージャの一部にはand_condition
パラメータが含まれます。このパラメータでは、システム生成のルールに条件を追加できます。
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構成からルールを削除できます。
- スキーマ・ルールおよび表ルールのXStream Out構成からの削除
DBMS_XSTREAM_ADM
パッケージのALTER_OUTBOUND
プロシージャを使用して、XStream Out構成からスキーマ・ルールおよび表ルールを削除できます。ALTER_OUTBOUND
プロシージャは、DMLとDDLの両方の変更のルールを削除します。 - アウトバウンド・サーバーのポジティブ・ルール・セットからのサブセット・ルールの削除
DBMS_XSTREAM_ADM
パッケージのREMOVE_SUBSET_OUTBOUND_RULES
プロシージャを使用して、アウトバウンド・サーバーのポジティブ・ルール・セットからサブセット・ルールを削除できます。 - REMOVE_RULEプロシージャを使用したルールの削除
DBMS_XSTREAM_ADM
パッケージのREMOVE_RULE
プロシージャを使用して、XStream Outコンポーネントのルール・セットから1つのルールを削除することも、すべてのルールを削除することもできます。
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
プロシージャを使用します。
- 宣言ルールベースの変換の追加
宣言ルールベースの変換をDMLルールに追加する方法の例を示します。 - 既存の宣言ルールベースの変換の上書き
DBMS_XSTREAM_ADM
パッケージを使用して、既存の宣言ルールベースの変換を上書きできます。 - 宣言ルールベースの変換の削除
宣言ルールベースの変換をルールから削除するには、変換を追加するために使用したものと同じプロシージャを使用しますが、operation
パラメータにREMOVE
を指定します。
関連項目:
5.5.1 宣言ルールベースの変換の追加
宣言ルールベースの変換をDMLルールに追加する方法の例を示します。
注意:
DMLルールに対してのみ宣言ルールベースの変換を指定できます。DDLルールには指定できません。
- 表名を変更する宣言ルールベースの変換の追加
DBMS_XSTREAM_ADM
パッケージのRENAME_TABLE
プロシージャを使用して、行LCR内の表名を変更する宣言ルールベースの変換を追加します。 - 列を追加する宣言ルールベースの変換の追加
DBMS_XSTREAM_ADM
パッケージのADD_COLUMN
プロシージャを使用して、行LCR内の行に列を追加する宣言ルールベースの変換を追加します。
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構成の削除
マルチテナント・コンテナ・データベース(CDB)または非CDBのXStream Out構成を削除するには、DBMS_XSTREAM_ADM
パッケージのREMOVE_XSTREAM_CONFIGURATION
プロシージャを実行します。
注意:
このプロシージャは、データベースで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パッケージ・プロシージャおよびタイプ・リファレンスを参照してください。