TECHNOLOGY

FAQ (よくある質問)

対象バージョン : 6.0.x、7.0.x
対象OS : Windows CE

QUESTION ( SQ0112026 )

Windows CE上にあるデータベースファイルで障害が発生した場合のリカバリについて(トランザクション・ログファイルが使用出来ることを前提とします)

ANSWER

(注) 使用可能の判断基準は、ユーティリティのログ変換(トランザクション・ログをSQL文へ変換)にて変換出来るかで判断しております。

【基本概念】

  • 運用にて使用するデータベースはRAM上に配置します。
  • 運用にて使用するデータベースのタランザクション・ログはCF上に配置します。
  • CF上に保存フォルダ(仮名称)を作成し、運用開始直前のデータベースを 配置します。

    → データベースのトランザクション・ログは全てCFカードを参照するように変更が必要となります。

== 障害発生時でDBが使用できなくなった場合==

 運用開始直前のデータベース と 運用にて使用していたトランザクション・ログよりリカバリーし処理を継続します。(トランザクション・ログは継続的に使用)

 → 運用開始直前のデータベース を 障害が発生したデータベースがあるフォルダヘコピーし置換します。

【操作例】
データベース : asademoj.db
トランザクション・ログ  : asademoj.log

  • PC側操作   - c:dbasademoj.db があるとします。
    – CFカードに運用開始直前データベースを保存するフォルダ(save)を事前作成しておきます。
    1. ログ・ファイル情報の変更をします。(デフォルトはDBが存在するフォルダと同一フォルダに作成されます)
      DOSプロンプトより
      cd c:db
      dblog -t ”メモリ カード2asademoj.log” asademoj.db

    2. .ログ・ファイル情報の変更後データベースをモバイル側のRAM上のフォルダ 及び CFカードに運用開始直前データベースを保存するフォルダ(save) へ複写します。
  • モバイル側操作   - Timeddbasademoj.db (運用)があるとします。
    – CFカードに運用開始直前データベースを保存するフォルダ(save)を事前作成しておきます。

==運用中に障害が発生した場合(Anywhereエンジン未起動状態)==

  1. CFカードの運用開始直前データベースを保存しているフォルダ(save)より保存データベースを運用フォルダ(Timeddb)へ複写します。
  2. データベースのリカバリーを実施します。   dbsrv6 ”Timeddbasademoj.db”  -a ”メモリカード2asademoj.log”
    → リカバリーが完了すると自動的にエンジンが停止します。
    → リカバリーにより障害発生時点までトランザクション・ログ内容に基づきデータベースの内容が更新されます。
  3. 通常の運用にてエンジンを起動して操作を開始します。

          → トランザクション・ログは継続して使用されます。

データベース 及び トランザクション・ログの障害が発生した場合の考慮も検討が必要かとわ思われますが、モバイルPC上でRAM または CFカードしかなく両方とも障害が発生した場合のリカバリーは難しいかと考えます。また、トランザクション・ミラー・ログを併用したとしても トランザクション・ログと トランザクション・ミラー・ログ の何れかで障害が発生した場合現場にて正しいログを判定するのは困難と考えますので、トランザクション・ログのみの運用が妥当かと思われます。