Empress 資料一覧

残ってしまったロックを解除する方法(empclean)

2007/11/4更新

対応バージョン: 6.10

empcleanコマンドを使用する。

% empclean <DB> [temp]

tempを付けると/tmp配下のテンポラリファイル(EMP_*)も削除対象となる。

実行例)

% empclean testdb temp

EMPCLEAN バージョン 6.10 r1
         foo により開始 : 30 -2125980416  **:16:34
  次段階 : テンポラリファイルに対するディレクトリをチェックします。
Removing /tmp/EMP_15221_e1ba
Removing /tmp/EMP_4637_50d3
  データベースをチェック中です。: testdb
    次段階 : 必要なシェアードメモリを検索中です。
    次段階 : 不適切に終了したすべてのクライアントを発見しました。
ホストのチェック中です。: 'host-a'
foo       クライアント ID:       1115430533   PID:    15213
foo       クライアント ID:        841899680   PID:    38241
     次段階 : セマフォをチェックします。
     次段階 : トランザクションを解決します。
     次段階 : ダングリングサーバクライアントを削除します。
    次段階 : ロックを解除します。
クライアント 1115430533 に対してロックをクリアー中です。
クライアント 841899680 に対してロックをクリアー中です。
    次段階 : コーディネータをチェックします。
コーディネーターからクライアント 1115430533 を削除中です。
コーディネーターからクライアント 841899680 を削除中です。
EMPCLEAN 終了 : 30 Sep 2005  16:34:57

参考までに、empcleanが修復するEmpress DBの不整合について以下に示す。

消滅したサーバの再起動

何らかの原因によって消滅してしまったサーバを再起動する。

トランザクションの整合性

トランザクション中にサーバまたはクライアントが予期せぬ消滅をした場合、進行中のトランザクションはそのまま放置されるのでこれらのトランザクションのうち完了しているものについてはcommitを行い、未完了のものについてはrollbackを行う。

ロックの整合性

消滅したクライアントによる共有メモリとファイルロックはクリーンアップされないので不必要な共有メモリとロックはクリアする。

データディクショナリ

存在しないテーブルに関するデータディクショナリの登録を除去する。

また、データベースディレクトリ内に存在するデータベースファイルと無関係なファイルを削除する。

データベースファイル

メインレコードデータ(.relファイル)とオーバーフローデータ(.dtfファイル)を構成するファイルについてレコードカウンタの不整合やフリーリストの修復を行う。

テンポラリファイル

オプションtemp付で起動した場合に、クライアントが予期せぬ終了をした場合にそのクライアントが使用していたテンポラリファイルを削除する。

その他さまざまな目的で使用されるテンポラリファイルについてもそれぞれクリーンアップを行う。