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

戻る
戻る
 
次へ
次へ
 

29 DBMS_CDC_PUBLISH

パブリッシャは、一連のチェンジ・データ・キャプチャ・パッケージの1つであるDBMS_CDC_PUBLISHパッケージを使用して、Oracleチェンジ・データ・キャプチャ・システムを設定し、1つ以上のOracleリレーショナル・ソース・テーブルから変更データを取得およびパブリッシュします。

チェンジ・データ・キャプチャが取得およびパブリッシュするのは、コミットされたデータのみです。Oracleチェンジ・データ・キャプチャは、リレーショナル表に追加された新しいデータ、リレーショナル表内で変更されたデータ、リレーショナル表から削除されたデータを検出し、サブスクライバによる使用が可能な形式で変更データをパブリッシュします。

通常、チェンジ・データ・キャプチャ・システムには1人のパブリッシャが設定されます。このパブリッシャは、Oracleリレーショナル・ソース・テーブルに対する変更の取得とパブリッシュを必要な回数だけ行います。次に、パブリッシャは、パブリッシュされたデータへのアクセス権をサブスクライバ(アプリケーションまたは個人)に付与します。 サブスクライバは、DBMS_CDC_SUBSCRIBEパッケージを使用してパブリッシュ・データにアクセスします。


関連項目:

Oracleチェンジ・データ・キャプチャの詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

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


DBMS_CDC_PUBLISHの使用方法

この項では、DBMS_CDC_PUBLISHパッケージの使用に関連する項目について説明します。


概要

パブリッシャはDBMS_CDC_PUBLISHパッケージを使用して、チェンジ・ソース、チェンジ・セットおよびチェンジ・テーブルの作成とメンテナンスを行い、それらが不要になった場合は削除します。

パブリッシャ(通常はデータベース管理者)は、主にデータのソースに関与します。また、チェンジ・データ・キャプチャ・システムの構造(チェンジ・ソース、チェンジ・セットおよびチェンジ・テーブル)を記述するスキーマ・オブジェクトを作成します。

大部分のチェンジ・データ・キャプチャ・システムには、1人のパブリッシャおよび多数のサブスクライバが設定されています。パブリッシャは、主に次のタスクを実行します。

  1. ソース・テーブルの変更でパブリッシュが必要なものを決定します。

  2. 変更を取得するときのモード(非同期または同期)を選択します。

  3. DBMS_CDC_PUBLISHパッケージのサブプログラムを使用してソース・テーブルから変更データを取得し、チェンジ・ソース、チェンジ・セットおよびチェンジ・テーブルのオブジェクトの作成と管理を行うことによって、変更データを使用できるようにします。

  4. SQL GRANT文とREVOKE文を使用し、ユーザーとロールのチェンジ・テーブルに対するSELECT権限の付与と取消しを行うことによって、サブスクライバへのアクセスを制御できます (サブスクライバがDBMS_CDC_SUBSCRIBEパッケージを使用して変更データをサブスクライブするには、このようなアクセス制御が必要です)。


    関連項目:

    パブリッシュした変更データのサブスクライブに使用するパッケージについては、第30章「DBMS_CDC_SUBSCRIBE」を参照してください。


推奨されないサブプログラム


注意:

新しいアプリケーションでは、これらのプロシージャを使用しないことをお薦めします。これらのプロシージャは、下位互換性を維持する目的のみでサポートされています。

Oracle Database 11gでは、次のサブプログラムの使用は推奨されていません。


セキュリティ・モデル

DBMS_CDC_PUBLISHパッケージを使用するには、EXECUTE_CATALOG_ROLEロールが必要です。また、パブリッシュのモードおよびパブリッシャの場所(ソース・データベースまたはステージング・データベース)に応じて、追加の権限およびロールが必要になります。 詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』のパブリッシャへの権限およびロールの付与に関する項を参照してください。


ビュー

DBMS_CDC_PUBLISHパッケージで使用するビューについては、『Oracle Databaseデータ・ウェアハウス・ガイド』のチェンジ・データ・キャプチャ環境の情報の取得に関する項を参照してください。


DBMS_CDC_PUBLISHサブプログラムの要約

表29-1に、DBMS_CDC_PUBLISHパッケージのサブプログラムと各サブプログラムを使用できるモードを示します。「モード」列の「すべて」という値は、同期モード、および非同期チェンジ・データ・キャプチャのすべてのモードでサブプログラムが使用できることを示します。「モード」列の「非同期」という値は、非同期チェンジ・データ・キャプチャのすべてのモード(HotLog、分散HotLogおよびAutoLog)でサブプログラムが使用できることを示します。

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

サブプログラム モード 説明

ALTER_AUTOLOG_CHANGE_SOURCEプロシージャ


非同期AutoLog

既存のAutoLogチェンジ・ソースのプロパティを1つ以上変更します。

ALTER_CHANGE_SETプロシージャ


すべて

既存のチェンジ・セットのプロパティを1つ以上変更します。

ALTER_CHANGE_TABLEプロシージャ


すべて

既存のチェンジ・テーブルに対して、列を追加または削除するか、プロパティを変更します。

ALTER_HOTLOG_CHANGE_SOURCEプロシージャ


非同期分散HotLog

既存の分散HotLogチェンジ・ソースのプロパティを1つ以上変更します。

CREATE_AUTOLOG_CHANGE_SOURCEプロシージャ


非同期AutoLog

AutoLogチェンジ・ソースを作成します。

CREATE_CHANGE_SETプロシージャ

すべて

チェンジ・セットを作成します。

CREATE_CHANGE_TABLEプロシージャ


すべて

指定されたスキーマ内にチェンジ・テーブルを作成します。

CREATE_HOTLOG_CHANGE_SOURCEプロシージャ


非同期分散HotLog

分散HotLogチェンジ・ソースを作成します。

DROP_CHANGE_SETプロシージャ


すべて

既存のチェンジ・セットを削除します。

DROP_CHANGE_SOURCEプロシージャ


非同期Autologおよび非同期分散Hotlog

既存のAutoLogまたは分散Hotlogチェンジ・ソースを削除します。

DROP_CHANGE_TABLEプロシージャ


すべて

既存のチェンジ・テーブルを削除します。

DROP_SUBSCRIPTIONプロシージャ


すべて

サブスクライバが作成したサブスクリプションをパブリッシャが削除できるようにします。

GET_DDLOPERファンクション


すべて

2進整数を、実際に行われたDDL操作について説明するわかりやすい文字列に変換します。

PURGEプロシージャ


すべて

ステージング・データベース内のすべてのチェンジ・テーブルから不要な行を削除します。

PURGE_CHANGE_SETプロシージャ


すべて

指定されたチェンジ・セット内のすべてのチェンジ・テーブルから不要な行を削除します。

PURGE_CHANGE_TABLEプロシージャ


すべて

指定されたチェンジ・テーブルから不要な行を削除します。



ALTER_AUTOLOG_CHANGE_SOURCEプロシージャ

このプロシージャでは、既存のAutoLogチェンジ・ソースのプロパティを変更します。

構文

DBMS_CDC_PUBLISH.ALTER_AUTOLOG_CHANGE_SOURCE(
     change_source_name  IN VARCHAR2,
     description         IN VARCHAR2 DEFAULT NULL,
     remove_description  IN CHAR DEFAULT 'N',
     first_scn           IN NUMBER DEFAULT NULL);

パラメータ

表29-2 ALTER_AUTOLOG_CHANGE_SOURCEプロシージャのパラメータ

パラメータ 説明

change_source_name

既存のAutoLogチェンジ・ソースの名前。Oracleスキーマ・オブジェクトのネーミング規則に従って、チェンジ・ソースの名前を指定します。

description

チェンジ・ソースの新しい説明。255文字以下の説明を指定します。

remove_description

'Y'または'N'

'Y'の場合、現在の説明はNULLに変更されます。'N'の場合、現在の説明は変更されません。

このパラメータとdescriptionパラメータの両方を指定しないでください。

first_scn

最初のSCNの新しい値。


例外

表29-3 ALTER_AUTOLOG_CHANGE_SOURCEプロシージャの例外

例外 説明

ORA-31401

変更ソースは既存の変更ソースではありません。

ORA-31452

パラメータの値が無効です。値はYまたはNです。

ORA-31455

ALTERの対象がありません。

ORA-31497

first_scnに無効な値が指定されました。

ORA-31498

descriptionremove_descriptionの両方を指定することはできません。

ORA-31499

必須パラメータにNULL値が指定されました。

ORA-31501

変更ソースはAutoLog変更ソースではありません。

ORA-31504

事前定義済の変更ソースは変更または削除できません。

ORA-31507

パラメータ値が最大長を超えています。


使用上の注意


関連項目:

非同期AutoLogチェンジ・セットで不要になったREDOログを検出した後でSCNを調整する場合に、パブリッシャがALTER_AUTOLOG_CHANGE_SOURCEプロシージャを使用する方法については、『Oracle Databaseデータ・ウェアハウス・ガイド』の非同期チェンジ・データ・キャプチャおよびREDOログ・ファイルに関する項を参照してください。


ALTER_CHANGE_SETプロシージャ

このプロシージャでは、CREATE_CHANGE_SETプロシージャで作成された既存のチェンジ・セットのプロパティを変更します。

構文

DBMS_CDC_PUBLISH.ALTER_CHANGE_SET(
     change_set_name         IN VARCHAR2,
     description             IN VARCHAR2 DEFAULT NULL,
     remove_description      IN CHAR DEFAULT 'N',
     enable_capture          IN CHAR DEFAULT NULL,
     recover_after_error     IN CHAR DEFAULT NULL,
     remove_ddl              IN CHAR DEFAULT NULL,
     stop_on_ddl             IN CHAR DEFAULT NULL);

パラメータ

表29-4 ALTER_CHANGE_SETプロシージャのパラメータ

パラメータ 説明

change_set_name

既存のチェンジ・セットの名前。Oracleスキーマ・オブジェクトのネーミング規則に従って、チェンジ・セットの名前を指定します。

description

チェンジ・セットの新しい説明。255文字以下の説明を指定します。

remove_description

'Y'または'N'

'Y'の場合、現在の説明はNULLに変更されます。'N'の場合、現在の説明は変更されません。

このパラメータとdescriptionパラメータの両方を指定しないでください。

enable_capture

'Y'または'N'

'Y'の場合、指定したチェンジ・セットに対してチェンジ・データ・キャプチャが有効になります。

'N'の場合、指定したチェンジ・セットに対してチェンジ・データ・キャプチャが無効になります。

同期チェンジ・セットは、チェンジ・データ・キャプチャが有効な状態で作成されます。

非同期チェンジ・セットは、チェンジ・データ・キャプチャが無効な状態で作成されます。

recover_after_error

'Y'または'N'

'Y'の場合、チェンジ・データ・キャプチャは以前の取得エラーからのリカバリを試行します。

'N'の場合、チェンジ・データ・キャプチャは以前の取得エラーからのリカバリを試行しません。

remove_ddl

'Y'または'N'

このパラメータの値が'Y'で、recover_after_errorパラメータの値も'Y'の場合は、取得エラーの原因となったすべてのDDLレコードがリカバリ処理中に削除されます。

このパラメータの値が'N'の場合、取得エラーの原因となったDDLレコードはリカバリ処理中に削除されません。

このパラメータが意味を持つのは、recover_after_errorパラメータに'Y'が指定されている場合のみです。

stop_on_ddl

'Y'または'N'

'Y'の場合、DDLイベントが検出されるとチェンジ・データ・キャプチャは停止します。

'N'の場合、DDLイベントが検出されてもチェンジ・データ・キャプチャは続行します。

このパラメータの詳細は、「使用上の注意」を参照してください。


例外

表29-5 ALTER_CHANGE_SETプロシージャの例外

例外 説明

ORA-31410

変更セットは既存の変更セットではありません。

ORA-31452

パラメータの値が無効です。値はYまたはNです。

ORA-31455

ALTERの対象がありません。

ORA-31468

DDL変更レコードを処理できません。

ORA-31469

変更セットのChange Data Captureを有効化できません。

ORA-31485

データベース・リンクが無効です。

ORA-31498

descriptionremove_descriptionの両方を指定することはできません。

ORA-31499

必須パラメータにNULL値が指定されました。

ORA-31505

事前定義済の変更セットは変更または削除できません。

ORA-31507

パラメータ値が最大長を超えています。

ORA-31508

同期変更セットのパラメータ値が無効です。

ORA-31514

取得エラーのため、変更セットは使用できません。


使用上の注意


ALTER_CHANGE_TABLEプロシージャ

このプロシージャでは、CREATE_CHANGE_TABLEプロシージャで作成したチェンジ・テーブルに対して、列の追加、列の削除、プロパティの変更を行います。

構文

DBMS_CDC_PUBLISH.ALTER_CHANGE_TABLE(
     owner                  IN VARCHAR2,
     change_table_name      IN VARCHAR2,
     operation              IN VARCHAR2,
     column_list            IN VARCHAR2,
     rs_id                  IN CHAR,
     row_id                 IN CHAR,
     user_id                IN CHAR,
     timestamp              IN CHAR,
     object_id              IN CHAR,
     source_colmap          IN CHAR,
     target_colmap          IN CHAR,
     ddl_markers            IN CHAR  DEFAULT NULL);

パラメータ

表29-6 ALTER_CHANGE_TABLEプロシージャのパラメータ

パラメータ 説明

owner

チェンジ・テーブルを所有するスキーマの名前。

change_table_name

変更するチェンジ・テーブルの名前。Oracleスキーマ・オブジェクトのネーミング規則に従って、チェンジ・テーブルの名前を指定します。

operation

column_listパラメータで指定したユーザー列、または他のパラメータで指定した制御列に対する操作を指定します。列を追加する場合はADD、列を削除する場合はDROPを指定します。

column_list

ソース・テーブルの列のうち、チェンジ・テーブルに追加する列またはチェンジ・テーブルから削除する列について、その列名およびデータ型をカンマで区切って指定したリスト。

rs_id

row_id

user_id

timestamp

object_id

source_colmap

target_colmap

ddl_markers

これらのパラメータは、それぞれ次のように特定の制御列を表します。

  • rs_idパラメータは、RSID$制御列を表します。

  • row_idパラメータは、ROW_ID$制御列を表します。

  • user_idパラメータは、USERNAME$制御列を表します。

  • timestampパラメータは、TIMESTAMP$制御列を表します。

  • object_idパラメータは、SYS_NC_OID$制御列を表します。

  • source_colmapパラメータは、SOURCE_COLMAP$制御列を表します。

  • target_colmapパラメータは、TARGET_COLMAP$制御列を表します。

  • ddl_markersパラメータは、ソース・テーブルでのすべてのDDL操作を追跡し、それらの操作に関する情報をチェンジ・テーブルに格納します。 これらは、ddl_markersが有効になっている場合に取得する3つの追加の制御列です。3つの値があります。DDLOPER$は、行われたDDL操作の種類を示すビットベクトルです。(このDDL操作の名前を取得するには、プロシージャDBMS_CDC_PUBLISH.GET_DDLOPER(ddloper$)を使用します。)DDLDESC$は、実行された実際のDDL文が含まれているCLOBです。DDLPDOBJN$は、このリリースでは使用されません。

各パラメータには'Y'または'N'のどちらかを指定します。

  • 'Y': operationパラメータに従って、指定された制御列をチェンジ・テーブルに追加するか、またはチェンジ・テーブルから制御列を削除します。

  • 'N': チェンジ・テーブルに対して、指定された制御列の追加も削除も行いません。



関連項目:

制御列の詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

例外

表29-7 ALTER_CHANGE_TABLEプロシージャの例外

例外 説明

ORA-31403

変更表にはすでに指定された列が含まれています。

ORA-31409

入力パラメータの1つ以上の値が不適切です。

ORA-31415

変更セットが存在しません。

ORA-31416

SOURCE_COLMAPの値が無効です。

ORA-31417

列リストに制御列control-column-nameが含まれています。

ORA-31421

変更表が存在しません。

ORA-31422

所有者スキーマが存在しません。

ORA-31423

変更表には指定された列が含まれていません。

ORA-31454

操作パラメータの値が無効です。値はADDまたはDROPです。

ORA-31455

ALTERの対象がありません。

ORA-31456

DBMS_CDC_UTILITYパッケージのプロシージャの実行でエラーが発生しました。

ORA-31459

DBMS_CDC_PUBLISHパッケージのシステム・トリガーがインストールされていません。

ORA-31471

OBJECT_IDの値が無効です。


使用上の注意


ALTER_HOTLOG_CHANGE_SOURCEプロシージャ

このプロシージャでは、既存の分散HotLogチェンジ・ソースのプロパティを変更します。

構文

DBMS_CDC_PUBLISH.ALTER_HOTLOG_CHANGE_SOURCE(
     change_source_name  IN VARCHAR2,
     description         IN VARCHAR2 DEFAULT NULL,
     remove_description  IN CHAR DEFAULT 'N',
     enable_source       IN CHAR DEFAULT NULL);

パラメータ

表29-8 ALTER_HOTLOG_CHANGE_SOURCEプロシージャのパラメータ

パラメータ 説明

change_source_name

既存の分散HotLogチェンジ・ソースの名前。Oracleスキーマ・オブジェクトのネーミング規則に従って、チェンジ・ソースの名前を指定します。

description

チェンジ・ソースの新しい説明。255文字以下の説明を指定します。

remove_description

'Y'または'N'

'Y'の場合、現在の説明はNULLに変更されます。'N'の場合、現在の説明は変更されません。

このパラメータとdescriptionパラメータの両方を指定しないでください。

enable_source

'Y'または'N'

'Y'の場合、チェンジ・ソースは有効です。'N'の場合、チェンジ・ソースは無効です。


例外

表29-9 ALTER_HOTLOG_CHANGE_SOURCEプロシージャの例外

例外 説明

ORA-31401

変更ソースは既存の変更ソースではありません。

ORA-31455

ALTERの対象がありません。

ORA-31480

ステージング・データベースおよびソース・データベースは同じにできません。

ORA-31481

変更ソースはHotLog変更ソースではありません。

ORA-31482

非分散Hotlog変更ソースのオプションが無効です。

ORA-31484

ソース・データベースはリリース9.2.0.6以上に設定する必要があります。

ORA-31485

データベース・リンクが無効です。

ORA-31498

descriptionremove_descriptionの両方を指定することはできません。

ORA-31499

必須パラメータにNULL値が指定されました。

ORA-31504

事前定義済の変更ソースは変更または削除できません。

ORA-31507

パラメータ値が最大長を超えています。

ORA-31532

変更ソースを有効化できません。

ORA-31534

Change Data CaptureのパブリッシャにDBAロールがありません。


使用上の注意


CREATE_AUTOLOG_CHANGE_SOURCEプロシージャ

このプロシージャでは、AutoLogチェンジ・ソースを作成します。AutoLogチェンジ・ソースは、REDOログ・ファイル・セットに基づいて作成されます。このREDOログ・ファイルは、ステージング・データベースが存在するシステムにREDO転送サービスで自動的にコピーされるものです。

構文

DBMS_CDC_PUBLISH.CREATE_AUTOLOG_CHANGE_SOURCE(
     change_source_name  IN VARCHAR2,
     description         IN VARCHAR2 DEFAULT NULL,
     source_database     IN VARCHAR2,
     first_scn           IN NUMBER,
     online_log          IN CHAR DEFAULT 'N');

パラメータ

表29-10 CREATE_AUTOLOG_CHANGE_SOURCEプロシージャのパラメータ

パラメータ 説明

change_source_name

チェンジ・ソースの名前。Oracleスキーマ・オブジェクトのネーミング規則に従って、チェンジ・ソースの名前を指定します。

description

チェンジ・ソースの説明。255文字以下の説明を指定します。

source_database

チェンジ・ソースのソース・データベース・インスタンスのグローバル名。

first_scn

チェンジ・ソースのアーカイブREDOログ・ファイル内にあるLogMinerディクショナリの開始時SCN。

online_log

'Y'または'N'。値が'Y'の場合、チェンジ・ソースは、ソース・データベースのオンラインREDOログを検索するAutoLogオンライン・オプションを使用して、変更データを収集します。 ステージング・データベースでは、1つのチェンジ・ソースのみにonline_log='Y'を指定できます。

値が'N'の場合、チェンジ・ソースは、AutoLogアーカイブ・オプションを使用して、アーカイブREDOログ・ファイルから変更データを取得します。 ステージング・データベースでは、1つ以上のチェンジ・ソースにonline_log='N'を指定できます。


例外

表29-11 CREATE_AUTOLOG_CHANGE_SOURCEプロシージャの例外

例外 説明

ORA-31436

変更ソースが重複しています。

ORA-31497

first_scnに無効な値が指定されました。

ORA-31499

必須パラメータにNULL値が指定されました。

ORA-31507

パラメータ値が最大長を超えています。

ORA-31508

同期変更セットのパラメータ値が無効です。

ORA-31535

この構成では変更ソースをサポートできません。


使用上の注意


CREATE_CHANGE_SETプロシージャ

このプロシージャでは、パブリッシャがチェンジ・セットを作成できるようにします。非同期のHotLogおよびAutoLogモードのチェンジ・データ・キャプチャでは、変更データの取得の開始日付と終了日付をパブリッシャが任意に指定できます。

構文

DBMS_CDC_PUBLISH.CREATE_CHANGE_SET(
     change_set_name        IN VARCHAR2,
     description            IN VARCHAR2 DEFAULT NULL,
     change_source_name     IN VARCHAR2,
     stop_on_ddl            IN CHAR DEFAULT 'N',
     begin_date             IN DATE DEFAULT NULL,
     end_date               IN DATE DEFAULT NULL);

パラメータ

表29-12 CREATE_CHANGE_SETプロシージャのパラメータ

パラメータ 説明

change_set_name

チェンジ・セットの名前。Oracleスキーマ・オブジェクトのネーミング規則に従って、チェンジ・セットの名前を指定します。

description

チェンジ・セットの説明。255文字以下の説明を指定します。

change_source_name

指定したチェンジ・セットを格納する既存のチェンジ・ソースの名前。

stop_on_ddl

'Y'または'N'

'Y'の場合、DDLイベントが検出されるとチェンジ・データ・キャプチャは停止します。

'N'の場合、DDLイベントが検出されてもチェンジ・データ・キャプチャは続行します。

このパラメータの詳細は、「使用上の注意」を参照してください。

begin_date

パブリッシャがチェンジ・セットで変更データの取得を開始する日付を指定します。このパラメータの値は、非同期のHotLogおよびAutoLogモードのチェンジ・データ・キャプチャのみで有効です。

end_date

パブリッシャがチェンジ・セットで変更データの取得を終了する日付を指定します。このパラメータの値は、非同期のHotLogおよびAutoLogモードのチェンジ・データ・キャプチャのみで有効です。


例外

表29-13 CREATE_CHANGE_SETプロシージャの例外

例外 説明

ORA-31401

変更ソースは既存の変更ソースではありません。

ORA-31407

end_datebegin_dateより大きくする必要があります。

ORA-31408

begin_scnまたはend_scnに無効な値が指定されました。

ORA-31437

変更セットが重複しています。

ORA-31452

パラメータの値が無効です。値はYまたはNです。

ORA-31483

パラメータには空白を使用できません。

ORA-31485

データベース・リンクが無効です。

ORA-31487

この構成では開始日付または終了日付をサポートできません。

ORA-31488

この構成では変更セットをサポートできません。

ORA-31499

必須パラメータにNULL値が指定されました。

ORA-31503

begin_dateまたはend_dateに指定された日付が無効です。

ORA-31507

パラメータ値が最大長を超えています。

ORA-31508

同期変更セットのパラメータ値が無効です。


使用上の注意


CREATE_CHANGE_TABLEプロシージャ

このプロシージャでは、指定されたスキーマ内にチェンジ・テーブルを作成します。


注意:

CREATE_CHANGE_TABLEプロシージャで参照するソース・テーブルは、プロシージャのコール前にパブリッシャが事前に作成しておくことをお薦めします。このプロシージャで指定するチェンジ・セットのstop_on_ddlパラメータが'Y'に設定されている場合は、特に重要です。

構文

DBMS_CDC_PUBLISH.CREATE_CHANGE_TABLE(
     owner                  IN VARCHAR2,
     change_table_name      IN VARCHAR2,
     change_set_name        IN VARCHAR2,
     source_schema          IN VARCHAR2,
     source_table           IN VARCHAR2,
     column_type_list       IN VARCHAR2,
     capture_values         IN VARCHAR2,
     rs_id                  IN CHAR,
     row_id                 IN CHAR,
     user_id                IN CHAR,
     timestamp              IN CHAR,
     object_id              IN CHAR,
     source_colmap          IN CHAR,
     target_colmap          IN CHAR,
     options_string         IN VARCHAR2,
     ddl_markers            IN CHAR  DEFAULT 'Y');

パラメータ

表29-14 CREATE_CHANGE_TABLEプロシージャのパラメータ

パラメータ 説明

owner

チェンジ・テーブルを所有するスキーマの名前。

change_table_name

作成するチェンジ・テーブルの名前。Oracleスキーマ・オブジェクトのネーミング規則に従って、チェンジ・テーブルの名前を指定します。

change_set_name

作成するチェンジ・テーブルが保存されるチェンジ・セットの名前。

source_schema

ソース・テーブルが存在するスキーマ。

source_table

変更レコードが取得されるソース・テーブル。

column_type_list

追跡されるユーザー列とデータ型。カンマ区切りリストを使用して指定します。

capture_values

更新操作で取得する値として、次のいずれかを選択します。

  • OLD: ソース・テーブルから元の値を取得します。

  • NEW: ソース・テーブルから変更された値を取得します。

  • BOTH: ソース・テーブルから元の値と変更された値を取得します。

rs_id

row_id

user_id

timestamp

object_id

source_colmap

target_colmap

ddl_markers

これらのパラメータは、それぞれ次のように特定の制御列を表します。

  • rs_idパラメータは、RSID$制御列を表します。

  • row_idパラメータは、ROW_ID$制御列を表します。

  • user_idパラメータは、USERNAME$制御列を表します。

  • timestampパラメータは、TIMESTAMP$制御列を表します。

  • object_idパラメータは、SYS_NC_OID$制御列を表します。

  • source_colmapパラメータは、SOURCE_COLMAP$制御列を表します。

  • target_colmapパラメータは、TARGET_COLMAP$制御列を表します。

  • ddl_markersパラメータは、ソース・テーブルでのすべてのDDL操作を追跡し、それらの操作に関する情報をチェンジ・テーブルに格納します。3つの値があります。DDLOPER$は、行われたDDL操作の種類を示すビットベクトルです。(このDDL操作の名前を取得するには、プロシージャDBMS_CDC_PUBLISH.GET_DDLOPER(ddloper$)を使用します。)DDLDESC$は、実行された実際のDDL文が含まれているCLOBです。DDLPDOBJN$は、このリリースでは使用されません。

各パラメータには'Y'または'N'のどちらかを指定できます。

  • 'Y': 特定の制御列をチェンジ・テーブルに追加します。

  • 'N': 特定の制御列をチェンジ・テーブルに追加しません。

options_string

DDL文のCREATE TABLEに渡される構文的に正しいオプション。このオプション文字列は、作成されたDDL文のCREATE TABLEにおいて、表の列を定義するカッコの後に追加されます。詳細は、「使用上の注意」を参照してください。



関連項目:

制御列の詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

例外

表29-15 CREATE_CHANGE_TABLEプロシージャの例外

例外 説明

ORA-31402

パラメータを認識できません。

ORA-31409

入力パラメータの1つ以上の値が不適切です。

ORA-31415

変更セットが存在しません。

ORA-31416

SOURCE_COLMAPの値が無効です。

ORA-31417

列リストに制御列control-column-nameが含まれています。

ORA-31418

ソース・スキーマが存在しません。

ORA-31419

ソース表が存在しません。

ORA-31420

パージ・ジョブを送れません。

ORA-31421

変更表が存在しません。

ORA-31422

所有者スキーマが存在しません。

ORA-31438

変更表が重複しています。

ORA-31447

SYSスキーマに変更表を作成できません。

ORA-31450

change_table_nameの値が無効です。

ORA-31451

capture_valuesの値が無効です。値はOLDNEWまたはBOTHです。

ORA-31452

パラメータの値が無効です。値はYまたはNです。

ORA-31459

DBMS_CDC_PUBLISHパッケージのシステム・トリガーがインストールされていません。

ORA-31467

ソース表に列が見つかりません。

ORA-31471

OBJECT_IDの値が無効です。


使用上の注意


CREATE_HOTLOG_CHANGE_SOURCEプロシージャ

このプロシージャは、パブリッシャがこのプロシージャをステージング・データベースから実行する場合に、ソース・データベースに分散HotLogチェンジ・ソースを作成します。分散HotLogチェンジ・ソースは、Oracle Streamsの伝播によってステージング・データベースに自動的に転送されるオンラインREDOログ・ファイルのデータに基づいています。

構文

DBMS_CDC_PUBLISH.CREATE_HOTLOG_CHANGE_SOURCE(
     change_source_name     IN VARCHAR2,
     description            IN VARCHAR2 DEFAULT NULL,
     source_database        IN VARCHAR2);

パラメータ

表29-16 CREATE_HOTLOG_CHANGE_SOURCEプロシージャのパラメータ

パラメータ 説明

change_source_name

作成する分散HotLogチェンジ・ソースの名前。各チェンジ・ソースの名前は、Oracleスキーマ・オブジェクトのネーミング規則に従って一意に指定する必要があります。

description

チェンジ・ソースの説明。255文字以下の説明を指定します。

source_database

ステージング・データベースからソース・データベースに定義したデータベース・リンクの名前。ソース・データベースは、Oracle 9iデータベース、Database 10gリリース1(10.1)、Oracle Database 10gリリース2(10.2)またはOracle Database 11gリリース1(11.1)です。分散HotLogモードのチェンジ・データ・キャプチャのデータベース・リンクの作成方法については、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。


例外

表29-17 CREATE_HOTLOG_CHANGE_SOURCEプロシージャの例外

例外 説明

ORA-31436

変更ソースが重複しています。

ORA-31480

ステージング・データベースおよびソース・データベースは同じにできません。

ORA-31483

パラメータには空白を使用できません。

ORA-31484

ソース・データベースはリリース9.2.0.6以上に設定する必要があります。

ORA-31485

データベース・リンクが無効です。

ORA-31499

必須パラメータにNULL値が指定されました。

ORA-31507

パラメータ値が最大長を超えています。

ORA-31534

Change Data CaptureのパブリッシャにDBAロールがありません。


使用上の注意


DROP_CHANGE_SETプロシージャ

このプロシージャでは、CREATE_CHANGE_SETプロシージャで作成された既存のチェンジ・セットを削除します。

構文

DBMS_CDC_PUBLISH.DROP_CHANGE_SET(
     change_set_name     IN VARCHAR2);

パラメータ

表29-18 DROP_CHANGE_SETプロシージャのパラメータ

パラメータ 説明

change_set_name

削除するチェンジ・セットの名前。Oracleスキーマ・オブジェクトのネーミング規則に従って、チェンジ・セットの名前を指定します。


例外

表29-19 DROP_CHANGE_SETプロシージャの例外

例外 説明

ORA-31410

変更セットは既存の変更セットではありません。

ORA-31411

変更セットは変更表によって参照されます。

ORA-31485

データベース・リンクが無効です。

ORA-31499

必須パラメータにNULL値が指定されました。

ORA-31505

事前定義済の変更セットは変更または削除できません。

ORA-31507

パラメータ値が最大長を超えています。


使用上の注意


DROP_CHANGE_SOURCEプロシージャ

このプロシージャでは、CREATE_AUTOLOG_CHANGE_SOURCEプロシージャで作成された既存のAutoLogチェンジ・ソースまたはCREATE_HOTLOG_CHANGE_SOURCEプロシージャで作成された既存の分散HotLogチェンジ・ソースを削除します。

構文

DBMS_CDC_PUBLISH.DROP_CHANGE_SOURCE(
     change_source_name    IN VARCHAR2);

パラメータ

表29-20 DROP_CHANGE_SOURCEプロシージャのパラメータ

パラメータ 説明

change_source_name

削除するチェンジ・ソースの名前。Oracleスキーマ・オブジェクトのネーミング規則に従って、チェンジ・ソースの名前を指定します。


例外

表29-21 DROP_CHANGE_SOURCEプロシージャの例外

例外 説明

ORA-31401

変更ソースは既存の変更ソースではありません。

ORA-31406

変更ソースは変更セットによって参照されます。

ORA-31499

必須パラメータにNULL値が指定されました。

ORA-31504

事前定義済の変更ソースは変更または削除できません。

ORA-31507

パラメータ値が最大長を超えています。


使用上の注意


DROP_CHANGE_TABLEプロシージャ

このプロシージャでは、CREATE_CHANGE_TABLEプロシージャで作成された既存のチェンジ・テーブルを削除します。

構文

DBMS_CDC_PUBLISH.DROP_CHANGE_TABLE(
     owner              IN VARCHAR2,
     change_table_name  IN VARCHAR2,
     force_flag         IN CHAR);

パラメータ

表29-22 DROP_CHANGE_TABLEプロシージャのパラメータ

パラメータ 説明

owner

チェンジ・テーブルを所有するスキーマの名前。

change_table_name

削除するチェンジ・テーブルの名前。Oracleスキーマ・オブジェクトのネーミング規則に従って、チェンジ・テーブルの名前を指定します。

force_flag

チェンジ・テーブルを参照するサブスクリプションがあるかどうかに基づいて、チェンジ・テーブルを削除します。次のどちらかの値を指定します。

  • 'Y': チェンジ・テーブルを参照するサブスクリプションがある場合でも、チェンジ・テーブルを削除します。

  • 'N': チェンジ・テーブルを参照するサブスクリプションがない場合にのみ、チェンジ・テーブルを削除します。


例外

表29-23 DROP_CHANGE_TABLEプロシージャの例外

例外 説明

ORA-31421

変更表が存在しません。

ORA-31422

所有者スキーマが存在しません。

ORA-31424

変更表はアクティブ・サブスクリプションを持っています。

ORA-31441

表は変更表ではありません。


使用上の注意


DROP_SUBSCRIPTIONプロシージャ

このプロシージャでは、サブスクライバがDBMS_CDC_SUBSCRIBE.CREATE_SUBSCRIPTIONプロシージャを事前にコールして作成したサブスクリプションを、パブリッシャが削除できるようにします。

構文

DBMS_CDC_PUBLISH.DROP_SUBSCRIPTION(
     subscription_name  IN VARCHAR2);

パラメータ

表29-24 DROP_SUBSCRIPTIONプロシージャのパラメータ

パラメータ 説明

subscription_name

DBMS_CDC_SUBSCRIBE.CREATE_SUBSCRIPTIONプロシージャを以前にコールしたときに指定したサブスクリプションの名前。Oracleスキーマ・オブジェクトのネーミング規則に従って、サブスクリプションの名前を指定します。


例外

表29-25 DROP_SUBSCRIPTIONプロシージャの例外

例外 説明

ORA-31409

入力パラメータの1つ以上の値が不適切です。

ORA-31425

サブスクリプションが存在しません。

ORA-31432

ソース表が無効です。


使用上の注意


GET_DDLOPERファンクション

このファンクションは、2進整数を、実際に行われたDDL操作について説明するわかりやすい文字列に変換します。

構文

DBMS_CDC_PUBLISH.GET_DDLOPER (ddloper IN BINARY_INTEGER)
     RETURN VARCHAR2;

パラメータ

表29-26 GET_DDLOPERファンクションのパラメータ

パラメータ 説明

ddloper

実際に行われたDDL操作の内容を表す整数値。 この値は、サブスクライバ・ビューのddloper$列から取得されます。


次に、変更マーカーの使用方法を示します。まずDDL文を実行し、次にDDL文が取得されていることを確認します。

ALTER TABLE cdc_psales DROP PARTITION Dec_06;

SELECT ddloper$, DECODE(ddloper$, NULL, 'NULL',
       DBMS_CDC_PUBLISH.GET_DDLOPER(ddloper$))
          AS DDL_OPER
FROM cdc_psales_act
WHERE DDLOPER$ IS NOT NULL
ORDER BY cscn$;

ddloper$            DDL_OPER
---------------------------------
512                 Drop Partition
1 row selected.

SELECT ddldesc$
FROM cdc_psales_act
WHERE ddloper$
IS NOT NULL
ORDER BY cscn;

DDLDESC$
------------------------
alter table cdc_psales drop partition Dec_06
1 row selected.

使用上の注意


PURGEプロシージャ

このプロシージャでは、すべてのサブスクリプションによってチェンジ・テーブルの使用状況を監視し、サブスクリプションに不要になった行を判別した上で、それらの不要な行を削除してチェンジ・テーブルのサイズが無制限に拡大することを防ぎます。このプロシージャをコールすると、ステージング・データベース内のすべてのチェンジ・テーブルがパージされます。

構文

DBMS_CDC_PUBLISH.PURGE;

例外

パージ操作では、標準のOracle例外(権限違反など)のみが戻されます。

使用上の注意


PURGE_CHANGE_SETプロシージャ

このプロシージャでは、指定されたチェンジ・セット内のすべてのチェンジ・テーブルから不要な行を削除します。このプロシージャを使用すると、標準のPURGEプロシージャよりも細かいレベルでパージ操作を実行できます。

構文

DBMS_CDC_PUBLISH.PURGE_CHANGE_SET(
    change_set_name IN VARCHAR2,
    force           IN CHAR DEFAULT 'Y',
    purge_date      IN DATE DEFAULT NULL);

パラメータ

表29-27 PURGE_CHANGE_SETプロシージャのパラメータ

パラメータ 説明

change_set_name

既存のチェンジ・セットの名前。Oracleスキーマ・オブジェクトのネーミング規則に従って、チェンジ・セットの名前を指定します。

force

'Y'の場合は、パーティションの分割/削除の使用を試行します。ただし、必要なロックを取得できない場合は、削除文を使用してパージを行います。'N'の場合は、パーティションの分割/削除文のみを使用してパージを行います。ロックを取得できない場合、データはパージされません。

purge_date

commit_timestampがこの日付以前のすべてのレコードがパージされます。


例外

表29-28 PURGE_CHANGE_SETプロシージャの例外

例外 説明

ORA-31410

変更セットは既存の変更セットではありません。


使用上の注意


PURGE_CHANGE_TABLEプロシージャ

このプロシージャでは、指定されたチェンジ・テーブルから不要な行を削除します。 このプロシージャを使用すると、標準のPURGEプロシージャまたはPURGE_CHANGE_SETプロシージャよりも細かいレベルでパージ操作を実行できます。

構文

DBMS_CDC_PUBLISH.PURGE_CHANGE_TABLE(
     owner               IN VARCHAR2,
     change_table_name   IN VARCHAR2,
     force               IN CHAR DEFAULT 'Y',
     purge_date          IN DATE DEFAULT NULL);

パラメータ

表29-29 PURGE_CHANGE_TABLEプロシージャのパラメータ

パラメータ 説明

owner

指定されたチェンジ・テーブルの所有者。

change_table_name

既存のチェンジ・テーブルの名前。Oracleスキーマ・オブジェクトのネーミング規則に従って、チェンジ・テーブルの名前を指定します。

force

'Y'の場合は、パーティションの分割/削除の使用を試行します。ただし、必要なロックを取得できない場合は、削除文を使用してパージを行います。'N'の場合は、パーティションの分割/削除文のみを使用してパージを行います。ロックを取得できない場合、データはパージされません。

purge_date

commit_timestampがこの日付以前のすべてのレコードがパージされます。


例外

表29-30 PURGE_CHANGE_TABLEプロシージャの例外

例外 説明

ORA-31421

変更表が存在しません。


使用上の注意