2013年1月13日日曜日

FileMaker Server でのトラブル

先日起きたトラブルとその解決までの事について

環境:Windows2008Server(x86 32bit) FileMakerServer10

非保存計算フィールドに対する検索が効かなくなるという症状が発生
・未収金や過入金の明細を検索するため、未収過入金を表す計算フィールドに
 値が「0」のものを除外絞り込みが効かなくなる
 ※非保存計算フィールドに対する除外が効かない→除外されない。
・予約者集計フィールドに対する検索が効かなくなる
 ※非保存計算フィールドに対する検索が効かない→検索失敗で0件になる。
等が起こり、行なってみた対策は以下のとおり

1,サービスの再起動→効果なし
2,ファイルの最適化保存(索引を作り直す)→効果なし
3,計算原子となるテーブルの数字フィールドに対する直接検索
  →検索可能。計算原子側のテーブルが壊れているわけではない。
4,非保存計算フィールドを新規作成する→効果なし。
  ※新しく作成したフィールドが動くなら既存のフィールドがおかしくなっている
5,ファイルの修復→効果なし
6,動いてた時(数日前)のBUから空データファイルを作成し、最新のファイルから
  データ移行→効果なし

上記対策でファイル損傷でなく、索引損傷でもなく、レコード損傷でもなく、
フィールド損傷でもないという。どうすればいいんだ?という状態に陥りました。

結局、6のデータ移行作業を試しで一部のみ行なっていたため、たまたま
ローカルで全データ移行作業を行った後、動かしたら動いたため、成功と思い
サーバーにアップしたらサーバー環境だと動かないという状態になり、これは
サーバーのせいだろうという事になってサーバー自体の再起動をした所、
動くようになったという。。。

当てずっぽうな根拠のない私見ですが、サーバー再起動でクリアされる、
FileMakerServerが検索処理で扱うキャッシュファイルのような一時ファイルがあり、
それが損傷したか、アクセス出来ない(別のセッションがファイルロックしてしまっていた)状態になりうまく検索できなくなっていたのかなーと。
でもそれだと普通のフィールドに対する検索も正常に動作しなくなるはずなので、
レコードのキャッシュがおかしくなっていたのかな?

確かにおかしくなる前に重い処理に業を煮やし、何度か放置していてセッションが
切断されたり、クライアント側から強制終了や強制切断したりしていたので、
レコード操作のセッションがサーバー側でうまく開放されなかった事があっても
不思議ではないのかもしれない。

でも多分MacOSだと起きませんとかなんだろーなー。