Pervasive DataExchange の使用
日常作業で DataExchange を使用するためのガイド
この章では、DataExchange を日常使用するための詳細な情報を提供します。基本概念だけでなく、レプリケーション中に起こり得る一般的な状況を処理するための手順を追った説明も含まれています。以下の項目について説明します。
アクティブ化
アクティブ化とは、レプリケーション用の新規データベースを作成または既存のデータベースを有効にし、そのデータベースをレプリケーション ネットワーク内のサイトに所属させることによりレプリケートを可能にすることです。
メモ: アクティブ化はデータベースをサイトに関連付けるため、データベースのアクティブ化とサイトのアクティブ化は同じことを意味します。
アクティブ化を行うには 3 つの方法があります。Deployment Wizard および dxdeploy ユーティリティは配置処理の一部として自動的にアクティブ化を行います。dxact ユーティリティは手動によるアクティブ化の方法を提供するだけでなく、スタート データの前処理などのオプションを選択する柔軟性を提供します。ここでの説明では、コマンドライン ユーティリティの dxact を使用してサンプル データベースをアクティブ化します。しかし、まず、アクティブ化処理の概念を理解することが重要です。
アクティブ化とデータ ソース名
データベースをアクティブ化すると、Pervasive DataExchange はアクティブ化されたコピーを指し示すシステム データ ソース名(DSN)を作成します。xPD のプレフィックスを持つ DSN は、デザイン処理で作成されたものです。アクティブ化処理では PDxxxxxxxx のような名前を持つ DSN を作成します。
もう 1 つのシステム データベースは Database Network Analysis(DNA)で、PDDNA と呼ばれるレプリケーション データベースです。DNA は DataExchange のインストール中に作成されます。データベースは Pervasive PSQL エクスプローラーのレプリケーション ノードに DNA アイコンと共に表示されます。
注意: DNA データベース(PDDNA)を変更したり使用したりしないでください。DataExchange が正常に動作しなくなります。
第 1 サイトおよびパートナー サイトのアクティブ化
第 1 サイトは唯一のサイトで、その他のパートナー サイトをアクティブ化する前にアクティブ化する必要があります。第 1 サイトをアクティブ化するとき、Pervasive DataExchange は配布環境を管理するのに必要な情報を持つシステム テーブルを作成します。この情報は、その後ネットワーク内のすべてのサイトがアクティブ化されるときにレプリケートされます。
第 1 サイトは、レプリケーション ネットワークについての情報を含んでいる特別なサイトです。第 1 サイトをアクティブ化したら、パートナー サイトをどのような順でもアクティブ化することができます。
ヒント: データベースをアクティブ化するには、レプリケーション エンジンが実行されている必要があります。
第 1 サイトのアクティブ化を完了したら、パートナー サイトのデータベースをアクティブ化することができます。パートナー サイトはそれぞれのサイトからアクティブにします。つまり、Deployment Wizard の dxdeploy.exe または dxact.exe をパートナー サイトで実行し、第 1 サイトでは実行しないということです。
可能であれば、マシンは既にネットワークに接続していて、それを介して第 1 サイトと通信し、初期レプリケーション セッションがただちに実行されるようにします。ただし、これは強制的なものではありません。初期レプリケーションは後から実行することもできます。パートナー サイトは、第 1 サイトと初期レプリケーションを実行するまで、ほかのパートナー サイトとレプリケートできません。
アクティブ化に成功すると、Pervasive PSQL Control Center ではレプリケーション ノード アイコンに A という文字が表示され、データベースがアクティブになっていることが示されます。
初期レプリケーションが成功すると、新しくインストールされたサイトは、レプリケーション スケジュールを含むワークグループ内のすべての管理データを完全に認識します。
さらに詳しい情報
この章で述べている各 DataExchange 配置ユーティリティの使用法に関する固有の情報については、第
7 章
DataExchange のユーティリティとサービスを参照してください。固有のリファレンス情報について次の表に示します。
アクティブ化方法 | 詳細情報 |
Deployment Wizard(Dpwizard.exe) | |
Dxdeploy.exe | |
Dxact.exe | |
►dxact.exe を使用してアクティブ化するには
1 アクティブ化したいサイトのマシンでコマンド プロンプト ウィンドウを開き、dxact.exe を起動します。
2 コマンド プロンプトで、次のようにコマンドを入力します。
dxact demodata /FI
この例では、dxact.exe ユーティリティを使用して第 1 サイトの demodata データベースをアクティブ化します。デフォルトで、dxact.exe からのメッセージは dxact.log ファイルに書き込まれ、画面には表示されません。dxact.exe の実行中に画面上にメッセージを表示させるには、/LOGFILE= オプションを使用します。これを行うには、次のようなコマンドを入力します。
dxact demodata /Logfile= /FI
/FI オプションは、第 1 サイトをアクティブ化することを指定しますが、dxact.exe は常にアクティブ化したいサイトから実行する必要があります。DataExchange ではリモートからのアクティブ化はできません。dxact.exe のオプションの一覧については、
dxact を参照してください。
アクティブ化の基礎についての説明が終わりましたので、非アクティブ化と再アクティブ化について簡単に説明します。
非アクティブ化
非アクティブ化は、アクティブ化されたデータベースをレプリケーション ネットワークで無効にすることです。第
7 章
DataExchange のユーティリティとサービスで説明されているように、非アクティブ化には dxdeact ユーティリティを使用します。
データベースを第 1 サイトで非アクティブにすると、Pervasive PSQL Control Center は第 1 サイトのデータベースをデザイン テンプレートとして表示します。これは、このデータベースがレプリケーション ネットワーク用のデータベースのデザインに使用されたためです。第 1 サイトが非アクティブ化されると、レプリケーション ノード アイコンに T という文字が表示されます。
パートナー サイトが非アクティブ化されると、Pervasive PSQL Control Center ではそのサイトのデータベース用のレプリケーション ノード アイコンにアクティブ化を示す A という文字は表示されません。
レプリケーションが実行されるまでその他のサイトは非アクティブ化されたサイトを検出しません。したがって、非アクティブ化したサイトに対する処理が失敗します。これは正常な動作で、DRE ログ ファイルに次のようなエラーメッセージが生成されます。
E 019f 0301-15:46:25 パートナーサイト Partner_Site_2 (サイト番号:00LFLU) はレプリケーション ネットワークから削除されました-ほかのサイトとレプリケートすることはできません。
レプリケーションが失敗すると、レプリケーション ネットワーク上のすべてのサイトが非アクティブ化したサイトを検出できるので、以降のレプリケーションでこのエラーは発生しません。
►dxdeact.exe を使用して非アクティブ化するには
1 非アクティブ化したいサイトのマシンでコマンド プロンプト ウィンドウを開き、dxdeact を起動します。
2 コマンド プロンプトで、次のようにコマンドを入力します。
dxdeact demodata
この例では、dxdeact ユーティリティを使用して demodata データベースを非アクティブ化します。dxdeact からのメッセージはデフォルトで dxdeact.log ファイルに書き込まれ、画面には表示されません。dxdeact の実行中に画面上にメッセージを表示させるには、前に dxact.exe で行ったように /LOGFILE= オプションを使用します。すべての DataExchange ユーティリティで、ログの出力を制御する /LOGFILE= オプションが使用できることを覚えておくと便利です。dxdeact.exe のオプションの一覧については、
dxdeact を参照してください。
再アクティブ化
再アクティブ化は非アクティブ化されたサイトをレプリケーション用に再度有効にすることです。データベースは再アクティブ化される前に非アクティブ化されている必要があります。再アクティブ化は、アクティブ化のときと同じ方法で dxact ユーティリティを使用するという点で、基本的にアクティブ化と同じです。
第 1 サイトを非アクティブ化した場合、第 1 サイトを再アクティブ化したら手動でレプリケーションを実行する必要があります。第 1 サイトを再アクティブ化したら、各パートナー サイトから第 1 サイトに対してレプリケーション セッションを手動で開始する必要があります。このレプリケーション セッションにより、すべての利用可能なサイトが必ず[レプリケーションの開始]ダイアログに表示されるようになります。
メモ: パートナー サイトを非アクティブ化して再アクティブ化した場合はレプリケーション セッションを手動で開始する必要はありません。このことは第 1 サイトにのみ当てはまります。
アクティブなデータベースに動的テーブルを追加する
データベースに新しいテーブルが動的に追加されることがあります。データベースが自動的にテーブルを生成するようにデザインされていて、これらのテーブルをデータベース レプリケーションに含める必要がある状況があります。
DataExchange はこれらの新しい動的テーブルをアクティブなデータベースのレプリケートされるテーブルに含めたり、所定のテーブルをレプリケートされるテーブルから除外したりする方法を提供します。テーブルだけがレプリケートされるので、テーブル ファイルのみを含めます。必要があれば任意の種類のファイルを除外することができます。テーブル以外のファイルは除外するしないに関わらずレプリケートされません。
新規テーブルはパターン マッチング アルゴリズムで識別され、glob スタイルのパターンを標準およびディレクトリ式の両方で使用します。アルゴリズムに使用させるファイル パターンを指定します。入力する必要があるのはパターンのみです。後は DataExchange が自動的に行います。デフォルトで、パターンには何も設定されていません。
DataExchange は最初にファイル名を、包含するファイルのパターンと比較し、次に除外するパターンと比較します。両方の比較をパスしたファイルのみが含められます。たとえば、c:\mydata\*.* を、包含するファイルのパターンとして指定したと仮定します。除外するファイルのパターンとして c:\mydata\*.ddf を指定すると、c:\mydata の 拡張子 "ddf" を持つファイル以外全部が包含されます。
ヒント: dxdynpath で使用できる包含および除外パターンの式の詳細については、
式のタイプを参照してください。
テーブルの包含と除外は、データベースを開く API によってテーブルが正常に開かれたときに開始されます。DataExchange は、テーブルがレプリケートされるべきであると認識された(つまり、テーブルが今までレプリケーションの対象ではなかった)かどうかを判断します。テーブルが今までレプリケーションの対象ではなく、その名前が除外パターンにのみ一致した場合、DataExchange はそのテーブルに対してレプリケーション動作を一切行いません。今までレプリケーションの対象ではなかったテーブルが除外パターンと一致せず包含パターンと一致した場合、DataExchange はこのテーブルを包含します。テーブルが正常に開いたとき、最初は DataExchange にとって単純に新しい(今までレプリケーションの対象ではなかった)テーブルと認識されます。新しいテーブルのデータは即座にはレプリケートされません。
次のレプリケーション処理は(たとえば、スケジュールされたレプリケーションから)、新しいテーブルについてレプリケーションの準備をすることと、それに関するレプリケーション情報をすべてのサイトで同期化することです。2 回目のレプリケーション処理には新しいテーブルが含まれます。つまり、新しいテーブルとの実際のデータのレプリケーションには 2 回のレプリケーション サイクルが必要なので、注意してください。
メモ: 動的に作成されたテーブルの包含は、Real-Time Backup レプリケーションのみに適用されます。さらに、動的に作成されたテーブルは、データベース アプリケーションが実行されているマシン上に存在する必要があります。つまり、テーブルは、データのレプリケート元の場所として働くマシン上に存在する必要があります。
まず始めに
式に不慣れな場合や作業経験が少ない場合は、まず
式のタイプのセクションを読んで、さまざまな種類の式の使用方法について基本的な理解を得られることをお勧めします。
注意: dxdynpath ユーティリティでの使用を考慮中のファイルについては、システム キーが必要であることに注意してください。
包含するファイルのパターン
サンプル データベース demodata では、各キャンパスの出席レコードを含むテーブルのセットを毎日自動的に生成します。これは、レプリケーションに含めるべき重要なデータです。dxdynpath を使用して包含パターンを追加し、これらのテーブルもレプリケートされるようにします。テーブル名では、attend<campusid>.mkd という名前付け規則を使用します。<campusid> は 3 文字のキャンパス コードです。
注意: このセクションの内容は、お使いのアプリケーションがアクティブなデータベースに動的に新規テーブルを作成する場合にのみ適用されます。この処理は動的に追加されるテーブルへの対処方法としてのみお勧めします。
►新しいテーブルをレプリケーションに含めるには
1 第 1 サイトでコマンド プロンプトを開き、次のコマンドを入力します。
dxdynpath /t=include /pa="dir attend*.mkd" append demodata
2 次のコマンドを入力して、包含パターンを検証してください。
dxdynpath /t=both show demodata
動的テーブルの構成とテスト ユーティリティの名前とバージョンの一覧、および以下のような追加情報を示すメッセージが表示されます。
INCLUDE パターンは "dir attend*.mkd" です
EXCLUDE パターンは "" です
包含する新しいファイルを指定した後でレプリケーションを手動で開始してください。これを行うと、動的テーブルのレプリケーションの準備として必要なレプリケーションの 1 回目のサイクルが完了します。新しいテーブルは、データがレプリケートされるレプリケーションの 2 回目のサイクル(たとえば、スケジュールされたレプリケーション)の準備が整います。
除外するファイルのパターン
これから、サンプル データベースのパターンの式をさらに微調整しましょう。既にすべての attend*.mkd ファイルを包含しましたが、もう 1 つ作成される累積ファイル(attendall.mkd)があります。累積ファイルに含まれる内容はすべて個別のファイルにあるため、実際はこのファイルをレプリケートする必要はありません。したがって、このファイルをパターン マッチングから除外することにします。
►レプリケーションからファイルを除外するには
1 第 1 サイトでコマンド プロンプトを開き、次のコマンドを入力します。
dxdynpath /t=exclude /pa="dir attendall.mkd" append demodata
2 次のコマンドを入力して、除外パターンを検証してください。
dxdynpath /t=both show demodata
動的テーブルの構成とテスト ユーティリティの名前とバージョンの一覧、および以下のような追加情報を示すメッセージが表示されます。
INCLUDE パターンは "dir attend*.mkd" です
EXCLUDE パターンは "dir attendall.mkd" です
これらは、dxdynpath がレプリケートするファイルを判断するためにパターン マッチングをどのように使用するかの簡単な例です。dxdynpath の詳細な使用法およびさまざまな種類の式については、
dxdynpath を参照してください。
アクティブ化されたデータベースでテーブル構造を変更する
現在レプリケーション デザインの一部になっているテーブルが構造的に変更されたり、システム キーが更新されたりしたために、これらの変更を残りのサイトと同期化する必要があるような状況が発生するかもしれません。これらの変更がレプリケーション デザインに適切に実装されるか、変更がレプリケーション ネットワーク間で同期化されるか、変更を適所にレプリケートさせることができるかどうかを確実にする必要があります。
まず始めに
この手順を開始する前に以下の項目を確認することを強くお勧めします。
•レプリケーション スケジュールが現在無効になっていて、ユーザーが誰もシステム上で作業していないことを確認してください。この手順にはデータベースの非アクティブ化が含まれます。非アクティブ化の前にすべてのレプリケーション スケジュールを必ず無効にしてください。
注意: データベースが非アクティブな間はデータベースへの変更は取得されないため、テーブルの変更中はどのユーザーもシステムを使用しないようにすることが重要です。
•各ユーザー テーブルのレコードのシステム キーが、ユーザー テーブルで対応する PDC テーブルを明らかにすることが重要です。これは、ネットワーク内のほかのどのサイトにレコードを送信するべきかを探知するためにレプリケーションが使用するメカニズムです。ユーザーと PDC テーブル間で絶えず通信が切断されると、レプリケーションの正常な動作が妨げられます。
•第 1 サイトのテーブルで列を追加または削除する場合、パートナー サイトのテーブルにも同じ変更を行うことを忘れないようにしてください。これは、そのテーブルの DDF に両サイトで同じ構造を反映させるためです。
•このマニュアルの手順では、新しいスキーマ変更に先立ってレプリケーション ネットワークのすべてのサイトが同期化されているものとします。
この処理を完了させるために必要な高度な手順は以下のとおりです。
PDC テーブルのクローンを作成する
PDC テーブルの空のコピーを使用することは必須ではありませんが、そうすると以下の利点があります。
•PDC テーブルが新規レコードのみを含むため、PDC テーブルの全体のサイズを削減させることができ、その結果ほかのサイトへの転送時間を短縮することができます。
•dxsynctables は PDC テーブルの既存のレコードを検証する必要がないため、dxsynctables 処理が高速化されます。
►PDC テーブルのクローンを作成するには
1 ユーザー データ内で変更されたテーブルを識別します。通常これは、顧客のプロダクション サイト上です。
2 レプリケーション データ ディレクトリで、変更されたそれぞれのテーブルに対応する PDC テーブルを見つけます。
3 PDC テーブルのクローンを作成し、既存のテーブルをクローンで置き換えます。
ヒント: テーブルのクローンを作成する BUTIL ユーティリティの使用法については、Pervasive PSQL ユーザー マニュアルの『Advanced Operations Guide』を参照してください。
第 1 サイトのアクティブ化とテーブルの同期化
1 dxact.exe コマンドを使用して第 1 サイトをアクティブ化します。
DXACT /FI <Database_DSN>
たとえば、DEMODATA サンプル データベースをアクティブにする場合は、DXACT /FI DEMODATA というコマンドになります。
2 変更された各テーブルで、コマンド プロンプトから次のコマンドを実行します。
DXSYNCTABLES <テーブル名> <DSN>
メモ: ユーザー テーブルに含まれるレコード数によって、この処理にはいくらかの時間がかかります。テストでは、数百万以上のレコードがある場合、L2 キャッシュを無効にすることにより書き込み時間が短縮され、この処理自体が著しく高速化することを示しています。すべてのテーブルの処理が終わったら L2 を再度有効にしてください。
ファイルをパートナー サイトにコピーしてアクティブ化する
►ファイルをコピーするには
1 最近変更されたユーザー テーブル、および新しく書き込まれた PDC テーブルをレプリケーション ネットワーク上のほかの各サイトの適切なディレクトリにコピーします。既存のテーブルを上書きすることを確認してください。
2 dxact.exe を使用してパートナー サイトをアクティブ化し、/PA[RTNERADDRESS]=<文字列> オプションを使用してレプリケートするサイトを明示します。
たとえば、第 1 サイトのアドレスが SiteA の場合、次のようなコマンドを入力します。
DXACT /pa=SiteA <Database_DSN>
レプリケーション セッションの検証
►レプリケーション セッションを検証するには
1 レプリケートした各サイト上で LogFiles ディレクトリを参照します。
このログ フォルダーは <インストール ディレクトリ>\Replication\LogFiles にあります。
2 dre.log ファイルを開いて、成功またはエラーを示すメッセージを確認します。
3 レプリケーション スケジュールを再度有効にします。
これで、ユーザーがシステムに戻って作業ができるようになりました。