ヘッダーをスキップ
Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス
10g リリース2(10.2)
B19245-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

20 DBMS_CAPTURE_ADM

Streamsパッケージの1つであるDBMS_CAPTURE_ADMパッケージは、取得プロセスの開始、停止および構成を実行するためのサブプログラムを提供します。 取得した変更のソースはREDOログで、取得した変更のリポジトリはキューです。


関連項目:

このパッケージおよび取得プロセスの詳細は、『Oracle Streams概要および管理』および『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

この章では、次の項目について説明します。


DBMS_CAPTURE_ADMサブプログラムの要約

表20-1 DBMS_CAPTURE_ADMパッケージのサブプログラム

サブプログラム 説明

ABORT_GLOBAL_INSTANTIATIONプロシージャ


PREPARE_GLOBAL_INSTANTIATIONPREPARE_SCHEMA_INSTANTIATIONおよびPREPARE_TABLE_INSTANTIATIONプロシージャの実行効果を元に戻します。

ABORT_SCHEMA_INSTANTIATIONプロシージャ


PREPARE_SCHEMA_INSTANTIATIONおよびPREPARE_TABLE_INSTANTIATIONプロシージャの実行効果を元に戻します。

ABORT_TABLE_INSTANTIATIONプロシージャ


PREPARE_TABLE_INSTANTIATIONプロシージャの実行効果を元に戻します。

ALTER_CAPTUREプロシージャ


取得プロセスを変更します。

BUILDプロシージャ


現行のデータベースのデータ・ディクショナリをREDOログに抽出し、すべての主キー列と一意キー列についてデータベースのサプリメンタル・ロギングを自動的に指定します。

CREATE_CAPTUREプロシージャ


取得プロセスを作成します。

DROP_CAPTUREプロシージャ


取得プロセスを削除します。

INCLUDE_EXTRA_ATTRIBUTEプロシージャ


指定した取得プロセスによって取得される論理変更レコード(LCR)に追加属性を記録するかどうかを指示します。

PREPARE_GLOBAL_INSTANTIATIONプロシージャ


別のデータベースで、データベース内のすべての表をインスタンス化するために必要な同期化を行い、表内のキー列またはすべての列でサプリメンタル・ロギングを有効にできます。

PREPARE_SCHEMA_INSTANTIATIONプロシージャ


別のデータベースで、スキーマ内のすべての表をインスタンス化するために必要な同期化を行い、表内のキー列またはすべての列でサプリメンタル・ロギングを有効にできます。

PREPARE_TABLE_INSTANTIATIONプロシージャ


別のデータベースで、表をインスタンス化するために必要な同期化を行い、表内のキー列またはすべての列でサプリメンタル・ロギングを有効にできます。

SET_PARAMETERプロシージャ


取得プロセス・パラメータを指定した値に設定します。

START_CAPTUREプロシージャ


取得プロセスを開始します。取得プロセスは、REDOログを調査し、取り出したREDO情報を関連キューにエンキューします。

STOP_CAPTUREプロシージャ


取得プロセスを停止してREDOログの調査を中断します。



注意:

特に指定がないかぎり、すべてのサブプログラムがコミットされます。


ABORT_GLOBAL_INSTANTIATIONプロシージャ

このプロシージャは、PREPARE_GLOBAL_INSTANTIATIONPREPARE_SCHEMA_INSTANTIATIONおよびPREPARE_TABLE_INSTANTIATIONプロシージャの実行効果を元に戻します。

具体的には、このプロシージャは次の操作を実行します。

構文

DBMS_CAPTURE_ADM.ABORT_GLOBAL_INSTANTIATION();

ABORT_SCHEMA_INSTANTIATIONプロシージャ

このプロシージャは、PREPARE_SCHEMA_INSTANTIATIONプロシージャの実行結果を元に戻します。 また、指定したスキーマ内にある表のPREPARE_TABLE_INSTANTIATIONプロシージャの実行結果も元に戻します。

具体的には、このプロシージャは次の操作を実行します。

構文

DBMS_CAPTURE_ADM.ABORT_SCHEMA_INSTANTIATION(
   schema_name  IN  VARCHAR2);

パラメータ

表20-2 ABORT_SCHEMA_INSTANTIATIONプロシージャのパラメータ

パラメータ 説明

schema_name

準備中のインスタンス化の結果を元に戻すスキーマの名前。



ABORT_TABLE_INSTANTIATIONプロシージャ

このプロシージャは、PREPARE_TABLE_INSTANTIATIONプロシージャの実行結果を元に戻します。

具体的には、このプロシージャは次の操作を実行します。

構文

DBMS_CAPTURE_ADM.ABORT_TABLE_INSTANTIATION(
   table_name  IN  VARCHAR2);

パラメータ

表20-3 ABORT_TABLE_INSTANTIATIONプロシージャのパラメータ

パラメータ 説明

table_name

準備中のインスタンス化の結果を元に戻す表の名前。[schema_name.]object_nameの形式で指定します。 たとえば、hr.employeesのように指定します。 スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。



ALTER_CAPTUREプロシージャ

このプロシージャは、取得プロセスを変更します。


関連項目:

取得プロセスの変更の詳細は、『Oracle Streams概要および管理』を参照してください。

構文

DBMS_CAPTURE_ADM.ALTER_CAPTURE(
   capture_name              IN  VARCHAR2,
   rule_set_name             IN  VARCHAR2  DEFAULT NULL,
   remove_rule_set           IN  BOOLEAN   DEFAULT FALSE,
   start_scn                 IN  NUMBER    DEFAULT NULL,
   use_database_link         IN  BOOLEAN   DEFAULT NULL,
   first_scn                 IN  NUMBER    DEFAULT NULL,
   negative_rule_set_name    IN  VARCHAR2  DEFAULT NULL,
   remove_negative_rule_set  IN  BOOLEAN   DEFAULT FALSE,
   capture_user              IN  VARCHAR2  DEFAULT NULL,
   checkpoint_retention_time IN  NUMBER    DEFAULT NULL);

パラメータ

表20-4 ALTER_CAPTUREプロシージャのパラメータ

パラメータ 説明

capture_name

変更する取得プロセスの名前。 既存の取得プロセス名を指定する必要があります。 所有者を指定しないでください。

rule_set_name

取得プロセスに対するポジティブ・ルール・セットの名前。 ポジティブ・ルール・セットには、変更の取得を取得プロセスに指示するためのルールが含まれています。

取得プロセスに対してポジティブ・ルール・セットを使用する場合は、既存のルール・セットを[schema_name.]rule_set_nameの形式で指定する必要があります。 たとえば、HRスキーマ内のjob_capture_rulesという名前のポジティブ・ルール・セットを指定するには、hr.job_capture_rulesと入力します。 スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定したルール・セットが存在しない場合は、エラーが戻されます。 ルール・セットを作成し、そのルール・セットにルールを追加するには、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。

NULLを指定し、remove_rule_setパラメータをFALSEに設定すると、既存のすべてのポジティブ・ルール・セットが保持されます。 NULLを指定し、remove_rule_setパラメータをTRUEに設定すると、既存のすべてのポジティブ・ルール・セットが削除されます。

関連項目: 取得プロセスによって取得可能な変更の詳細は、『Oracle Streams概要および管理』を参照してください。

remove_rule_set

TRUEに設定すると、指定した取得プロセスに対するポジティブ・ルール・セットが削除されます。 取得プロセスのネガティブ・ルール・セットが存在しないときに、取得プロセスに対するポジティブ・ルール・セットを削除すると、取得プロセスは、データベース内のすべてのオブジェクトに対してサポートされているすべての変更を取得します。ただし、SYSスキーマとSYSTEMスキーマ内のデータベース・オブジェクトは除きます。

取得プロセスのネガティブ・ルール・セットが存在するときに、取得プロセスに対するポジティブ・ルール・セットを削除すると、取得プロセスは、ネガティブ・ルール・セットによって破棄されない、サポートされているすべての変更を取得します。

FALSEに設定すると、指定した取得プロセスに対するポジティブ・ルール・セットが保持されます。

rule_set_nameパラメータがNULL以外の場合、このパラメータはFALSEに設定してください。

start_scn

データベースの有効なSCNのうち、取得プロセスによる変更の取得の開始時に使用するSCN(開始時SCN)。 このパラメータで指定するSCN値は、取得プロセスの最初のSCN値以上にする必要があります。 無効なSCNが指定された場合はエラーが戻されます。

use_database_link

TRUEに設定すると、取得プロセスに関する管理タスクを実行するために、ダウンストリーム・データベース上の取得プロセスにおいて、ソース・データベースに対するデータベース・リンクが使用されます。 データベース・リンクを現在使用していない取得プロセスでデータベース・リンクの使用を開始する場合は、このパラメータをTRUEに設定してください。 その場合は、ソース・データベースのグローバル名と同じ名前を持つデータベース・リンクが、ダウンストリーム・データベースに存在する必要があります。

FALSEに設定すると、取得プロセスがソース・データベース上で実行されるか、ダウンストリーム・データベース上の取得プロセスにおいて、ソース・データベースに対するデータベース・リンクが使用されません。 データベース・リンクを現在使用している取得プロセスでデータベース・リンクの使用を停止する場合は、このパラメータをFALSEに設定してください。 その場合は、ソース・データベースのデータベース・オブジェクトに関連する取得プロセス・ルールの追加または変更を行うときに、それらのデータベース・オブジェクトを手動でインスタンス化する準備を行う必要があります。

NULLに設定すると、現行のパラメータ値は変更されず、取得プロセスの動作も変わりません。

first_scn

REDOログ内の最小(最初の)SCN値を指定します。取得プロセスでは、このSCN値から変更の取得を開始できます。 取得プロセスに対して新たに最小SCNを指定する場合、その最小SCNは次の条件を満たす必要があります。

  • 取得プロセスに対する現行の最小SCNより大きい値であること。

  • 取得プロセスに現在適用されているSCN以下の値であること。 ただし、取得プロセスに現在適用されているSCNがゼロである場合は、この条件を満たす必要はありません。

  • 取得プロセスに必要なチェックポイントSCN以下の値であること。

指定した最小SCNがこれら3つの条件を満たさない場合は、エラーが戻されます。 これらのすべての条件を満たすSCN値を決定する方法は、「使用上の注意」を参照してください。

最小(最初の)SCNを変更すると、以前のSCNからの取得プロセス再開に必要な情報が取得プロセスのLogMinerデータ・ディクショナリからパージされます。

また、指定された最小SCNが取得プロセスに対する現行の開始時SCNより大きい場合は、現行の開始時SCNが自動的に新しい最小SCNに変更されます。

negative_rule_set_name

取得プロセスに対するネガティブ・ルール・セットの名前。 ネガティブ・ルール・セットには、変更の破棄を取得プロセスに指示するためのルールが含まれています。

取得プロセスに対してネガティブ・ルール・セットを使用する場合は、既存のルール・セットを[schema_name.]rule_set_nameの形式で指定する必要があります。 たとえば、hrスキーマ内のneg_capture_rulesという名前のネガティブ・ルール・セットを指定するには、hr.neg_capture_rulesと入力します。 スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定したルール・セットが存在しない場合は、エラーが戻されます。 ルール・セットを作成し、そのルール・セットにルールを追加するには、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。

NULLを指定し、remove_negative_rule_setパラメータをFALSEに設定すると、既存のすべてのネガティブ・ルール・セットが保持されます。 NULLを指定し、remove_negative_rule_setパラメータをTRUEに設定すると、既存のすべてのネガティブ・ルール・セットが削除されます。

1つの取得プロセスに対してポジティブ・ルール・セットとネガティブ・ルール・セットの両方を指定した場合は、常にネガティブ・ルール・セットが最初に評価されます。

remove_negative_rule_set

TRUEに設定すると、指定した取得プロセスに対するネガティブ・ルール・セットが削除されます。 取得プロセスのポジティブ・ルール・セットが存在しないときに、取得プロセスに対するネガティブ・ルール・セットを削除すると、取得プロセスは、データベース内のすべてのオブジェクトに対してサポートされているすべての変更を取得します。ただし、SYSスキーマとSYSTEMスキーマ内のデータベース・オブジェクトは除きます。

取得プロセスのポジティブ・ルール・セットが存在するときに、取得プロセスに対するネガティブ・ルール・セットを削除すると、取得プロセスは、ポジティブ・ルール・セットによって破棄されない、サポートされているすべての変更を取得します。

FALSEに設定すると、指定した取得プロセスに対するネガティブ・ルール・セットは保持されます。

negative_rule_set_nameパラメータがNULL以外の場合、このパラメータはFALSEに設定してください。

capture_user

ユーザーを指定します。このユーザーのセキュリティ・ドメイン内で、取得プロセスは、取得プロセスのルール・セットを満足する変更を取得し、取得プロセス・ルールに対して構成されているカスタム・ルールベースの変換を実行します。 NULLの場合、取得ユーザーは変更されません。

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

取得ユーザーを変更すると、取得プロセスで使用されるキューに対するエンキュー権限が新しい取得ユーザーに付与され、その取得ユーザーがキューの保護キュー・ユーザーとして構成されます。 なお、取得ユーザーには次の権限が必要です。

  • 取得プロセスで使用されるルール・セットのEXECUTE権限

  • ルール・セットで使用されるすべてのルールベース変換ファンクションのEXECUTE権限

  • 取得プロセスによって実行されるルールベース変換の内部で呼び出されるすべてのパッケージ(オラクル社が提供するパッケージを含む)のEXECUTE権限

これらの権限は、取得ユーザーに直接付与する必要があります。 ロールを通して付与することはできません。

デフォルトでは、このパラメータは取得プロセスを作成したユーザーに設定されます。取得プロセスを作成するには、このパッケージ内のCREATE_CAPTUREプロシージャ、または次に示すDBMS_STREAMS_ADMパッケージ内のいずれかのプロシージャを、streams_typeパラメータをcaptureに設定して実行します。

ADD_GLOBAL_RULES

ADD_SCHEMA_RULES

ADD_TABLE_RULES

ADD_SUBSET_RULES

注意: 指定したユーザーがDROP USER... CASCADEを使用して削除されると、取得プロセスに対するcapture_user設定は自動的にNULLに設定されます。 取得プロセスを実行するには、取得ユーザーを指定する必要があります。

checkpoint_retention_time

取得プロセスで自動的にパージが行われるまでチェックポイントが保存される日数。チェックポイントを自動的にパージしない場合は、DBMS_CAPTURE_ADM.INFINITEに設定します。 NULLに設定すると、チェックポイントの保存期間は変更されません。

日数を指定すると、チェックポイントが取得されてから指定した日数後に、取得プロセスによってチェックポイントがパージされます。 小数値を使用して時間単位で指定することもできます。 たとえば、6時間は、.25のように指定します。

チェックポイントがパージされると、そのチェックポイントに対応するアーカイブREDOログ・ファイルのLogMinerデータ・ディクショナリ情報もパージされ、取得プロセスのfirst_scnは、次のアーカイブREDOログ・ファイルの最初の変更に対応するSCN値に再設定されます。

関連項目: チェックポイントの保存期間の詳細は、『Oracle Streams概要および管理』を参照してください。


使用上の注意

取得プロセスの最初の(最小)SCNを変更する場合は、first_scnパラメータで説明した条件を満たすSCN値を指定する必要があります。 データベース内の個々の取得プロセスについて、最初のSCN、適用されているSCNおよび必要とされるチェックポイントSCNの現行の値を確認するには、次のような問合せを使用します。

SELECT CAPTURE_NAME, FIRST_SCN, APPLIED_SCN, REQUIRED_CHECKPOINT_SCN
   FROM DBA_CAPTURE;

なお、取得プロセスは、ALTER_CAPTUREプロシージャのパラメータ値を1つ以上変更すると、自動的に停止および再開します。


BUILDプロシージャ

このプロシージャは、現行のデータベースのデータ・ディクショナリをREDOログに抽出し、次のSQL文を実行して、データベースのサプリメンタル・ロギングを自動的に指定します。

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

このプロシージャはオーバーロードされています。 このプロシージャの一方のバージョンには、OUTパラメータfirst_scnがあり、他方のバージョンにはこのパラメータがありません。

構文

DBMS_CAPTURE_ADM.BUILD(
   first_scn  OUT  NUMBER);

DBMS_CAPTURE_ADM.BUILD();

パラメータ

表20-5 BUILDプロシージャのパラメータ

パラメータ 説明

first_scn

REDOログに抽出されるデータ・ディクショナリに対応する最初の(最小)SCN値を指定します。この値は、取得プロセスの最初のSCNとして指定できます。


使用上の注意

このプロシージャは、ソース・データベースで繰り返し実行できます。

ソース・データベースで発生する変更を取得プロセスによって取得する場合は、このプロシージャをソース・データベースで少なくとも1回は実行する必要があります。 ローカル・ソース・データベースまたはダウンストリーム・データベースで取得プロセスを起動すると、REDOログに抽出された情報に基づいて、LogMinerデータ・ディクショナリが作成されます。

このプロシージャを実行した後、DICTIONARY_BEGIN列の値がYESであるという条件式を指定して、V$ARCHIVED_LOGダイナミック・パフォーマンス・ビューのFIRST_CHANGE#列の値を問い合せると、データベースの最小SCNの値がわかります。この最小SCNの値は、取得プロセスに対する最初のSCNとして指定できます。 取得プロセスに対する最初のSCNは、REDOログ内にある最小のSCNです。取得プロセスでは、この最小SCNから変更の取得を開始できます。DBMS_CAPTURE_ADMパッケージ内のCREATE_CAPTUREプロシージャまたはALTER_CAPTUREプロシージャを実行するときは、取得プロセスに対する最初のSCNを指定できます。


CREATE_CAPTUREプロシージャ

このプロシージャは、取得プロセスを作成します。


関連項目:

  • 取得プロセスの作成の詳細は、『Oracle Streams概要および管理』を参照してください。

  • ルールとルール・セットの詳細は、第92章「DBMS_RULE_ADM」を参照してください。


構文

DBMS_CAPTURE_ADM.CREATE_CAPTURE(
   queue_name                 IN  VARCHAR2,
   capture_name               IN  VARCHAR2,
   rule_set_name              IN  VARCHAR2  DEFAULT NULL,
   start_scn                  IN  NUMBER    DEFAULT NULL,
   source_database            IN  VARCHAR2  DEFAULT NULL,
   use_database_link          IN  BOOLEAN   DEFAULT FALSE,
   first_scn                  IN  NUMBER    DEFAULT NULL,
   logfile_assignment         IN  VARCHAR2  DEFAULT 'implicit',
   negative_rule_set_name     IN  VARCHAR2  DEFAULT NULL,
   capture_user               IN  VARCHAR2  DEFAULT NULL,
   checkpoint_retention_time  IN  NUMBER    DEFAULT 60);

パラメータ

表20-6 CREATE_CAPTUREプロシージャのパラメータ

パラメータ 説明

queue_name

取得プロセスが変更をエンキューするキューの名前。 既存のキューを[schema_name.]queue_nameの形式で指定する必要があります。 たとえば、hrスキーマ内のstreams_queueという名前のキューを指定するには、hr.streams_queueと入力します。 スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

注意: queue_nameの設定は、取得プロセスの作成後には変更できません。

capture_name

作成する取得プロセスの名前。 NULL指定は許可されていません。 所有者を指定しないでください。

注意: capture_nameの設定は、取得プロセスの作成後には変更できません。

rule_set_name

取得プロセスに対するポジティブ・ルール・セットの名前。 ポジティブ・ルール・セットには、変更の取得を取得プロセスに指示するためのルールが含まれています。

取得プロセスに対してポジティブ・ルール・セットを使用する場合は、既存のルール・セットを[schema_name.]rule_set_nameの形式で指定する必要があります。 たとえば、hrスキーマ内のjob_capture_rulesという名前のポジティブ・ルール・セットを指定するには、hr.job_capture_rulesと入力します。 スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定したルール・セットが存在しない場合は、エラーが戻されます。 ルール・セットを作成し、そのルール・セットにルールを追加するには、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。

NULLを指定すると、取得プロセスに対するネガティブ・ルール・セットが指定されない場合、データベース内のすべてのオブジェクトに対してサポートされているすべての変更を取得します。ただし、SYSスキーマとSYSTEMスキーマ内のデータベース・オブジェクトは除きます。

取得プロセスのネガティブ・ルール・セットが存在するときにNULLを指定すると、取得プロセスは、ネガティブ・ルール・セットによって破棄されない、サポートされているすべての変更を取得します。

関連項目: 取得プロセスによって取得可能な変更の詳細は、『Oracle Streams概要および管理』を参照してください。

start_scn

データベースの有効なSCNのうち、取得プロセスによる変更の取得の開始時に使用するSCN(開始時SCN)。 現行のソース・データベースのSCNよりも小さい値を指定する場合は、first_scnパラメータを指定するか、または、start_scnパラメータに、少なくとも1つのチェックポイントを経過した、既存取得プロセスの最初のSCN以上の値を指定する必要があります。

start_scnパラメータがNULLで、first_scnパラメータに値が指定されていない場合は、データベースの現行のSCNが開始時SCNとして使用されます。 start_scnパラメータがNULLで、first_scnパラメータにNULL以外の値が指定されている場合は、first_scnパラメータの値が開始時SCNとして使用されます。

start_scnfirst_scnの両方の値を指定する場合は、start_scnfirst_scn以上の値を指定してください。

無効なSCNが指定された場合はエラーが戻されます。

source_database

ソース・データベースのグローバル名。 ソース・データベースは、取得対象の変更が発生したデータベースです。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。 たとえば、ドメイン名が.NETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

このパラメータにNULL、または現行のデータベースのグローバル名と同じ名前を指定した場合は、ローカル取得プロセスとみなされ、first_scnuse_database_linkにはデフォルト値のみを指定できます。

use_database_link

TRUEに設定すると、取得プロセスに関する管理タスクを実行するために、ダウンストリーム・データベース上の取得プロセスにおいて、ソース・データベースに対するデータベース・リンクが使用されます。 取得プロセスでは、このデータベース・リンクを使用してソース・データベースでデータベース・オブジェクトをインスタンス化するための準備を行い、必要に応じてソース・データベースでDBMS_CAPTURE_ADM.BUILDプロシージャを実行します。

FALSEに設定すると、取得プロセスがソース・データベース上で実行されるか、ダウンストリーム・データベース上の取得プロセスにおいて、ソース・データベースに対するデータベース・リンクが使用されません。 その場合は、次の管理タスクを手動で実行する必要があります。

  • 取得プロセスの作成時に、ソース・データベースでDBMS_CAPTURE_ADM.BUILDプロシージャを実行し、ソース・データベースのデータ・ディクショナリをREDOログに抽出する。

  • 取得プロセスの作成時に最初のSCNが指定されていない場合に、ダウンストリームの取得プロセスで使用する最初のSCNを決定する。 (取得プロセスの作成と保守には、最初のSCNが必要です。)

  • ソース・データベースでデータベース・オブジェクトをインスタンス化する準備を行う。

first_scn

REDOログ内の最小(最初の)SCN値を指定します。取得プロセスでは、このSCN値から変更の取得を開始できます。 このパラメータにNULL以外の値を指定できるのは、ソース・データベースでDBMS_CAPTURE_ADM.BUILDプロシージャが少なくとも1回は実行された場合に限られます。

ソース・データベースでDBMS_CAPTURE_ADM.BUILDプロシージャが実行されたかどうかを調べるには、DICTIONARY_BEGIN列の値がYESであるという条件式を指定して、V$ARCHIVED_LOGダイナミック・パフォーマンス・ビューのFIRST_CHANGE#列の値を問い合せます。 この問合せから返されるSCN値を含むREDOログが利用可能な状態である場合は、そのSCN値をfirst_scnパラメータの値として使用できます。

logfile_assignment

デフォルト値であるimplicitを指定すると、REDO転送サービスによって追加されたREDOログ・ファイル、またはソース・データベースからダウンストリーム・データベースに手動で追加されたREDOログ・ファイルがダウンストリーム・データベース上の取得プロセスによって漏れなくスキャンされます。

explicitを指定すると、ダウンストリーム・データベースに手動でREDOログ・ファイルを追加するときに、FOR logminer_session_name句で取得プロセスの名前を指定した場合に限り、ダウンストリーム・データベース上の取得プロセスによってREDOログ・ファイルがスキャンされます。 explicitを指定した場合、REDO転送サービスでは作成中の取得プロセスにREDOログ・ファイルを追加できません。

ローカル取得プロセス用のこのパラメータに対してexplicitを指定した場合は、ローカル取得プロセスでオンラインREDOログを使用して変更を検索できません。 その場合は、アーカイブREDOログを使用する必要があります。

関連項目: REDOログ・ファイルを手動で追加する方法は、「使用上の注意」を参照してください。

negative_rule_set_name

取得プロセスに対するネガティブ・ルール・セットの名前。 ネガティブ・ルール・セットには、変更の破棄を取得プロセスに指示するためのルールが含まれています。

取得プロセスに対してネガティブ・ルール・セットを使用する場合は、既存のルール・セットを[schema_name.]rule_set_nameの形式で指定する必要があります。 たとえば、hrスキーマ内のneg_capture_rulesという名前のネガティブ・ルール・セットを指定するには、hr.neg_capture_rulesと入力します。 スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

NULLを指定すると、取得プロセスに対するポジティブ・ルール・セットが指定されない場合、データベース内のすべてのオブジェクトに対してサポートされているすべての変更を取得します。ただし、SYSスキーマとSYSTEMスキーマ内のデータベース・オブジェクトは除きます。

取得プロセスのポジティブ・ルール・セットが存在するときにNULLを指定すると、取得プロセスは、ポジティブ・ルール・セットによって破棄されない、サポートされているすべての変更を取得します。

指定したルール・セットが存在しない場合は、エラーが戻されます。 ルール・セットを作成し、そのルール・セットにルールを追加するには、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。

1つの取得プロセスに対してポジティブ・ルール・セットとネガティブ・ルール・セットの両方を指定した場合は、常にネガティブ・ルール・セットが最初に評価されます。

capture_user

ユーザーを指定します。このユーザーのセキュリティ・ドメイン内で、取得プロセスは、取得プロセスのルール・セットを満足する変更を取得し、取得プロセス・ルールに対して構成されているカスタム・ルールベースの変換を実行します。 NULLの場合、CREATE_CAPTUREプロシージャの実行ユーザーが使用されます。

取得ユーザーを設定できるのは、DBAロールを付与されたユーザーに限られています。 capture_userSYSに設定できるのは、SYSユーザーに限られています。

注意: 指定したユーザーがDROP USER... CASCADEを使用して削除されると、取得プロセスに対するcapture_user設定は自動的にNULLに設定されます。 取得プロセスを実行するには、取得ユーザーを指定する必要があります。

checkpoint_retention_time

取得プロセスで自動的にパージが行われるまでチェックポイントが保存される日数。チェックポイントを自動的にパージしない場合は、DBMS_CAPTURE_ADM.INFINITEに設定します。

日数を指定すると、チェックポイントが取得されてから指定した日数後に、取得プロセスによってチェックポイントがパージされます。 小数値を使用して時間単位で指定することもできます。 たとえば、6時間は、.25のように指定します。

チェックポイントがパージされると、そのチェックポイントに対応するアーカイブREDOログ・ファイルのLogMinerデータ・ディクショナリ情報もパージされ、取得プロセスのfirst_scnは、次のアーカイブREDOログ・ファイルの最初の変更に対応するSCN値に再設定されます。

関連項目: チェックポイントの保存期間の詳細は、『Oracle Streams概要および管理』を参照してください。


使用上の注意

このプロシージャを実行するユーザーには、DBAロールを付与する必要があります。

capture_userパラメータでは、取得プロセスのルール・セットを満たす変更を取得するユーザーを指定します。 このユーザーには、変更を取得するためのいくつかの権限が必要です。 このプロシージャを実行すると、取得プロセスで使用されるキューに対するエンキュー権限が取得ユーザーに付与され、その取得ユーザーがキューの保護キュー・ユーザーとして構成されます。

なお、取得ユーザーには次の権限が必要です。

これらの権限は、取得ユーザーに直接付与する必要があります。 ロールを通して付与することはできません。


注意:

  • 取得ユーザーは、データベース・オブジェクトに対する権限を持っていなくても、データベース・オブジェクトに対する変更を取得できます。 取得プロセスでは、データベース・オブジェクトに対する変更をルールベースの変換ファンクションに渡すことができます。 したがって、取得プロセスを構成するときは、セキュリティ問題に留意する必要があります。

  • データベースで最初の取得プロセスを作成するときは、作成時にデータ・ディクショナリが複製されるため、時間がかかる場合があります。


logfile_assignmentパラメータにexplicitを指定した場合は、次のSQL文を使用して、ダウンストリーム・データベースに手動でREDOログ・ファイルを追加します。

ALTER DATABASE REGISTER LOGICAL LOGFILE
   file_name FOR capture_process;

ここで、file_nameは追加するREDOログ・ファイルの名前であり、capture_processはダウンストリーム・データベースでREDOログ・ファイルを使用する取得プロセスの名前です。 capture_processには、logminer_session_nameと同じ名前を必ず指定してください。 REDOログ・ファイルは、ダウンストリーム・データベースが実行されるサイトに存在する必要があります。 ダウンストリーム・データベースが実行されるサイトに手動でREDOログ・ファイルを転送する場合は、DBMS_FILE_TRANSFERパッケージ、FTPまたはその他の転送手法を使用する必要があります。


関連項目:

ALTER DATABASE文の詳細は、『Oracle Database SQLリファレンス』を、REDOログ・ファイルの登録方法の詳細は、『Oracle Data Guard概要および管理』を参照してください。


DROP_CAPTUREプロシージャ

このプロシージャは、取得プロセスを削除します。


注意:

取得プロセスを削除するには、その取得プロセスを事前に停止する必要があります。

構文

DBMS_CAPTURE_ADM.DROP_CAPTURE(
   capture_name           IN  VARCHAR2,
   drop_unused_rule_sets  IN  BOOLEAN  DEFAULT FALSE);

パラメータ

表20-7 DROP_CAPTUREプロシージャのパラメータ

パラメータ 説明

capture_name

削除する取得プロセスの名前。 既存の取得プロセス名を指定します。 所有者を指定しないでください。

drop_unused_rule_sets

TRUEに設定すると、指定した取得プロセスで使用されるポジティブ・ルール・セットおよびネガティブ・ルール・セットが、他のStreamsクライアントによって使用されない場合に削除されます。 Streamsクライアントには、取得プロセス、伝播、適用プロセス、メッセージ・クライアントがあります。 このプロシージャによってルール・セットが削除される場合は、そのルール・セット内のルールのうち、別のルール・セット内に存在しないルールも同時に削除されます。

FALSEに設定すると、指定した取得プロセスで使用されるルール・セットは削除されず、ルール・セットにルールが保持されます。


使用上の注意

このプロシージャを使用して取得プロセスを削除すると、その取得プロセスに対してDBMS_STREAMS_ADMで作成したルールに関する情報は、Streamsルールのデータ・ディクショナリ・ビューから削除されます。 そのようなルールが取得プロセスのどのルール・セットに含まれているかに関係なく、ルールに関する情報は削除されます。

Streamsルールのデータ・ディクショナリ・ビューは次のとおりです。


関連項目:

Streamsデータ・ディクショナリ・ビューの詳細は、『Oracle Streams概要および管理』を参照してください。


INCLUDE_EXTRA_ATTRIBUTEプロシージャ

このプロシージャは、指定した取得プロセスによって取得される論理変更レコード(LCR)に追加属性を記録するかどうかを指示します。

構文

DBMS_CAPTURE_ADM.INCLUDE_EXTRA_ATTRIBUTE(
   capture_name    IN  VARCHAR2,
   attribute_name  IN  VARCHAR2,
   include         IN  BOOLEAN   DEFAULT TRUE);

パラメータ

表20-8 INCLUDE_EXTRA_ATTRIBUTEプロシージャのパラメータ

パラメータ 説明

capture_name

取得プロセスの名前。 既存の取得プロセス名を指定します。 所有者を指定しないでください。

attribute_name

取得プロセスによって取得される論理変更レコード(LCR)に記録する属性名、またはLCRから除外する属性名を指定します。 指定できる属性名は次のとおりです。

  • row_id

    行のLCRで変更された行のROWID。 この属性は、DDL LCRにも索引構成表の行LCRにも記録されません。 データ型はVARCHAR2です。

  • serial#

    LCRに取得された変更を実行したセッションのシリアル番号。 データ型はNUMBERです。

  • session#

    LCRに取得された変更を実行したセッションの識別子。 データ型はNUMBERです。

  • thread#

    LCRに取得された変更が実行されたインスタンスのスレッド番号。 通常、スレッド番号はReal Application Clusters環境のみで使用されます。 データ型はNUMBERです。

  • tx_name

    LCRの属するトランザクションの名前。 データ型はVARCHAR2です。

  • username

    LCRに取得された変更を実行したユーザーの名前。 データ型はVARCHAR2です。

include

TRUEに設定すると、取得プロセスによって取得される論理変更レコード(LCR)に、指定した属性が記録されます。

FALSEに設定すると、取得プロセスによって取得される論理変更レコード(LCR)から、指定した属性が除外されます。


使用上の注意

REDOログにはデータベースに対する個々の変更に関しての情報が記録されますが、この中には、このプロシージャを使用して取得プロセスに指示しないと取得プロセスによって取得されない情報もあります。 このプロシージャを使用すると、取得プロセスが取得するREDOログ内の追加情報を指定できます。 取得プロセスによって取得された情報から特定の追加属性を除外する場合は、目的の属性を指定し、includeパラメータをFALSEに設定します。


PREPARE_GLOBAL_INSTANTIATIONプロシージャ

このプロシージャは、別のデータベースで、データベース内のすべての表をインスタンス化するために必要な同期化を行い、表内のキー列またはすべての列でサプリメンタル・ロギングを有効にできます。

このプロシージャは、インスタンス化のためにデータベース内の各オブジェクトの最小SCNを記録します。 オブジェクトに対する最小SCNの次のSCNをオブジェクトのインスタンス化に使用できます。 このプロシージャを実行すると、データベース内のすべての現行オブジェクトと将来のオブジェクトのインスタンス化が準備されます。


関連項目:

インスタンス化およびサプリメンタル・ロギングの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構文

DBMS_CAPTURE_ADM.PREPARE_GLOBAL_INSTANTIATION
   supplemental_logging  IN  VARCHAR2  DEFAULT 'keys');

パラメータ

表20-9 PREPARE_GLOBAL_INSTANTIATIONプロシージャのパラメータ

パラメータ 説明

supplemental_logging

nonekeysまたはall

noneを指定すると、データベース内の表の列でサプリメンタル・ロギングは有効になりません。 このプロシージャは、これらの表の既存のサプリメンタル・ロギング指定は削除しません。

keysを指定すると、データベース内の表の主キー、一意キー、ビットマップ索引および外部キーの列でサプリメンタル・ロギングが有効になります。また、将来データベースに表が追加された場合、その表でもサプリメンタル・ロギングは有効になります。 主キー列のログは、無条件に記録されます。 一意キー、ビットマップ索引および外部キーの列のログは、条件付きで記録されます。 keysを指定しても、ビットマップ結合索引の列でサプリメンタル・ロギングは有効になりません。

allを指定すると、データベース内の表のすべての列でサプリメンタル・ロギングが有効になります。また、将来データベースに表が追加された場合、その表でもサプリメンタル・ロギングは有効になります。 各列のログが、無条件に記録されます。 LOB型、LONG型、LONG RAW型およびユーザー定義型の列では、サプリメンタル・ロギングは有効になりません。


使用上の注意

このプロシージャは、ソース・データベースで実行します。

データベースに対するすべての変更を取得プロセスによって取得する場合は、取得プロセスを構成した後、このプロシージャを使用してデータベース内の表をインスタンス化する準備を行ってください。


PREPARE_SCHEMA_INSTANTIATIONプロシージャ

このプロシージャは、別のデータベースで、スキーマ内のすべての表をインスタンス化するために必要な同期化を行い、表内のキー列またはすべての列でサプリメンタル・ロギングを有効にできます。

このプロシージャは、インスタンス化のためにスキーマ内の各オブジェクトの最小SCNを記録します。 オブジェクトに対する最小SCNの次のSCNをオブジェクトのインスタンス化に使用できます。 このプロシージャを実行すると、スキーマ内のすべての現行オブジェクトと将来のオブジェクトのインスタンス化が準備されます。


関連項目:

インスタンス化およびサプリメンタル・ロギングの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構文

DBMS_CAPTURE_ADM.PREPARE_SCHEMA_INSTANTIATION(
   schema_name           IN  VARCHAR2,
   supplemental_logging  IN  VARCHAR2  DEFAULT 'keys');

パラメータ

表20-10 PREPARE_SCHEMA_INSTANTIATIONプロシージャのパラメータ

パラメータ 説明

schema_name

スキーマの名前。 たとえば、hrのように指定します。

supplemental_logging

nonekeysまたはall

noneを指定すると、スキーマ内の表の列でサプリメンタル・ロギングは有効になりません。 このプロシージャは、これらの表の既存のサプリメンタル・ロギング指定は削除しません。

keysを指定すると、スキーマ内の表の主キー、一意キー、ビットマップ索引および外部キーの列でサプリメンタル・ロギングが有効になります。また、将来このスキーマに表が追加された場合、その表でもサプリメンタル・ロギングは有効になります。 主キー列のログは、無条件に記録されます。 一意キー、ビットマップ索引および外部キーの列のログは、条件付きで記録されます。 keysを指定しても、ビットマップ結合索引の列でサプリメンタル・ロギングは有効になりません。

allを指定すると、スキーマ内の表のすべての列でサプリメンタル・ロギングが有効になります。また、将来このスキーマに表が追加された場合、その表でもサプリメンタル・ロギングは有効になります。 各列のログが、無条件に記録されます。 LOB型、LONG型、LONG RAW型およびユーザー定義型の列では、サプリメンタル・ロギングは有効になりません。


使用上の注意

このプロシージャは、ソース・データベースで実行します。 スキーマに対するすべての変更を取得プロセスによって取得する場合は、取得プロセスを構成した後、このプロシージャを使用してスキーマ内の表をインスタンス化する準備を行ってください。


PREPARE_TABLE_INSTANTIATIONプロシージャ

このプロシージャは、別のデータベースで、表をインスタンス化するために必要な同期化を行い、表内のキー列またはすべての列でサプリメンタル・ロギングを有効にできます。

このプロシージャは、インスタンス化のために表の最小SCNを記録します。 オブジェクトに対する最小SCNの次のSCNをオブジェクトのインスタンス化に使用できます。


関連項目:

インスタンス化およびサプリメンタル・ロギングの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構文

DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION(
   table_name            IN  VARCHAR2,
   supplemental_logging  IN  VARCHAR2  DEFAULT 'keys');

パラメータ

表20-11 PREPARE_TABLE_INSTANTIATIONプロシージャのパラメータ

パラメータ 説明

table_name

表の名前。[schema_name.]object_nameの形式で指定します。 たとえば、hr.employeesのように指定します。 スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

supplemental_logging

nonekeysまたはall

noneを指定すると、表内の列でサプリメンタル・ロギングは有効になりません。 このプロシージャは、表の既存のサプリメンタル・ロギング指定は削除しません。

keysを指定すると、表の主キー、一意キー、ビットマップ索引および外部キーの列でサプリメンタル・ロギングが有効になります。 このプロシージャは、表のキー列を3つの個別のログ・グループに配置します。主キー列は無条件のログ・グループ、一意キー列とビットマップ索引列は条件付きログ・グループ、外部キー列は条件付きログ・グループに配置されます。 keysを指定しても、ビットマップ結合索引の列でサプリメンタル・ロギングは有効になりません。

allを指定すると、表のすべての列でサプリメンタル・ロギングが有効になります。 このプロシージャは、表内のすべての列を無条件のログ・グループに配置します。 LOB型、LONG型、LONG RAW型およびユーザー定義型の列では、サプリメンタル・ロギングは有効になりません。


使用上の注意

このプロシージャは、ソース・データベースで実行します。 表に対するすべての変更を取得プロセスによって取得する場合は、取得プロセスを構成した後、このプロシージャを使用して表をインスタンス化する準備を行ってください。


SET_PARAMETERプロシージャ

このプロシージャは、取得プロセス・パラメータを指定した値に設定します。

構文

DBMS_CAPTURE_ADM.SET_PARAMETER(
   capture_name  IN  VARCHAR2,
   parameter     IN  VARCHAR2,
   value         IN  VARCHAR2);

パラメータ

表20-12 SET_PARAMETERプロシージャのパラメータ

パラメータ 説明

capture_name

取得プロセスの名前。 所有者を指定しないでください。

parameter

設定するパラメータの名前。 これらのパラメータのリストについては、「取得プロセスのパラメータ」を参照してください。

value

パラメータに設定する値。


使用上の注意

パラメータ値を変更したとき、パラメータの新しい値が有効になるまでに時間がかかる場合があります。

取得プロセスのパラメータ

次の表に、取得プロセスのパラメータを示します。

表20-13 取得プロセスのパラメータ

パラメータ名 設定可能な値 デフォルト 説明

disable_on_limit

YまたはN

N

Yの場合は、time_limitパラメータまたはmessage_limitパラメータによって指定された値に達すると、取得プロセスは無効化されます。

Nの場合、取得プロセスは、制限に達したために停止した後すぐに再開されます。

downstream_real_time_mine

YまたはN

Y(ローカル取得プロセスの場合)

N(ダウンストリーム取得プロセスの場合)

Yの場合、取得プロセスはリアルタイムのダウンストリーム取得プロセスになります。 このパラメータをyに設定した後、SQL文ALTER SYSTEM ARCHIVE LOG CURRENTを使用してソース・データベースのREDOログ・ファイルを切り替え、リアルタイムのダウンストリーム取得プロセスを開始します。 このパラメータをYに設定した場合は、ソース・データベースのREDOデータをダウンストリーム・データベースのスタンバイREDOログに送信する必要があります。 リアルタイムのダウンストリーム取得プロセスの作成の詳細は、『Oracle Streams概要および管理』を参照してください。

Nの場合、取得プロセスはアーカイブ・ログのダウンストリーム取得プロセスになります。

このパラメータは、ローカル取得プロセスでは無視されます。

maximum_scn

有効なSCN値またはinfinite

infinite

取得プロセスは、指定された値以上のSCNを持つ変更レコードの取得前に無効化されます。

infiniteの場合は、SCNの値に関係なく取得プロセスが実行されます。

message_limit

正の整数またはinfinite

infinite

取得プロセスは、指定した数のメッセージを取得した後停止します。

infiniteの場合は、取得したメッセージの数に関係なく実行し続けます。

parallelism

正の整数

1

REDOログを同時に調査できるパラレル実行サーバーの数。

parallelismパラメータを、使用可能なパラレル実行サーバー数より大きい値に設定すると、取得プロセスが無効化される場合があります。 parallelism取得プロセス・パラメータを設定するときは、PROCESSESおよびPARALLEL_MAX_SERVERS初期化パラメータが適切に設定されていることを確認してください。

注意: このパラメータの値を変更すると、取得プロセスは自動的に停止し、再開します。

startup_seconds

0、正の整数またはinfinite

0

同じ取得プロセスの別のインスタンス化が終了するのを待機する最大秒数。 同じ取得プロセスの別のインスタンス化がこの時間内に終了しない場合、取得プロセスは開始しません。 このパラメータが有用になるのは、取得プロセスを手動で起動する場合に限られます。

infiniteの場合、取得プロセスは、同じ取得プロセスの別のインスタンス化が終了した後で開始します。

time_limit

正の整数またはinfinite

infinite

取得プロセスは、開始してから指定秒数が経過した後、可能なかぎり早く停止します。

infiniteの場合、取得プロセスは明示的に停止されるまで実行し続けます。

trace_level

0または正の整数

0

Oracleサポート・サービスから指示がないかぎり、このパラメータは設定しないでください。

write_alert_log

YまたはN

Y

Yの場合、取得プロセスは、終了時にアラート・ログにメッセージを書き込みます。

Nの場合は、終了時にアラート・ログにメッセージを書き込みません。

メッセージには、取得プロセスの停止理由が示されます。



注意:

  • 正の整数として解釈されるすべてのパラメータについて、設定可能な最大値は4,294,967,295です。 適用可能な場合、比較的大きい値にはinfiniteを指定してください。

  • SCN設定が必要なパラメータについては、任意の有効なSCN値を指定できます。



START_CAPTUREプロシージャ

このプロシージャは、取得プロセスを開始します。取得プロセスは、REDOログを調査し、取り出したREDO情報を関連キューにエンキューします。

開始ステータスは永続的に記録されます。 したがって、ステータスがENABLEDの場合、取得プロセスはデータベース・インスタンスの起動時に開始されます。

取得プロセスはバックグラウンドのOracleプロセスであり、接頭辞cが付加されます。

DBMS_AQADM.START_QUEUEおよびDBMS_AQADM.STOP_QUEUEのエンキューとデキューの状態は、取得プロセスの開始ステータスには影響を与えません。

構文

DBMS_CAPTURE_ADM.START_CAPTURE(
   capture_name  IN  VARCHAR2);

パラメータ

表20-14 START_CAPTUREプロシージャのパラメータ

パラメータ 説明

capture_name

取得プロセスの名前。 所有者を指定しないでください。

取得プロセスは、LogMinerを使用してREDO情報内の変更を取得します。 NULLを設定することはできません。


使用上の注意

取得プロセスのステータスは永続的に記録されます。 したがって、ステータスがENABLEDの場合、取得プロセスはデータベース・インスタンスの起動時に開始されます。 取得プロセス(cnnn)はOracleバックグラウンド・プロセスです。


STOP_CAPTUREプロシージャ

このプロシージャは、取得プロセスを停止してREDOログの調査を中断します。

停止ステータスは永続的に記録されます。 したがって、ステータスがDISABLEDの場合、取得プロセスはデータベース・インスタンスの起動時に開始されません。

DBMS_AQADM.START_QUEUEおよびDBMS_AQADM.STOP_QUEUEのエンキューとデキューの状態は、取得プロセスの停止ステータスには影響を与えません。

構文

DBMS_CAPTURE_ADM.STOP_CAPTURE(
   capture_name  IN  VARCHAR2,
   force         IN  BOOLEAN  DEFAULT FALSE);

パラメータ

表20-15 STOP_CAPTUREプロシージャのパラメータ

パラメータ 説明

capture_name

取得プロセスの名前。 NULLを設定することはできません。 所有者を指定しないでください。

force

このパラメータは、将来使用するために予約されています。 現在、有効なBOOLEAN設定は無視されます。


使用上の注意

取得プロセスのステータスは永続的に記録されます。 したがって、ステータスがDISABLEDまたはABORTEDの場合、取得プロセスはデータベース・インスタンスの起動時に開始されません。 取得プロセス(cnnn)はOracleバックグラウンド・プロセスです。