基本的なトラブルシューティング
一般的な問題の識別と解決方法
この付録では、レプリケーション ソリューションを実装したことで遭遇するかもしれない、最も一般的に発生する問題のトラブルシューティングと解決のための情報を提供します。この付録では、以下の項目について説明します。
トラブルシューティングのリソース
次の表に、問題解決に役立つリソースを示します。
表 A‑1 問題の特定に役立つリソース
機能/コンポーネント | 機能 | 詳細 |
DataExchange ログ ファイル | レプリケーション処理中の情報を記録します。 | |
DataExchange のテーブル同期とチェックのユーティリティ | データ テーブル内のすべてのレコードについて、レプリケーション制御テーブルに対応するレコードがあることを確認します。 | 『 Pervasive DataExchange User's Guide』の dxsynctables を参照してください。 |
Pervasive System Analyzer | DataExchange のアクティブなエンジンのインストールとネットワーク通信をテストします。 | |
トラブルシューティングの方法
問題を解決する前に、まず原因を究明する必要があります。以下のチェックリストでは DataExchange における問題を診断するのに役立つ項目を挙げます。
各チェックリストの項目の詳しい説明については、本章の以降のセクションで述べています。
インストール
このセクションでは、インストールに関連するトピックについて説明します。
複数の第 1 サイト
1 つのレプリケーション ネットワークに対して複数の第 1 サイトを設定すると、予期しない結果を招くことがあります。レプリケーション ネットワークごとに 1 つの第 1 サイトのみをインストールするようにしてください。
ターミナル サービス
DataExchange をターミナル サーバー クライアントにインストールするには、まず、ターミナル サーバー クライアントのレジストリ設定を変更する必要があります。『
Getting Started with Pervasive DataExchange』の
Windows ターミナル サービス上へのインストールを参照してください。
アンインストール
<インストール ディレクトリ>\Replication 下にあるデータベースをアクティブ化していた場合、まずこれらを非アクティブ化し、次に テンプレート リムーバ ウィザードを使用してレプリケーション テンプレートを削除します。テンプレートを削除する前にデータベースを非アクティブ化しなかった場合、アンインストール処理ではデータベース ファイルと関連するレプリケーション ファイルをそのまま残します。残されたファイルは何の問題も起こしませんが、これらを削除することによって物理ストレージを再生することができます。必要であれば、これらのファイルを直接手作業で削除することもできます。また、データベースに関連付けられた DSN を削除することも忘れないでください。
データベースの非アクティブ化とテンプレートの削除方法の説明は、
例を使った作業を参照してください。
ネットワーク通信
Pervasive System Analyzer(PSA)は、Pervasive PSQL データベース エンジンに含まれる診断ユーティリティです。PSA はスタンドアロンの診断ツールとして使用し、ネットワークの問題を解決するのに役立ちます。
メモ: DataExchange では、PSA はネットワークの問題を解決するためにのみ使用します。PSA のその他の機能は Pervasive PSQL データベース エンジンに関するものしかありません。PSA のその他の機能(アーカイブなど)は DataExchange には適用されません。
PSA の起動方法
►PSA を起動するには
1 オペレーティング システムの[スタート]メニューまたはアプリ画面から[Pervasive System Analyzer]を選択します。
メモ: DataExchange のネットワーク通信の問題を解決するには、PSA のメイン ダイアログで[アクティブ インストールをテストする]を選択します。
PSA に関するマニュアル
PSA の使用法の詳細については、『Pervasive PSQL User's Guide』で説明されています。PSA に関する完全な情報については、このマニュアルを参照してください。
データベース エンジン
レプリケーションを実行するためには Pervasive PSQL データベース エンジンが起動している必要があります。
►Pervasive PSQL サーバー エンジンが起動しているかどうかを調べるには
1 Windows のコントロール パネルを開きます。
2 [管理ツール]、[サービス]の順に選択します。
3 一覧をスクロールして次のサービスを探します。
•Pervasive PSQL トランザクショナル エンジン
•Pervasive PSQL リレーショナル エンジン
Pervasive PSQL が正しく機能するには、これらのサービスが共に開始されている必要があります。
[状態]列は、そのサービスが現在実行中かどうかを示します。[スタートアップの種類]列は、そのサービスがシステムの起動時に自動的に開始されるか、手動で開始されるかを示します。
4 サービスが開始していない場合、そのサービスのアイコンを右クリックし、[開始]を選択します。
►Pervasive PSQL ワークグループ エンジンが起動しているかどうかを調べるには
1 Windows タスクバーのワークグループ アイコン
をチェックします。
このアイコン(エンジンは実行中)が表示されている場合、エンジンは起動しています。
以下のいずれかに当てはまる場合は、エンジンは起動していません。
•Windows タスクバーにエンジン実行中のアイコンが表示されていない。
•Pervasive PSQL エクスプローラに
アイコン(エンジンは停止)が表示されている。
ワークグループ エンジンがアプリケーションとしてインストールされている場合は、オペレーティング システムの[スタート]メニューまたはスタート画面からエンジンを起動できます。
レプリケーション エンジン
レプリケーションを実行するためには、レプリケーション エンジンが起動している必要があります。試用版ライセンスの期限が切れた場合などは、エンジンが起動しなくなります。
Pervasive PSQL License Administrator ユーティリティを使用して、Pervasive DataExchange の期限なしライセンスがあるか、または試用版ライセンスの期限が切れていないかを確認します。『Pervasive PSQL User's Guide』で License Administrator に関する章を参照してください。
►Pervasive PSQL サーバーでレプリケーション エンジンが起動しているかどうかを調べるには
1 オペレーティング システムからサービス機能にアクセスします。
2 サービスの一覧をスクロールして Pervasive PSQL Replication サービスを探します。
DataExchange レプリケーション エンジンが正しく機能するには、このサービスが開始している必要があります。
[状態]列は、そのサービスが現在実行中かどうかを示します。[スタートアップの種類]列は、そのサービスがシステムの起動時に自動的に開始されるか、手動で開始されるかを示します。
3 サービスが開始していない場合、そのサービスのアイコンを選択して右クリックし、[開始]を選択します。
►Pervasive PSQL ワークグループでレプリケーション エンジンが起動しているかどうかを調べるには
1 Windows タスク バーのワークグループ アイコン
をチェックします。
このアイコンが表示されている場合、エンジンは起動しています。このアイコンが表示されていない場合、エンジンは起動していません。
ワークグループ エンジンがアプリケーションとしてインストールされている場合は、オペレーティング システムの[スタート]メニューまたはスタート画面からエンジンを起動できます。
ログ ファイル
Pervasive DataExchange では、ログ ファイルによってイベントのログを記録することができます。DataExchange 監視ツール、DataExchange Manager、およびレプリケーション エンジンの動作を記録することができます。さらに、DataExchange はメッセージ ログとインストール ログも保持します。
ログはすべてテキスト ファイルで、最新のログ ファイルの拡張子は .log となります。ログ ファイルは情報、警告、エラー、およびデバッグについてのデータを組み合わせて作成します。詳細なメッセージ(簡潔なメッセージに対し)を選択することができます。詳細なメッセージにはプログラム名とプログラム内での行番号が含まれていて、デバッグの際に役立ちます。詳細なメッセージは、デバッグ ログ レベルのみに適用されます。
ログ ファイルのデフォルトの場所は <インストール ディレクトリ>\Replication\LogFiles ですが、変更することもできます。必要な場合は、デフォルトのログのサイズとデフォルトの保存ログ ファイル(履歴)の数を変更することもできます。LogFiles フォルダーは、オペレーティング システムの[スタート]メニューまたはアプリ画面から表示できます。
ログ ファイルのサイズ
ログ ファイルの最大サイズにゼロ(制限なし)を設定すると、ログ ファイルは物理ストレージが許す限りのサイズに増大します。トラブルシューティング時以外は、最大ログ サイズにゼロを設定しないことをお勧めします。その場合でも、長期間(一般的に 4 時間以上)に渡って「制限なし」を使用することは避けてください。たとえば、DRE ログのサイズは実行中のログの種類(デバッグ ログなど)、レプリケーションの頻度、およびレプリケーションを行うサイトの数によっては急速に増大します。
DRE.log の場合、ログ ファイルが最大サイズに達すると、ファイルは次の履歴ファイル名に再割り当てされます。たとえば、Dre.log が最大サイズに達したとき、このファイルは Dre.lo1 という名前に変更され、新しい Dre.log ファイルが作成されます。この時点で Dre.log は空で、再びデータの収集を開始します。再度ファイルが最大サイズに達すると、Dre.lo1 の名前が Dre.lo2 に変更され、Dre.log が Dre.lo1 に変更されます。そして、新しい Dre.log は空のファイルとなり、データの収集を始めることができます。[保持するログの最大数]の設定は、lo1、lo2、lo3 などのように残しておく履歴の限度を決定します。
その他の DataExchange コンポーネントは、ユーティリティまたはサービスが実行されると自動的に新しいログ ファイルを開始します。この場合、ユーティリティがアクティブにされるたびに、ユーティリティが関連付けられた XXX.log ファイルは新しい XXX.lo1 ファイルにコピーされます。ユーティリティは、空になった XXX.log ファイルにログの記録を開始します。この場合も、[保持するログの最大数]の設定は、lo1、lo2、lo3 などのように残しておく履歴の限度を決定します。
DataExchange Manager および DataExchange 監視ツール には、ログの設定を変更することができるロギング ダイアログがあります。
ログ ファイルの説明
次の表で、さまざまなログ ファイルの内容について説明します。
表 A‑2 DataExchange ログ ファイル
ログ ファイル(.log) | 説明 |
da | スケジュール、ユーザーのアクセス権などを変更したときに DataExchange Manager によって更新されるログ。 |
dnewsite | レプリケーション インストール ログ。このログは、Pervasive DataExchange をインストールしたときに作成され、レプリケーション DNA データベースの設定に関する情報を含みます。 |
dre | このログには、レプリケーションの状態の詳細情報が含まれます。これは最もよく更新されるログ ファイルです。レプリケーション エンジンは、レプリケーションが発生すると、このログを更新します。 ログ ファイルの最大サイズはデフォルトで 2 MB です。このログ ファイルのサイズは、最大 5 MB までに制限してください。テキスト エディターによっては、10 MB を超えるファイルを開けないことがあります。 レプリケーション エンジンが DRE ログを次の履歴バージョンに再割り当て(たとえば DRE.LOG を DRE.LO1 に)したときに、いくつかのログ メッセージが失われることがあります。この欠損は、履歴バージョンが割り当てられる際のレプリケーション動作によって異なりますが、一般的には非常に少なく抑えられるか、あるいはまったく起こりません。 |
dregdtk | このログは、第 1 サイトをインストールしたときに作成されます。このログには、ライセンスの登録に関する情報が含まれます。PSQL フォルダーに作成されます。¶ |
dxact | このログは、あるサイトをアクティブにしたときに、アクティブ化ユーティリティによって更新されます。 |
dxdeact | このログは、あるサイトを非アクティブにしたときに、非アクティブ化ユーティリティによって更新されます。 |
dxdeploy | このログは DXDeploy ユーティリティによって更新されます。 Demodata サンプル データベースを使った作業の体験例も参照してください。ここでは、情報が dxdeploy.log に記録されます。 |
dxevent | このログは、レプリケーション セッション イベント コールバックを扱う dxevent.dll によって更新されます。 |
dxsynctables | このログは、データ ファイルとレプリケーション データ制御ファイルの同期をとるために使用される dxsynctables ユーティリティによって更新されます。 |
mer | このログは、DataExchange が MKDE への呼び出しを行う間にエラーが発生すると記録されます。このログは、通常、空です。データが正しくレプリケートされていない疑いがある場合は、このログを調べてください。 |
msg | このログは、レプリケートされたサイトやレプリケーションが成功したかどうかを示す、レプリケーション セッションに関するメッセージをリストします。このログはレプリケーション エンジンによって記録されます。dre ログの方がより詳細な情報を記録します。 |
reh | このログに情報が記録されるのは、レプリケーション イベント ハンドラーが制御テーブルの更新で問題に遭遇した場合のみです。データが正しくレプリケートされていない疑いがある場合は、このログを調べてください。 |
replinst | このログはインストールに関連する情報を記録したもので、Pervasive DataExchange によって作成されます。このログ ファイルは、インストールに失敗したときは特に役に立ちます。 インストールに失敗した場合、このファイルは Windows の WINDOWS または WINNT ディレクトリにあります。 |
sess#### | これらのログには、特定のレプリケーション セッションに関する情報が含まれます。#### は 4 桁の数字を表します。 このログは、レプリケーションのスケジュールを設定してから、次にレプリケートが行われた際に作成されます。このログは、レプリケーション エンジンを停止した場合と、一定期間ごとに削除されます。削除を行う間隔はレジストリ設定で指定します。 |
►DataExchange Manager のログのオプションを開くには
1 PCC でデータベースの名前をクリックします。
2 [DataExchange| Manager]をクリックします。
3 Manager にログオンします。
4 [オプション]をクリックします。
►統計情報およびログ ビューのログのオプションを開くには
1 PCC でデータベース名の下の[レプリケーション]を右クリックします。
2 [統計およびログ ビュー]を選択します。
3 [レプリケーション ログ ビューアー]ペインを右クリックして[ログ メッセージ]を選択します。
►進行状況ビューアーおよびログ ビューアーのログのオプションを開くには
1 PCC で[レプリケーション - 接続されました]を右クリックして[統計およびログ ビュー]を選択します。
2 [レプリケーション ログ ビューアー]ペインを右クリックして[ログ メッセージ]を選択します。
サブメニューではログ コマンドや設定が表示されます。これについては『
Pervasive DataExchange User's Guide』の第
9 章
レプリケーション進行状況ビューアーとログ ビューアー の使用の
レプリケーション動作の記録および監視で説明しています。
►セッション ログの削除間隔を変更するには
注意: コンピューターのレジストリを間違って編集すると、レジストリの損傷を招きます。このような損傷により、コンピューターが起動できなくなるなどの望ましくない結果を引き起こすことがあります。レジストリの編集に自信がない場合は、経験豊富な技術者に依頼してください。Pervasive Software ではレジストリの破損に対して責任を負うことはできません。
レジストリを編集する前にバックアップを作成しておくことをお勧めします。オペレーティング システムのオンライン ヘルプを参照してください。キーワードの項目で「レジストリ」、「バックアップ」、または「システム修復ディスク」などのエントリを探してください。
1 オペレーティング システムから regedt32 ユーティリティを実行します。
レジストリ エディターが開きます。
2 以下のレジストリ キーを見つけます。
HKEY_LOCAL_MACHINE\Software\Pervasive Software\Pervasive Replication\\SessionExpiry
3 そのキー エントリ(種類:REG_DWORD)をダブルクリックします。
[DWORD 値の編集]ダイアログが開きます。
4 [値のデータ]フィールドで、希望の値(分単位)に変更します。デフォルトは 5 です。
5 [OK]をクリックします。
6 レジストリ エディターを終了します。
データ レプリケーション
このセクションでは、データのレプリケーションに関連するトピックについて説明します。
レプリケートするサイトの一覧の矛盾
[レプリケーションの開始]ダイアログからレプリケーションを開始することができます(このダイアログは、PCC のツリーで、[レプリケーション - 接続されました]を右クリックし、次に[タスク|レプリケーションの開始]をクリックして表示します)。このダイアログで、ソース データベースおよびレプリケートするサイトを選択します。パートナー サイトのアクティブ化の方法によっては、レプリケートするサイトの一覧に矛盾があるように思われることがあります。
一覧に矛盾が見られる場合の一例を挙げます。パートナー サイト PS1 を作成して第 1 サイトと初期レプリケーションを行います(デフォルトの動作)。次に、パートナー サイト PS2 を作成しても、第 1 サイトと初期レプリケーションを行わなかったとします。
[レプリケーションの開始]ダイアログでソース データベースとして第 1 サイトまたは PS1 を選択した場合、PS2 はレプリケートするサイトとして表示されません。「パートナー サイトに何が起きたのだろう?」という疑問がわきます。PS2 はなぜ一覧にないのでしょう?
一覧に表示されないのは、レプリケーション ネットワークに関する情報(ネットワーク上のサイトなど)もレプリケートされてしまったためです。PS2 をソース データベースとして選択した場合、レプリケートするサイトとして最初のレプリケーション サイトの選択が表示されます。第 1 サイトとレプリケートを行った後、PS2 は第 1 サイトと PS1 の一覧に表示されます。
この一覧の整合性を確実に保つ最も簡単な方法は、各パートナー サイトをアクティブ化したときに第 1 サイトとの初期レプリケーションを行うことです。パートナー サイトは、第 1 サイトとレプリケートするまではほかのサイトとレプリケートできません。
非アクティブなサイトでのレプリケーションの失敗
レプリケーション ネットワーク上のその他のサイトは、レプリケーションが実行されるまでサイトが非アクティブ化されたことを認識しません。したがって、レプリケーション ネットワークからサイトを非アクティブ化した後に実行される最初のレプリケーションでは、そのサイトに対する処理が失敗します。これは正常な動作です。
DRE ログ ファイルには次のようなエラー メッセージが含まれます。
E 019f 0301-15:46:25 パートナーサイト Partner_Site_2(サイト番号:00LFLU)はレプリケーション ネットワークから削除されました-ほかのサイトとレプリケートすることはできません。
最初のレプリケーションが行われると、レプリケーション ネットワーク上のすべてのサイトがそのサイトの非アクティブ化状態を認識できるので、以降のレプリケーションでこのエラーは発生しません。
メモ: 第 1 サイトを非アクティブ化した場合、第 1 サイトを再アクティブ化したら手動でレプリケーションを実行する必要があります。第 1 サイトを再アクティブ化したら、各パートナー サイトから第 1 サイトに対してレプリケーション セッションを手動で開始する必要があります。このレプリケーション セッションにより、すべての利用可能なサイトが確実に[レプリケーションの開始]ダイアログへ表示されるようになります。
この動作は、パートナー サイトを非アクティブ化して再アクティブ化した場合には不要です。これは、第 1 サイトにのみ適用されます。
スケジュール操作による間違った警告
スケジュールを削除、変更または無効にした場合、その他のレプリケーション サイトはこれを認識しません。これはレプリケーションが発生しないためです。その他のサイトの通知エージェントは引き続きスケジューリング サイトに接触を試みます。スケジューリング サイトが停止している、あるいはサイトに到達できない場合、エージェントは失敗の警告を送信します。スケジュールはもう適用されていないため、この警告は正しくありません。
このような間違った警告を防ぐためには、スケジュールを削除、変更または無効にした後にレプリケーションを手作業で初期化してください。このレプリケーションによって、確実にスケジュールの変更がレプリケートされます。レプリケーション ネットワーク全体がレプリケーションを必要としなくなった場合は、ネットワーク上のすべてのレプリケーション サイトを非アクティブ化するという方法もあります。
正しい警告ではあるが間違ったレプリケーション スケジュールに基づいたもの
スケジュールをリモートから変更した場合、このような状況が起こります。たとえば、サイト B で DataExchange Manager を起動し、これを使用してサイト A のスケジュールを変更します。サイト A のレプリケーション エンジンは、再起動されない限り新しい設定を使用しません。しかし、通知エージェントは再起動なしで新しいスケジュールを使用します。エージェントは、レプリケーションのスケジュールが間違っていることを適切に通知します。
このような状況を回避するには、スケジュールをリモートから変更しないでください。
動的に作成したテーブルがレプリケートされない
動的に作成したテーブルがレプリケートされない場合は、dCNF テーブル内のファイルのマッチング パターンが正しいかどうか調べてください。DataExchange では Dxdynpath というユーティリティを提供しているので、ファイル マッチング パターンを調べる際に役立ちます。『
Pervasive DataExchange User's Guide』の
dxdynpath を参照してください。
相対パスは、DataExchange が認識できるデータ辞書ファイル(DDF)を含むホーム ディレクトリに対する相対パスであることに注意してください。
メモ: Dxdynpath は、Real-Time Backup Edition のみで使用されます。
SQL トリガーとレプリケーション
SQL トリガーとは、INSERT、UPDATE、または DELETE によってテーブル内のデータが変更されるときに自動的に実行されるストアド プロシージャの一種です。ストアド プロシージャは、あらかじめ定義されデータベース辞書に保存されている SQL ステートメントです。
レプリケーションは従属テーブルを更新する前にベース テーブルを更新します。この順序により、外部キーのリレーションシップが正しく維持されます。たとえば、サンプル データベース Tracker の場合では Region テーブルが Employee テーブルの前に更新されます。
例として、ベース テーブル A と従属テーブル B(テーブル B は外部キーで A と関連付けられている)があると仮定します。テーブル B にレコードが追加された場合にテーブル A を更新するトリガーを作成します。
パートナー サイト 1 では、新しいレコードをテーブル B に追加し、これによりトリガーが実行されます。テーブル A はパートナー サイト 1 で更新されました。次にパートナー サイト 1 を別のサイトとレプリケートします。
その他のサイトでは、レプリケーションがテーブル A を更新し、新しいレコートをテーブル B に追加します。これによりテーブル B のトリガーが実行され、再度テーブル A の更新を試みます。レプリケーション エンジンは既にテーブル A のレコードをパートナー サイト 1 で行われた変更で更新してしまっているので、この動作は好ましくありません。
トリガーとレプリケーションに関する明確な規則はありません。一般的に、レプリケートされるデータベースの一部である各トリガーについて注意深く考慮する必要があります。トリガーの機能とレプリケーションの動作について明確にすることにより、期待した結果を確実に得ることができます。
パートナー サイトのアクティブ化時のデータの競合
デザイン時にレプリケーションのために準備したテンプレート データは、(タイムスタンプとその他の内部方式で)アクティブ化で準備されたデータとは異なるマークが付けられています。レプリケーション エンジンはこの違いをレプリケーション中に解決します。まれに、第 1 サイトをアクティブ化した方法とパートナー サイトをアクティブ化した方法の間でデータの競合が起こることがあります。
インデックス セグメント
ページ サイズが 4096 バイトのデータ ファイルでは、ファイル当たりのインデックス セグメント数は 119 に制限されます。真のヌルがサポートされるインデックスの設定されたヌル値を許可する列には 2 つのセグメントから成るインデックスが必要なため、1 つのテーブルではインデックス付きのヌル値を許可する列(Btrieve ファイルでは、インデックス付きでヌル値を許可する真のヌル フィールド)は 59 個までしか持てません。ページ サイズが小さくなると、この制限も小さくなります。
Pervasive PSQL で、ファイル作成モードを 7.x に設定し、TRUENULLCREATE をデフォルト値のオンに設定して作成されたファイルはすべて、真のヌルをサポートします。以前のファイル形式で作成されたファイル、あるいは Pervasive PSQL 7 を使用するか TRUENULLCREATE をオフに設定して作成されたファイルは、真のヌルをサポートせず、この制限を受けません。
TRUENULLCREATE の詳細については、Pervasive PSQL マニュアルの『SQL Engine Reference』を参照してください。
データの競合
レプリケーション ソリューションの中核は、競合が起きたときにそれを検出して解決することです。競合の最良の解決方法は、予防です。デザインによって競合を回避します。これらに加え、Pervasive DataExchange にはデフォルトの Last-in-wins(最新操作の優先)ポリシーがあります。制御テーブルのタイムスタンプを保持し、レプリケーション サイトの時計と同期化することにより、レコードがいつ追加、更新および削除されたかの正確な情報が保持されます。競合が発生すると、レプリケーション エンジンが競合のポリシーを実施(かつ競合をログに記録)する責務を果たします。
さらに、Pervasive DataExchange は独自の競合解決方法を定義できるインターフェイスも提供します。どのような業務規則に対しても適切な競合解決をデザインし、イベント ハンドラー DLL を介して解決方法を提供することができます。DLL はレプリケーション エンジンの機能を置き換えるかまたは拡張します。
イベント ハンドラー DLL の作成に関する情報は、株式会社エージーテックまでお問い合わせください。イベント コールバック API マニュアル(英語のみ)をご提供します。
競合の種類
データの競合は Pervasive DataExchange によっていくつかの種類に分けられます。競合はそれぞれログ ファイル dre.log に記録されます。ログのエントリを読んで、競合があれば必要な操作を決定してください。ログには以下のようなメッセージが記録されます。ログには競合の種類、関連するレコードのキー、および競合を解決した方法が含まれます。
競合が起きるとレコードは上書きされ、常に最新のレコードが使用されます。この動作を変更するためには、レプリケーション エンジンに独自にカスタマイズしたイベント ハンドラー DLL を登録する必要があります。
W 0130 0321-17:44:04 競合:タイプ I: テーブル Customer のレコード 2 は両方のサイトで変更されました(キー:123)
W 0130 0321-17:44:04 タイプ I の競合が解決されました: レコード 2 はパートナーで更新されます(テーブル Customer, キー:123)
レコードが更新されなかったサイトのログ ファイルには、上の例のようにパートナー サイトでレコードが更新されたことを示すメッセージが含まれます。レコードが上書きされたサイトのメッセージは次のようなもので、データ値が新しい値と同様更新されたことを示します(この例ではラスト ネーム Yin が Yan に置き換えられました)。
I 0130 0321-17:44:04 ローカル フィールド Customer.LastName はリモート値によって置き換えられました。
I 0130 0321-17:44:04 変更前:Yin
I 0130 0321-17:44:04 変更後:Yan
タイプ I の競合
タイプ I の競合は、最後のレプリケーション セッション以降にレコードが両方のサイトで更新されたときに発生します。これが発生した場合、新しいレコードがレプリケートされ、次のメッセージに似たログ メッセージが生成されます。
W 0130 0321-17:44:04 タイプ I の競合が解決されました: レコード 2 はパートナーで更新されます(テーブル Customer, キー:123)
この種の競合のバリエーションとして、以下のようなシナリオと関連するログ メッセージがあります。
•ローカル サイトにはより新しいレコードがあり、開始プログラムはローカル サイトにあります。
W 01f8 08-17 19:09:41 競合:タイプ I:Employee テーブルのレコードは両サイトで変更されています GIDSysKey:632940095990000027 GIDSiteID:0 イベント ハンドラーによって無効にされなければ、DRE は最新の(パートナー)レコードを選択します。
•ローカル サイトにはより新しいレコードがあり、開始プログラムはパートナー サイトにあります。
W 055c 08-17 19:00:51 競合:タイプ I:Employee テーブルのレコードは両サイトで変更されています GIDSysKey:632940095990000028 GIDSiteID:0 イベント ハンドラーによって無効にされなければ、DRE は最新の(ローカル)レコードを選択します。
•パートナー サイトにはより新しいレコードがあり、開始プログラムはローカル サイトにあります。
W 0518 08-17 19:14:25 競合:タイプ I:Employee テーブルのレコードは両サイトで変更されています GIDSysKey:632940095990000029 GIDSiteID:0 イベント ハンドラーによって無効にされなければ、DRE は最新の(ローカル)レコードを選択します。
•パートナー サイトにはより新しいレコードがあり、開始プログラムはパートナー サイトにあります。
W 0954 08-17 19:05:23 競合:タイプ I:Employee テーブルのレコードは両サイトで変更されています GIDSysKey:632940095990000030 GIDSiteID:0 イベント ハンドラーによって無効にされなければ、DRE は最新の(パートナー)レコードを選択します。
タイプ V の競合
タイプ V の競合は、各サイトのスタート データにエラーがある場合に発生します(データベース アプリケーションがアクティブ化されたときにデータベース内に既に存在するデータ)。
スタート データが 1 つのサイトに存在してもう一方には存在しない場合、スタート データはもう一方のサイトにレプリケートされます。ただし、既存のスタート データが異なる場合はタイプ V の競合はログに記録されてレプリケーションが停止します。
W 0130 0321-17:44:04 競合:タイプ V:テーブル Customer レコード 2 のスタート データが 2 つのサイトで異なります - 競合を手動で解決する必要があります。
タイプ VI および VIa の競合
1 つのサイトで追加または更新されたレコードと、別のサイトで削除されたレコードの競合は、タイプ VI の競合として扱われます。競合処理の間、すべてのレコードが 1 つのサイトで更新(またはレコードが追加)されていて、そのレコードが別のサイトで削除されている場合、タイプ VIa の競合がログに記録され、最新の操作が優先されます。レコードが更新されていない場合、削除操作が常に優先されます。このタイプ VI の競合は、レコードが削除されたサイトでそのレコードを再度追加するための十分な情報がないため、このような方法で解決する必要があります。考えられるシナリオと関連するログ メッセージについて、以下に説明します。
•レコードはローカルで更新または追加され、パートナー サイトで削除されました
W 0130 0321-17:44:04 競合:タイプ VI: ローカルで更新したテーブル Customer のレコードがパートナー サイトで削除されました(キー:123)
作成日: 2000/05/10 12:26:45
削除日: 2000/05/11 11:18:23
このレコードはローカルで削除されます。
W 0130 0321-17:44:04 競合:タイプ VIa:新しく挿入したテーブル Customer のレコードがパートナー サイトで削除されました(キー:123)
作成日: 2000/05/10 12:26:45
削除日: 2000/05/11 11:18:23
このレコードは転送されます。
•レコードはパートナー サイトで更新または追加され、ローカルで削除されました
W 0a78 08-17 13:05:13 競合:タイプ VI:テーブル t1 のレコードがパートナー サイトで削除され、ローカルで更新されました。GIDSysKey:632939880130000000 GIDSiteID:0 このレコードはローカルで削除されます。
競合解決の成功
レプリケーション サイクル中に競合の解決に成功した場合、レプリケーション ログ ファイルに次のようなメッセージが記録されます。
0082 0818-10:47:36 000030 との Tracker のレプリケーションは 2 個の競合を解決して正常に終了しました。
主キーの競合の解決
主キーの競合を解決する最良の方法は、ソース データベースの主キーを一意のキーとしてデザインすることです。一意の主キーを持たない既存のデータベースをレプリケーションに使用している場合、Pervasive PSQL Control Center を使用して主キーを指定することができます。
主キーの競合は、同じ主キーを持つ 2 つの異なるアクティブなデータベースに 2 つの行が挿入されたときに発生します。それぞれの行は潜在的に関連のあるデータのため、レプリケーション エンジンはレプリケーションを停止してこれらの行を変更しません。
主キーの競合が検出されたシステム上の DRE.log ファイルに以下のエラーが記録されます。たとえば、サンプル データベース Tracker の Region テーブルで主キーの競合が検出されたとします。
E 01cb 1108-11:42:21 sqlhelp 852 ODBC エラー -1:(S1000) "[Pervasive][ODBC Client Interface][LNA][Pervasive][ODBC Engine Interface][Data Record Manager] レコードには重複値を持つキー フィールドが含まれています (Btrieve エラー 5)" <-4994>
E 01cb 1108-11:42:21 dbutil 629 ODBC ステートメントに失敗しました:関数 Execute からの -1:
E 01cb 1108-11:42:21 dbutil 636 ODBC ステートメント:INSERT INTO "Region" ("RegionID","NameStr") VALUES (?,?)
E 01cb 1108-11:42:21 dsectbl 927 テーブル Region にキー:8 を持つ新しいレコードを挿入できません。
E 01cb 1108-11:42:21 dresyncs5368 FSM:{22: ODBC エラーが発生しました}:パートナーのデータ一覧の、次の PD2PQQ88002.Region レコードを格納できません (キー:PDCID(1000010))
このシステムとレプリケートを試みたシステムはすべてこのエラーで失敗します。
E 01e8 1108-11:36:40 dresyncs1542 パートナー レプリケーション エンジンからエラーを受信しました:"Region の更新に失敗しました"
レプリケーションは停止されました
主キーの競合を修復するには、手作業が必要です。これらの競合している行の 1 つを新しい一意の値に変更する必要があります。それに引き続きレプリケーション セッションを開始する必要があります。
たとえば、上の例では、主キー 8 で競合が発生しています。したがって、関連のあるデータベースの 1 つで主キーをそのテーブルでの一意なキーである 9 に変更します。次に、その 2 つのシステムを一緒にレプリケートします。
このレプリケーション中に、レプリケーション制御テーブルがクリーンアップされて主キーの競合が訂正され、DRE.log ファイルには警告メッセージとして次のようなメッセージが書き込まれます。このメッセージの目的は、主キーの競合の解決に成功したことを知らせることです。
W 01b7 1107-17:12:56 dsectbl 893 主キーの競合はレプリケーション制御テーブルで修正されました。テーブル:PDCRegion、列: CRegionID キー値: 8
これにより、データベース内のデータに関しては何が起きているのでしょうか?この処理を段階的に見た Region テーブルの内容を示します。
まず、各サイトに同じキー値を持つ行が挿入されました。
サイト 1 | サイト 2 |
RegionID | NameStr | RegionID | NameStr |
8 | Site1Data | 8 | Site2Data |
レプリケートを行い、主キーの競合が発生しました。レプリケーションは停止してどのテーブルも更新されませんでした。
サイト 1 | サイト 2 |
RegionID | NameStr | RegionID | NameStr |
8 | Site1Data | 8 | Site2Data |
1 つのサイトを新しい一意の値で更新します。
サイト 1 | サイト 2 |
RegionID | NameStr | RegionID | NameStr |
9 | Site1Data | 8 | Site2Data |
新しい変更をレプリケートします。
サイト 1 | サイト 2 |
RegionID | NameStr | RegionID | NameStr |
8 | Site2Data | 8 | Site2Data |
9 | Site1Data | 9 | Site1Data |
これで両サイトともに矛盾のないデータのコピーがレプリケートされ、どのデータも失われませんでした。
通知エージェント
通知エージェントは、マシンに Pervasive PSQL サーバー製品が含まれている場合にのみインストールされます。これはワークグループ製品では使用できません。通知エージェントが電子メールを送信しない場合は、以下の点を調べてください。
•エージェントがサービスとして起動しているかどうか
•エージェントが正しく設定されているかどうか(『
Pervasive DataExchange User's Guide』の
dxagent を参照してください)
•エージェントが通信に使用する SMTP ポートで認証や暗号化を必要としないかどうか
•エージェントを使用する各レプリケーション マシンが SMTP サーバーに対するアクセス権を持っているかどうか
•SMTP サーバーが、エージェントを実行している各レプリケーション サイトから電子メールを受け取るように設定されているかどうか
►通知エージェントが起動しているかどうかを調べるには
1 Windows のコントロール パネルを開きます。
2 [管理ツール]、[サービス]の順に選択します。
3 サービスの一覧で Pervasive DataExchange Agent サービスまでスクロールします。
通知エージェントが正しく機能するには、このサービスが開始している必要があります。
[状態]列は、そのサービスが現在実行中かどうかを示します。[スタートアップの種類]列は、そのサービスがシステムの起動時に自動的に開始されるか、手動で開始されるかを示します。
4 サービスが開始していない場合、そのサービスのアイコンを選択して右クリックし、[開始]を選択します。
メール サーバーのテスト
SMTP メール サーバーも正しく機能している必要があります。必要に応じ、SMTP メール サーバーが電子メールを正しく送受信しているかどうかを調べてください。お使いの SMTP サーバー ソフトウェアのマニュアルを参照するか、ベンダーの Web サイトでテスト用のプロシージャをチェックします。
その他のヘルプの入手方法
Pervasive Software では、インストールが正しく完了するよう万全を期しています。インストール中またはインストール後に、ユーザー マニュアルでは対処できない問題が発生した場合は、株式会社エージーテックにお問い合わせください。速やかに対処いたします。
次の表では、ご質問への回答や問題のトラブルシューティング方法に関するリソースおよび問い合わせ先についての情報を提供しています。
表 A‑3 Pervasive Software リソースおよび問い合せ先情報
リソース | 説明 | お問い合わせ先 |
Pervasive Software Web サイト | Pervasive Software の Web サイトでは、Pervasive PSQL に関するあらゆる情報を豊富に提供しています。 | http://www.agtech.co.jp/products/pervasive/ |
Pervasive PSQL FAQ | Pervasive 製品に関してよくお問い合わせのある質問を提供しています。 | http://www.agtech.co.jp/support/faq/pervasive/ |
Pervasive ライブラリ | 技術白書などの資料をご覧になれます。 | http://www.agtech.co.jp/support/reference/pervasive/ |
オンライン マニュアル | Pervasive PSQL 製品マニュアルの最新版をダウンロードできます。 | http://www.agtech.co.jp/download/manual/ |
Windows の場合、オンライン ドキュメントの完全なセットは、インストール時に除外するよう指定しない限り自動的にインストールされます。 | このマニュアルには、[スタート]メニューに表示される[Pervasive]プログラム グループのサブメニューから、またはインストール CD-ROM からアクセスすることができます。 |
電子メールによるお問い合わせ | Pervasive 製品に関する全般的なご質問。 | info@agtech.co.jp |
Pervasive 製品のセールス情報についてのお問い合わせ。 | sales@agtech.co.jp |
テクニカル サポート
Pervasive DataExchange のインストールに関するご質問や問題については、株式会社エージーテックのサポート サービス部門がお役に立ちます。
Pervasive 製品のご購入後、最初のお問い合わせから 30 日間は、インストールや設定に関する問題のテクニカル サポートを無償でご提供いたします。