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

戻る
戻る
 
次へ
次へ
 

30 DBMS_CDC_SUBSCRIBE

サブスクライバは、一連のチェンジ・データ・キャプチャ・パッケージの1つであるDBMS_CDC_SUBSCRIBEパッケージを使用して、DBMS_CDC_PUBLISHパッケージで取得およびパブリッシュした変更データの表示および問合せができます。

通常、チェンジ・データ・キャプチャ・システムには、1人のパブリッシャと多数のサブスクライバが設定されます。 サブスクライバ(通常はアプリケーションまたは個人ユーザー)は、オラクル社が提供するDBMS_CDC_SUBSCRIBEパッケージを使用してパブリッシュ・データにアクセスします。


関連項目:

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

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


DBMS_CDC_SUBSCRIBEの使用方法

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


概要

サブスクライバの主な目的は、変更データを使用することです。 各サブスクライバはDBMS_CDC_SUBSCRIBEパッケージを使用して、目的のソース・テーブルをサブスクリプションの対象として登録します。

データがチェンジ・テーブルに取得されるように(サブスクライバの観点ではデータがパブリッシュされるように)パブリッシャがシステムを設定し、チェンジ・テーブルへのアクセス権をサブスクライバに付与すると、サブスクライバは目的のソース・テーブルに関するパブリッシュ済の変更データの参照や問合せを実行できるようになります。 DBMS_CDC_SUBSCRIBEパッケージのサブプログラムを使用することにより、サブスクライバは次の主な目的を実現します。

  1. パブリッシュ済のソース・テーブルとソース列に対してサブスクリプションを作成し、そのサブスクリプションにサブスクライバ・ビューを関連付けて、どのような変更データを使用するのかを示します。

  2. サブスクリプションをアクティブ化して、サブスクライバが変更データを受け取る準備が整ったことを示します。

  3. サブスクリプション・ウィンドウを拡張して、新しい変更データ・セットを受け取ります。

  4. SELECT文を使用して、サブスクライバ・ビューから変更データを取り出します。

  5. 変更ブロックの処理を完了したときに、サブスクリプション・ウィンドウをパージします。

  6. サブスクリプションが完了したら、サブスクリプションを削除します。

図30-1に、サブスクライバがDBMS_CDC_SUBSCRIBEパッケージのサブプログラム(表30-1を参照)を使用するときの最も一般的な順序のフローチャートを示します。通常、サブスクライバは最初にサブスクリプションを作成し、1つ以上のソース・テーブルとソース列にサブスクライブした後、サブスクリプションをアクティブ化します。次に、サブスクリプション・ウィンドウを拡張し、サブスクライバ・ビューに対して問合せを実行し、サブスクリプション・ウィンドウをパージします。最後に、サブスクリプション・ウィンドウを拡張するステップに戻るか、サブスクリプションを削除します。


注意:

EXTEND_WINDOWプロシージャを使用した直後にPURGE_WINDOWプロシージャを使用した場合は、変更データが処理されずに失われる可能性があります。


関連項目:

変更データのパブリッシュに使用するパッケージについては、第29章「DBMS_CDC_PUBLISH」を参照してください。

図30-1 サブスクリプション・フロー

図30-1の説明が続きます。
「図30-1 サブスクリプション・フロー」の説明


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

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


セキュリティ・モデル

チェンジ・データ・キャプチャでは、DBMS_CDC_SUBSCRIBEパッケージに対するEXECUTE権限がPUBLICに付与されます。


ビュー

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


DBMS_CDC_SUBSCRIBEサブプログラムの要約

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

サブプログラム 説明

ACTIVATE_SUBSCRIPTIONプロシージャ


サブスクリプションが変更データにいつでもアクセスできる状態にあることを示します。

CREATE_SUBSCRIPTIONプロシージャ

サブスクリプションを作成して、1つのチェンジ・セットに関連付けます。

DROP_SUBSCRIPTIONプロシージャ


以前にCREATE_SUBSCRIPTIONプロシージャをコールして作成した既存のサブスクリプションを削除します。

EXTEND_WINDOWプロシージャ

新しい変更データが表示されるように、サブスクリプション・ウィンドウの上限境界を設定します。

PURGE_WINDOWプロシージャ


サブスクリプション・ウィンドウの下限境界を設定し、チェンジ・データ・キャプチャにはサブスクライバが一連の変更データの処理を完了したことを通知します。

SUBSCRIBEプロシージャ


サブスクライバが変更データにアクセスするソース・テーブルおよびソース列を指定します。また、サブスクライバがソース・テーブルの変更データを表示する際に使用するサブスクライバ・ビューを指定します。



ACTIVATE_SUBSCRIPTIONプロシージャ

このプロシージャは、サブスクリプションが変更データにいつでもアクセスできる状態にあることを示します。

構文

DBMS_CDC_SUBSCRIBE.ACTIVATE_SUBSCRIPTION (
     subscription_name  IN VARCHAR2);

パラメータ

表30-2 ACTIVATE_SUBSCRIPTIONプロシージャのパラメータ

パラメータ 説明

subscription_name

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


例外

表30-3 ACTIVATE_SUBSCRIPTIONプロシージャの例外

例外 説明

ORA-31409

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

ORA-31425

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

ORA-31426

アクティブ・サブスクリプションを変更できません。

ORA-31469

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

ORA-31514

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


使用上の注意


CREATE_SUBSCRIPTIONプロシージャ

このプロシージャでは、サブスクリプションを作成して1つのチェンジ・セットに関連付けます。 このプロシージャは、推奨されないGET_SUBSCRIPTION_HANDLEプロシージャのかわりに使用します。

構文

DBMS_CDC_SUBSCRIBE.CREATE_SUBSCRIPTION (
     change_set_name      IN  VARCHAR2,
     description          IN  VARCHAR2,
     subscription_name    IN  VARCHAR2);

パラメータ

表30-4 CREATE_SUBSCRIPTIONプロシージャのパラメータ

パラメータ 説明

change_set_name

サブスクライバがサブスクライブする既存のチェンジ・セットの名前。

description

サブスクリプションの説明(たとえば、使用目的など)。255文字以下の説明を指定します。

subscription_name

サブスクリプションの一意の名前(30文字以下)。この名前の接頭辞にはCDC$を使用できません。Oracleスキーマ・オブジェクトのネーミング規則に従って、サブスクリプションの名前を指定します。


例外

表30-5 CREATE_SUBSCRIPTIONプロシージャの例外

例外 説明

ORA-31409

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

ORA-31415

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

ORA-31449

change_set_nameの値が無効です。

ORA-31457

説明フィールドが最大長を超えました。

ORA-31469

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

ORA-31506

サブスクリプション名が重複しています。

ORA-31510

名前に予約済接頭辞CDC$が使用されています。

ORA-31511

名前が最大長30文字を超えています。


使用上の注意


DROP_SUBSCRIPTIONプロシージャ

このプロシージャはサブスクリプションを削除します。

構文

DBMS_CDC_SUBSCRIBE.DROP_SUBSCRIPTION (
     subscription_name  IN VARCHAR2);

パラメータ

表30-6 DROP_SUBSCRIPTIONプロシージャのパラメータ

パラメータ 説明

subscription_name

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


例外

表30-7 DROP_SUBSCRIPTIONプロシージャの例外

例外 説明

ORA-31409

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

ORA-31425

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


使用上の注意

不要になったサブスクリプションはサブスクライバがその都度削除し、不要な変更データがチェンジ・テーブル内に残らないようにしてください。


EXTEND_WINDOWプロシージャ

このプロシージャでは、新しい変更データが表示されるように、サブスクリプション・ウィンドウの上限境界を設定します。

構文

DBMS_CDC_SUBSCRIBE.EXTEND_WINDOW (
     subscription_name  IN VARCHAR2,
     upper_bound        IN DATE DEFAULT NULL);

パラメータ

表30-8 EXTEND_WINDOWプロシージャのパラメータ

パラメータ 説明

subscription_name

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

upper_bound

サブスクリプション・ウィンドウの上限の移動先の日付/タイムスタンプ。


例外

表30-9 EXTEND_WINDOWプロシージャの例外

例外 説明

ORA-31409

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

ORA-31425

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

ORA-31429

サブスクリプションがアクティブにされていません。

ORA-31432

ソース表が無効です。

ORA-31469

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

ORA-31509

発行が存在しません。

ORA-31514

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


使用上の注意


PURGE_WINDOWプロシージャ

このプロシージャでは、変更データを表示しないようにサブスクリプション・ウィンドウの下限境界を設定し、サブスクリプション・ウィンドウを実質的に空にします。サブスクライバはこのプロシージャをコールして、変更ブロックの処理が完了したことをチェンジ・データ・キャプチャに通知します。

構文

DBMS_CDC_SUBSCRIBE.PURGE_WINDOW (
     subscription_name   IN VARCHAR2,
     lower_bound         IN DATE DEFAULT NULL);

パラメータ

表30-10 PURGE_WINDOWプロシージャのパラメータ

パラメータ 説明

subscription_name

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

lower_bound

サブスクリプション・ウィンドウの下限の移動先の日付/タイムスタンプ。


例外

表30-11 PURGE_WINDOWプロシージャの例外

例外 説明

ORA-31409

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

ORA-31425

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

ORA-31429

サブスクリプションがアクティブにされていません。

ORA-31432

ソース表が無効です。

ORA-31469

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

ORA-31514

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


使用上の注意


SUBSCRIBEプロシージャ

このプロシージャでは、サブスクライバが変更データにアクセスするソース・テーブルおよびソース列を指定します。また、サブスクライバがソース・テーブルの変更データを表示する際に使用するサブスクライバ・ビューを指定します。

構文

SUBSCRIBEプロシージャには、次の2種類の構文があります。

パラメータ

表30-12 SUBSCRIBEプロシージャのパラメータ

パラメータ 説明

subscription_name

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

source_schema

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

source_table

パブリッシュ済のソース・テーブルの名前。

column_list

パブリッシュ済のソース・テーブルの列をカンマで区切って指定したリスト(パブリケーション)。

subscriber_view

指定されたソース・テーブルまたはパブリケーションを表示する、サブスクライバ・ビューの一意の名前(30文字以下)。この名前の接頭辞にはCDC$を使用できません。Oracleスキーマ・オブジェクトのネーミング規則に従って、サブスクライバ・ビューの名前を指定します。

publication_id

サブスクライバがALL_PUBLISHED_COLUMNSビューから取得できる有効なpublication_id


例外

表30-13 SUBSCRIBEプロシージャの例外

例外 説明

ORA-31409

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

ORA-31425

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

ORA-31426

アクティブ・サブスクリプションを変更できません。

ORA-31427

発行%sはすでにサブスクライブされています。

ORA-31428

指定された列をすべて含んでいる発行はありません。

ORA-31432

ソース表が無効です。

ORA-31466

発行が見つかりません。

ORA-31469

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

ORA-31510

名前に予約済接頭辞CDC$が使用されています。

ORA-31511

名前が最大長30文字を超えています。


使用上の注意