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付で起動した場合に、クライアントが予期せぬ終了をした場合にそのクライアントが使用していたテンポラリファイルを削除する。
その他さまざまな目的で使用されるテンポラリファイルについてもそれぞれクリーンアップを行う。