Linkexpress Replication optionの複写先データベースでのJYP2099Eエラーについて
- Linkexpress Replication optionで一括差分複写を実行すると、レプリケーション業務の差分格納処理が、「JYP2099E デッドロックが発生しました.」というエラーになりました。原因と対処方法を教えてください。
- [原因]
Linkexpress Replication optionで一括差分複写を実行すると、レプリケーション業務の差分格納処理は格納コマンド(lxstrdbコマンド)内で動的SQL文を使って複写先のデータベースを更新します。この動的SQL文と複写先データベースに対して利用者が実行したSQL文の間で排他の競合が発生したことが原因です。
[対処方法]
デッドロックが発生した場合は、以下の対処を実施してください。
・レプリケーション業務の差分格納処理(lxstrdbコマンド)がエラーになった場合
次のサイクルで実行するレプリケーション業務の格納処理が正常終了することで復旧するため、対処は不要です。
・利用者が実行したSQL文がエラー復帰した場合
SQL文を再実行してください。
また、デッドロックが発生する可能性を低減するため、以下の対処も検討してください。
・利用者による複写先データベースに対するSQL文の実行は、データベース資源を占有しない指定(占有モード指定でNO_LOCKを指定)や行単位の排他(行ロック)を利用する。
・Symfoware Server V10.1以降を使用している場合は、複写先データベースの表のDSO定義にPRECEDENCE(1)を指定して、コミットデータ即時読込み機能を利用する。
データベース資源を占有しない指定や行単位の排他についての詳細は、以下のマニュアルを参照してください。
Symfoware Server V12.3.0 アプリケーション開発ガイド(共通編)
第1部 アプリケーション開発における基礎知識
第1章 アプリケーションの設計に必要な概念
1.1 トランザクションと排他制御
Symfoware Server V12.3.0 RDB運用ガイド(データベース定義編)
第4章 格納構造
4.1 表の格納構造の特徴
4.1.1 SEQUENTIAL構造
コミットデータ即時読込み機能を利用する場合
なお、上記以外の製品バージョン/レベルについては、該当するマニュアル箇所を参照してください。
製品・サービス区分 | Symfoware | ||||
---|---|---|---|---|---|
製品・サービス情報 |
|
||||
アンサー種別 | 運用/保守 |