この章ではシナリオを使って、DB2 コントロール・センターと収集および変更適用プログラムを実際に操作してみます。 ここに示す簡単なシナリオのステップに従うと、 DB2 複製ソースでの変更が DB2 エンタープライズ・エディション (EE) (Windows NT 版)、または、ワークグループ・エディション (WE) のデータベースのターゲット表にコピーされます。
このシナリオは、以下の部分で構成されています。
このシナリオを自分のコンピューター上で実行する場合は、以下のステップを使ってシステムをセットアップします。
この章のステップでは、SAMPLE データベースにある DEPARTMENT 表のデータを使用します。
完全修飾名は userID.Department です (userID は表を作成したユーザー ID)。
表 1 に DEPARTMENT 表を示します。
DEPTNO | DEPTNAME | MGRNO | ADMRDEPT | LOCATION |
---|---|---|---|---|
A00 | SPIFFY COMPUTER SERVICE | 000010 | A00 | - |
B01 | PLANNING | 000020 | A00 | - |
C01 | INFORMATION CENTER | 000030 | A00 | - |
D01 | DEVELOPMENT CENTER | - | A00 | - |
D11 | MANUFACTURING SYSTEMS | 000060 | D01 | - |
D21 | ADMINISTRATION SYSTEMS | 000070 | D01 | - |
E01 | SUPPORT SERVICES | 000050 | A00 | - |
E11 | OPERATIONS | 000090 | E01 | - |
E21 | SOFTWARE SUPPORT | 000100 | E01 | - |
この演習の残りの部分では、SAMPLE および COPYDB データベースの作成に使用したユーザー ID を使ってください。 データベースの作成者には、複製作業を実行する権限 (DBADM または SYSADM) があります。
レポートを生成するアプリケーションで、SAMPLE データベースの DEPARTMENT 表にある情報が必要だとします。 そこで、ソース表のデータを直接は使用しないで、レポート生成アプリケーションによる読み取りだけが可能なターゲット表に変更をコピーすることにします。 管理を簡単にするため、ターゲット表をソース・サーバーと同じマシンに保管しておきます。
必要となるのは簡単なデータ分散構成であり、変更は 1 つの複製ソースから単一の読み取り専用コピーに複製されます。 ここでは、複製作業を実行する前に考慮する必要がある設計と計画に関する問題について扱います。
複製ソースは SAMPLE データベースの userID.DEPARTMENT 表にあります。 環境のセットアップに先立って、その表から何を複製したいかを決定しなければなりません。 そこで、すべての列を複製対象とすることにします。また、 何が変更されたかを確認できるように、各列の変更前イメージの値を保管することにします。
ヒント: | 複製ソースの定義では常に変更前イメージ値を含めるのがよいかもしれません。 そうすれば、後で随時更新構成を変更しても、複製ソースを再定義する必要がありません。 |
複製ターゲットには、この章で DB2 (Windows NT 版) を使ってすでに作成した COPYDB データベースを指定します。 現時点では、このデータベースにターゲット表がありません。コントロール・センターを使って実際の仕様に合ったターゲット表を作成することにします。
既存ターゲット表の使用: コントロール・センターを使用する場合、ターゲット表がまだ存在していないなら作成されます。 このようにすると、複製ソースへのマッピングが正確なものになることが保証されるため、 これはターゲット表の生成方法として望ましい方法です。 既存のターゲット表が DB2 製品で作成されたものであれば、その表を使用することもできます。
COPYDB のターゲット表に、以下のような情報の列を含めることにします。
ターゲット表の列はソース表のデータを反映しているにすぎず、ソース表の各 1 レコードごとにターゲット表のレコードはただ 1 つなので、 ターゲット表のタイプとしてはユーザー・コピー を使用できます。
この演習では、ターゲット表と複製制御表をデフォルト表スペース USERSPACE1 に保管することにします。
論理サーバー | 表スペース | 内容 |
ソース・サーバー: SAMPLE | USERSPACE1 | 複製制御表 (CD 表を含む) |
制御サーバーとターゲット・サーバー: COPYDB | USERSPACE1 | 複製制御表とターゲット表 |
一般に、UOW 表と CD 表 (および CCD 表を使用する場合は CCD 表) は専用の表スペースに入れ、表または表スペースをロックしておくとよいでしょう。 他の複製制御表は、行レベルのロックを使用して 1 つの表スペースにまとめることができます。
複製のスケジューリングとしては、DB2 複製を使ってソース表での変更を 1 分ごとに調べて、変更をターゲット表に複製することにします。 レポート生成アプリケーションではそのようなターンアラウンドが不要ですが、セットアップした複製環境をテストして、すべての機能が正確に作動しているか確かめることにします。
また、複製サイクルが終わるごとに、 1 週間 (7 日) 以上経過した変更適用監査記録表のレコードを削除することにします。 このような枝取り操作により、表の肥大化を防ぐことができます。
ターゲットが読み取り専用ターゲットなので、制約を設定する必要はありません。 制約は、アプリケーションがターゲット表を更新する場合にのみ必要です。 このシナリオでは、更新は複製ソースでコミットされ、システムごとに定義されている制約に適合するものでなければなりません。 ターゲットで同じ制約を再評価する必要はありません。
複製モデルの計画を立てたなら、次は複製環境のセットアップです。
コントロール・センターは、ソース・サーバーとターゲット・サーバーに自動的に制御表を作成します。 デフォルトでは、デフォルト設定値 (ロッキング、表スペース) を使って制御表が作成されます。 この設定はテスト目的には適していますが、実動環境には適していません。 実動環境用の制御表をカスタマイズするには、 他の複製タスクを実行する前 に、 dpcntl.udb ファイルを編集および実行しなければなりません。
制御表をカスタマイズするには、次のようにします。
制御表をカスタマイズしたら、コントロール・センターに移って、DEPARTMENT 表を複製ソースとして定義します。
複製ソースを定義するには、次のようにします。
ヒント: | 大抵の場合、デフォルトで十分です。 SQL をファイルに保管しておけば、SQL を調べてどんな機能が実行されるかを理解し、必要な変更を加えて、ファイルを保管し、 期待どおりに動作することを確認してから、そのファイルを実行することができます。 |
ヒント: | デフォルトでは、 SQL ファイルは sqllib ディレクトリーに保管されます。 独自の複製環境で作業する場合は、それらを他のすべての sqllib に保管するのではなく、 別個のディレクトリーに保管するほうがよいでしょう。 |
ヒント: | 独自の複製環境をセットアップする場合、このファイルの編集は慎重にしてください。 CD 表が入れられる CD 表または表スペースの名前を変更する場合は、 CD 表の CREATE INDEX ステートメントを変更し、 ASN.IBMSNAP_REGISTER 行の CD 表のエントリーを更新する必要もあります。 |
これで、表 DEPARTMENT が複製ソースとして定義されました。 SQL ファイルを実行した時点で、コントロール・センターはこの複製ソースの変更データ (CD) 表を作成し、SAMPLE データベース用のデフォルト表スペース (USERSPACE1) の中に複製制御表を作成しました。
ソースを定義したら、サブスクリプション・セットを定義する必要があります。 サブスクリプション・セットは、複製ソース (このシナリオでは DEPARTMENT) とターゲット表 (このシナリオでは DEPTCOPY) の関係を定義します。 また、一部の複製パラメーターも定義します。
サブスクリプション・セットとサブスクリプション・セット・メンバーを定義するには、次のようにします。
ヒント: | 変更適用修飾子では大文字小文字が区別されます。 変更適用修飾子を小文字で指定する場合は、入力時に変更適用修飾子を区切る必要があります (たとえば "deptqual")。 単に deptqual と入力すると、コントロール・センターはその値をデフォルト設定で大文字に変換してしまいます。 |
ヒント: | ウィンドウを拡張してすべての列を表示することもできます。 行によっては、名前が文字 X で始まっている場合もあります (たとえば XDEPTNO)。 そのような行では、要求された変更前イメージ値が保管されます。 |
DEPTNO >='A00'
DELETE FROM ASN.IBMSNAP_APPLYTRAIL WHERE LASTRUN < (CURRENT TIMESTAMP - 7 DAYS)
ヒント: | このサブスクリプションで無視したい SQL 状態を 10 個まで定義することができます。 |
ヒント: | データ・ブロック用に設定する値は、変更適用プログラムを実行するワークステーションにどれだけの空きスペースがあるかによって異なります。 一般には、5〜20 の数値を使用します。 手堅い運用をしたい場合は、1 分を使用します。 |
ヒント: | ソース・サーバーが別のマシンにある場合は、ネットワーク経由でソース・サーバーにログオンする必要があります。 ソース・サーバーには、DBADM または SYSADM 権限のあるユーザー ID を使用します。 ただし、この演習用のソース・サーバーはローカル・マシンにあるので、再びログオンする必要はありません。 |
収集プログラムを構成するには、次のようにします。
ヒント: | データベースをアクセス可能にするには、バックアップ・アクションを実行しなければなりません。 ロールフォワード回復用のログ・ファイルを保存することを指定した時点で、データベースはバックアップ保留モードになっています。 |
ヒント: | この演習では、収集および変更適用プログラム・パッケージを手動で作成してバインドします。 しかし、DB2 DataPropagator (サポートされるすべての UNIX、Windows、OS/2 オペレーティング・システム) では、パッケージが自動的に作成してバインドされます。 |
収集プログラムを手動でバインドするには、次のようにします。
DB2 CONNECT TO SAMPLE
DB2 BIND @CAPTURE.LST ISOLATION UR BLOCKING ALL
capture.lst ファイルには、作成されたパッケージのリストが入っています。
以下のステップを続けて実行します。
変更適用プログラムを手動でバインドするには、次のようにします。
DB2 BIND @APPLYUR.LST ISOLATION UR BLOCKING ALL
DB2 BIND @APPLYCS.LST ISOLATION CS BLOCKING ALL
applyur.lst および applycs.lst ファイルには、作成されたパッケージのリストが入っています。
DB2 CONNECT TO COPYDB
DB2 BIND @APPLYUR.LST ISOLATION UR BLOCKING ALL
DB2 BIND @APPLYCS.LST ISOLATION CS BLOCKING ALL
applyur.lst および applycs.lst ファイルには、作成されたパッケージのリストが入っています。
ソース・サーバーでエンド・ユーザー認証がなされるようにするには、AUTH=SERVER 方式を指定してパスワード・ファイルを作成しなければなりません。 変更適用プログラムはこのファイルをソース・サーバーへの接続時に使用します。 変更適用プログラムを実行するユーザー ID がパスワード・ファイルを読むことができるようにしておいてください。
パスワード・ファイルを作成するには、次のようにします。
SERVER=SAMPLE USER=userid PWD=password SERVER=COPYDB USER=userid PWD=passwordここで、
パスワード・ファイルの形式: このファイルにはブランク行やコメント行を入れないでください。 サーバー名、ユーザー ID、およびパスワード情報だけを追加します。 この情報により、それぞれのサーバーごとに異なるパスワードまたは同じパスワードを使用できるようになります。
パスワード・ファイルの命名規則:
パスワード・ファイル名は applyqual.pwd です。applyqual は大文字小文字を区別する文字列で、 サブスクリプション・セット表の変更適用修飾子 (APPLY_QUAL) の値と大文字小文字の別も含めて必ず 一致する必要があります。 DB2 Datapropagator バージョン 5 でのファイル命名規則 (ApplyqualInstance_nameControl_server.pwd) もサポートされています。 この規則には、大文字小文字を区別する変更適用修飾子、 変更適用プログラムの実行に使用するインスタンス名 (デフォルト名は大文字で DB2)、 および大文字による制御サーバー名 (たとえば COPYDB) が含まれます。
認証および機密保護については、IBM DB2 管理の手引き を参照してください。
複製ソースとサブスクリプション・セットの定義が終わったら、収集および変更適用プログラムを開始してコピー要求を実行依頼できます。
収集プログラムを開始するには、次のようにします。
ASNCCP SAMPLE COLD NOPRUNE
ヒント: | 通常、コールド・スタート・オプションは指定しません。 コールド・スタートにするかウォーム・スタートにするかは、収集プログラムが判断します。 この演習では、収集プログラムがコールド・スタートを実行するように指定し、CD 表および UOW 表のレコードをクリーンアップします。 |
収集プログラムは実行を開始しますが、新しいコマンド・プロンプトは表示されません。 このアクションにより、*.ccp ファイルが作成されます。 収集プログラムは初期設定されますが、変更適用プログラムを開始してその初期全最新表示コピーを完了するまで、定義済み複製ソースの変更の収集は開始されません。
変更適用プログラムを開始するには、次のようにします。
ヒント: | 変更適用プログラムは、 パスワード・ファイルを保管したのと同じディレクトリーから開始する必要があります。 変更適用プログラムを別のディレクトリーで開始しようとすると、エラー・メッセージが表示されます。 |
ASNAPPLY DEPTQUAL COPYDB
ヒント: | 変更適用修飾子 DEPTQUAL には大文字小文字の区別があります。 この演習では、大文字で入力する必要があります。 |
ヒント: | ASNLOAD プログラムを呼び出すために、 LOADX 呼び出しパラメーターを使用することができます。 上記のコマンド・ステートメントで、 データベース名 (COPYDB) の後ろに LOADX パラメーターを入力してください。 デフォルトの ASNLOAD プログラムは、エクスポート (EXPORT) ユーティリティーを使ってソース表からデータをエクスポートし、 ロード (LOAD) ユーティリティーを使ってターゲット表を完全に最新表示します。 IBM またはベンダーのユーティリティーを呼び出すように ASNLOAD を修正することもできます。 |
変更適用プログラムは実行を開始しますが、新しいコマンド・プロンプトは表示されません。 COPYDB の適用追跡表 (ASN.IBMSNAP_APPLYTRAIL) を調べることによって状況情報を知ることができます。
1 回の複製サイクル後に DEPTCOPY ターゲット表を表示させると、表 2 に示すデータと一致する結果が表示されるはずです。
DEPTNO | DEPTNAME | MGRNO | ADMRDEPT | LOCATION |
---|---|---|---|---|
A00 | SPIFFY COMPUTER SERVICE | 000010 | A00 | - |
B01 | PLANNING | 000020 | A00 | - |
C01 | INFORMATION CENTER | 000030 | A00 | - |
D01 | DEVELOPMENT CENTER | - | A00 | - |
D11 | MANUFACTURING SYSTEMS | 000060 | D01 | - |
D21 | ADMINISTRATION SYSTEMS | 000070 | D01 | - |
E01 | SUPPORT SERVICES | 000050 | A00 | - |
E11 | OPERATIONS | 000090 | E01 | - |
E21 | SOFTWARE SUPPORT | 000100 | E01 | - |
複製環境の起動後、複製ソースに加えられた変更がターゲット表に複製されます。 制御表の肥大化を防ぐには、制御表を定期的に枝取りする必要があります。 収集および変更適用プログラムは連続して実行できますが、停止したいと思うこともあります (たとえば、制御表が入った表スペースを使用するユーティリティーを実行する場合)。
Spiffy Computer Service で新しい 2 つの部門が発足したとします。 1 つは技術執筆部 (technical writing department)、もう 1 つは広報部 (public relations) です。
ソース表を次のように更新します。
DB2 CONNECT TO SAMPLE
DB2 INSERT INTO DEPARTMENT VALUES ('F01','TECHNICAL WRITING','000110','F01',NULL) DB2 INSERT INTO DEPARTMENT VALUES ('G01','PUBLIC RELATIONS','000120','G01',NULL)
DB2 CONNECT TO COPYDB
DB2 SELECT * FROM DEPTCOPY
ヒント: | 複製プロセスはすぐに実行されるわけではありません。 表の検査のために約 5 分待つ必要があります。 |
表 3 に複製結果を示します。2 つの新しい行が表に追加されています。
DEPTNO | DEPTNAME | MGRNO | ADMRDEPT | LOCATION |
---|---|---|---|---|
F01 | TECHNICAL WRITING | 000110 | F01 | - |
G01 | PUBLIC RELATIONS | 000120 | G01 | - |
A00 | SPIFFY COMPUTER SERVICE | 000010 | A00 | - |
B01 | PLANNING | 000020 | A00 | - |
C01 | INFORMATION CENTER | 000030 | A00 | - |
D01 | DEVELOPMENT CENTER | - | A00 | - |
D11 | MANUFACTURING SYSTEMS | 000060 | D01 | - |
D21 | ADMINISTRATION SYSTEMS | 000070 | D01 | - |
E01 | SUPPORT SERVICES | 000050 | A00 | - |
E11 | OPERATIONS | 000090 | E01 | - |
E21 | SOFTWARE SUPPORT | 000100 | E01 | - |
以下のステップでは、収集プログラムが実行されていることを前提としています。 収集プログラムが実行されていない場合、prune コマンドは実行されません。
ヒント: | Windows NT では、 収集プログラム (ASNCCP) が実行されているかどうかを判別するために、 タスク マネージャを使用できます。 |
枝取りの対象があることを確認するため、次のようにします。
DB2 CONNECT TO SAMPLE
DB2 SELECT COUNT(*) FROM ASN.IBMSNAP_UOW
作業単位表には、以前の複製で作成された 2 つの行があるはずです。
枝取りコマンドを実行するには、次のようにします。
ASNCMD SAMPLE PRUNE
ヒント: | 通常、枝取りはオフピーク時に実行します。 |
DB2 SELECT COUNT(*) FROM ASN.IBMSNAP_UOW
表には行が入っていないはずです。
複製環境の保守における 1 つの重要な部分は、定期的なデータベース保守です。 そのような保守のために、収集および変更適用プログラムを停止しなければならない場合があります。 たとえば、収集および変更適用プログラムで使用される表スペースを直接使用するユーティリティーを実行するには、まずそれらのプログラムを停止しなければなりません。
前のステップでオープンした DB2 コマンド・ウィンドウから、以下のステップを実行します。
収集プログラムを停止するには、次のようにします。
ASNCMD SAMPLE STOP というコマンドを入力します。
変更適用プログラムを停止するには、次のようにします。
ASNASTOP DEPTQUAL というコマンドを入力します (DEPTQUAL は、 大文字小文字の区別がある変更適用修飾子)。
収集および変更適用プログラムが停止したなら、データベースに対して DB2 ユーティリティーを実行することができます。 (ユーティリティーの実行はこの演習の対象外です。)