目次


カンタン!DB2テクテク第1歩 拡張機能編

DPropR-第三話

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: カンタン!DB2テクテク第1歩 拡張機能編

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:カンタン!DB2テクテク第1歩 拡張機能編

このシリーズの続きに乞うご期待。

レプリケーション環境を構成するデータベースサーバー

前回まで、DpropRを構成する要素とDpropRでデータをレプリケーションするために重要な概念をご紹介してきましたが、今回はレプリケーション環境のデータベースサーバーおよび、レプリケーション定義とその実行例についてご紹介します。

レプリケーション環境を構成するデータベースサーバーとして次の3つがあります。

  1. ソース・サーバー
  2. ターゲット・サーバー
  3. コントロール・サーバー

ソース・サーバーはレプリケーション対象のソース表が定義されているデータベース・サーバーです。Captureプログラムは常に、ソース・サーバーでローカル・アプリケーションとして実行されます。1つのソース・サーバーに対して、1つのCaptureプログラムが稼動します。プラットフォームによって、ソースサーバーとCaptureプログラムの関係は異なります。

  1. オープン系のDB2であれば、1データベースにつき1Captureプログラムが稼動(1インスタンスにつき複数のCaptureプログラム)ー
  2. DB2/390あるいはDB2/400であれば、1データベースサブシステムにつき1Captureプログラムが稼動

ターゲット・サーバーは、レプリケーションされた変更を受け取るターゲットとなる表が存在するデータベース・サーバーです。Applyプログラムはターゲット・サーバーにおいて、ローカル・アプリケーションでも、リモート・アプリケーションでも構いません。第2回でご紹介した、Apply Qualifierを分けることによって、1つのターゲット・サーバーに対して、複数のApplyプログラムを同時実行させることが可能です。

コントロール・サーバーはレプリケーションのための制御情報を保管しているデータベース・サーバーです。第2回でご紹介したサブスクリプションの情報は、このサーバー内のデータベースに格納されます。Applyプログラムはコントロール・サーバーに接続して、必要な情報を頻繁に参照・更新します。Applyプログラムはコントロール・サーバーに対して、リモートアプリケーションとして動かすこともできますが、パフォーマンスの観点から、ローカル・アプリケーションとして動かす方が効率はよいです。

次の図は、Capture,Apply,レプリケーション管理ツールと各データベースサーバーの関係を模式的に表したものです。

レプリケーションのための制御表

DpropRはいろいろな制御表を用いて、ソース⇒ターゲット間のレプリケーションを、データの整合性を保ちながら、ユーザーの指定した仕様で実行します。制御表はコントロールセンターからソース表の定義およびサブスクリプションの定義をすると、自動的にソースサーバーとコントロールサーバーに作成されます。ただし、自動的に作成された制御表は、サイズや表スペースなどの変更ができないので、制御表をカストマイズしたい場合のために、SQLLIB\SAMPLES\REPLディレクトリ下に次のようなサンプルを提供しています。

  • DPCNTL.UDB : Unix/Windows/OS2版のUDBの制御表
  • DPCNTL.MVS : OS/390,z/OS版のUDBの制御表
  • DPCNTL.400 : iSeries版のUDBの制御表

この制御表は、使用用途によって、Capture時に使用されるもの、Capture/Apply時双方で使用されるもの、Apply時に使用されるものに分類されます。

用途制御表制御表の働き
Captureのみで使用ウォームスタート表Captureプログラムがログまたはジャーナル内で最後に停止した場所から変更情報の収集を再開するために必要な情報を格納
トレース表Captureプログラムの実行状況の情報を格納
チューニングパラメータ表Captureプログラムのパフォーマンスを制御するためのパラメータを格納
CaptureおよびApplyで使用登録表ソース表の名前、属性、対応するCD/CCD表の名前など、ソース表に関する情報を格納
作業単位表コミット済みトランザクションに関する情報を格納
変更データ表変更データ情報を格納、ソース表を定義するときに自動的に作成
プルーニング制御表変更データ表のプルーニング(不要データの消しこみ処理)を行うための情報を格納
Applyのみで使用適用追跡表Applyプログラムの実行状況の情報および問題発生時の診断情報を格納
サブスクリプションセット表サブスクリプションセットの情報を格納
サブスクリプションメンバー表特定のソース表を特定のターゲット表にマップする個々のサブスクリプションの情報を格納
サブスクリプション列表ターゲット表のコピーされた各列に関する情報を格納
サブスクリプションステートメント表サブスクリプションの処理前後で実行されるSQLステートメント・ストアードプロシージャの情報を格納
サブスクリプションイベント表サブスクリプションを実行するためのトリガーとなるイベントの情報を格納

レプリケーションの定義と実行例

それでは、コントロールセンターを用いて、DB2⇒DB2のレプリケーション定義を行ってみましょう。ここでご紹介するのは、1つのDB2インスタンス内にソースサーバー(DBSRC)・ターゲットサーバー(DBTGT)・コントロールサーバー(DBCTL)を定義する例です。

DBSRCデータベースにある、OFFICE表の一部の列をDBTGTデータベースに3分間隔でレプリケーションします。OFFICE表には次のようなデータが格納されています。

DBTGTデータベースには、このOFFICE表のREGION列、CODE列、NAME列のみをレプリケーションします。DBTGTデータベースには、既存のターゲット表はなく、このレプリケーション定義のなかで作成していきます。

1.ソース表の定義

DBSRCデータベースのレプリケーション・ソース項目を右クリックし、「作成」を選択します。

次のような画面が表示されるので、OFFICE表のスキーマ名と表名を指定すると、レプリケーション可能な列の情報が表示されます。デフォルトでは、全ての列が選択されていますが、ここでは、REGION列、CODE列、NAME列のみ選択します。ちなみに、「データ取り込みは全最新表示のみ」の項目をチェックすると、変更の差分情報は反映されずに常に、全件データがリフレッシュされます。了解をクリックすると、即時に実行するか、SQLをファイルに保管して後で実行するか選択する画面が表示されます。

即時実行あるいはSQLステートメントの実行でレプリケーションのソースとして、OFFICE表が定義できました。

2.サブスクリプションの定義

DBSRCデータベースのレプリケーション・サブスクリプション項目を右クリックし、「作成」を選択します。

サブスクリプション名「SUB01」と適用修飾子(=Apply Qualifier)名「QUAL01」を指定します。この値は任意に定義することができます。また、ターゲット・サーバーとしてDBTGTデータベースを指定します。「追加」をクリックすると指定可能なレプリケーション・ソース表のリストが表示されるので、OFFICE表を選択します。ここで、既存のターゲット表があれば、ターゲット表の指定を、存在しない場合は、「ターゲット表の作成」項目にチェックします。「追加」をクリックして、この画面を終了します。

ここでは定義しませんが、「SQL」をクリックすると、レプリケーションの前後で実行したいSQLステートメントおよびストアードプロシージャーを指定することができます。

次に、「タイミング」をクリックして、レプリケーションのタイミングの定義を行います。

次の画面で、レプリケーションのタイミングの設定を行います。レプリケーションを開始する日付・時刻を設定し、頻度については、一定間隔のレプリケーションか、あるいはイベント起動のレプリケーションかを選択します。このオプションは組み合わせて使用することもできます。ここでは、3分間隔でレプリケーションするように設定します。

「了解」をクリックして、この画面を終了します。

サブスクリプション「SUB01」に、ソース表としてOFFICE表が、ターゲット表として同名のOFFICE表が、表の作成オプション付で追加されました。このサブスクリプションは、適用修飾子「QUAL01」で実行します。

「了解」をクリックすると、サブスクリプション情報を格納するデータベースサーバーを選択する画面が表示されます。ここでは、コントロールサーバーとして、DBCTLデータベースを使用するので、DBCTLデータベースを指定します。また、サブスクリプション定義を即時実行するか、SQLをファイルに保管して後で実行するか、選択できます。

即時実行あるいはSQLステートメントの実行でレプリケーションサブスクリプションの定義ができました。

DBSRCデータベースにはCD表が作成されています。CD表の名前はDB2が自動的に決定します。またDBTGTデータベースにはターゲット表として、新しくOFFICE表が作成されています。

3.Captureプログラムのセットアップ

Captureプログラムのセットアップは、ソースサーバーに接続して行います。

CONNECT TO DBSRC ;

Captureプログラムが変更ログを収集することができるように、ソースサーバーのデータベースをロールフォワード回復が可能な状態、つまり、データベース構成パラメータのLOGRETAINの値を ONにします。LOGRETAINをONに変更した後は、バックアップを取得します。次のコマンドを実行します。

UPDATE DB CFG FOR DBSRC USING LOGRETAIN ON

BACKUP DB DBSRC

CaptureプログラムをBINDします。通常、Captureプログラムのバインドファイルは、SQLLIB\BNDディレクトリー下に置かれています。SQLLIB\BNDディレクトリに移動して、次のコマンドを実行します。

BIND@CAPTURE.LST ISOLATION UR BLOCKING ALL ;

4.Applyプログラムのセットアップ

Applyプログラムは、Applyプログラムが接続する、ソース、ターゲット、コントロールの各データベースサーバーに接続してBINDします。通常、Applyプログラムのバインドファイルは、SQLLIB\BNDディレクトリー下に置かれているので、SQLLIB\BNDディレクトリに移動して、次のようなコマンドを実行します。

CONNECT TO DBSRC ;

BIND @APPLYCS.LST ISOLATION CS BLOCKING ALL GRANT PUBLIC ;

BIND @APPLYUR.LST ISOLATION UR BLOCKING ALL GRANT PUBLIC ;

CONNECT RESET ;

5.Captureの開始

Captureを開始します。SETコマンドを使用して、DB2INSTANCE環境変数を設定し、ソースサーバーをパラメータで渡してCaptureプログラム(ASNCCP)を開始します。Captureプログラム開始時に指定できるパラメータには、WARM/COLDスタートの選択など、他にもありますが、詳細については、マニュアル「レプリケーションの手引きおよび解説書」を参考にしてください。

6.Applyの開始

Applyを開始します。SETコマンドを使用して、DB2INSTANCE環境変数を設定し、適用修飾子、コントロールサーバーをパラメータで渡してApplyプログラム(ASNAPPLY)を開始します。Applyプログラム開始時に指定できるパラメータには、下記の例で指定しているように、トレース情報の出力(TRCFLOW)など、他にもありますが、詳細については、マニュアル「レプリケーションの手引きおよび解説書」を参考にしてください。

7.変更情報の適用

Applyを開始した後、サブスクリプションで定義した、レプリケーション開始日付および時刻になったら、第一回目の変更情報の適用が実行されます。第一回目は、ターゲット表は空なので、全件リフレッシュになります。第一回目のレプリケーション終了後のターゲット表の内容は次のようになっています。

第一回目のレプリケーションが行われた後に、ソース表に対して、3件新しいデータを入力します。

3分間の休止の後、Applyプログラムは新しい更新情報を取り出します。下図では、Applyプログラムが休止している間に加えられた3件の変更情報を取得したと表示されています。

第一回目のレプリケーションが行われた後に、ソース表に対して、加えられた3件の新しいデータがターゲット表に反映されています。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Information Management
ArticleID=321423
ArticleTitle=カンタン!DB2テクテク第1歩 拡張機能編: DPropR-第三話
publish-date=11302005