【IRIS/Cache】%ZSTARTでエラー発生! インスタンスが起動できない!復旧方法

根幹部分での「やらかし」に対応する備忘録です。

※この記事は下記の方向けになります。
  • %ZSTART.macでエラーが発生し、インスタンスが起動できなくなった方

はじめに

%ZSRART(%ZSTOPも)は、公式のドキュメントに「あらゆる条件下で、ルーチンがうまく動作することを確認してください。」と記載している様に、どんな状況下でもエラーが発生しないようにコーディングする必要があります。

もしここでエラーが発生すると、最悪の場合 インスタンス自体が起動できなくなることがあります。

とはいえ、人間ですから、たまに「やらかして」しまうこともあります。

インスタンスが起動せず、
「あわわわわ……」
となった経験がある方もいるのではないでしょうか。

あわわわわ。。。

本記事では、そんな「やらかしからのリカバリー方法」を記載します。

対応方法

リカバリー方法の発想としてはとても単純で、「%ZSTART 内で発生しているエラーが原因でインスタンスが起動できないため、%ZSTART の機能を一時的に停止する」というものです。

そこで、筆者が把握している対応方法は主に次の2つです。

  • cpfファイルを編集して対応する方法
  • 緊急モードで起動し、管理ポータルから対応する方法

それでは、それぞれの方法について順番に確認していきましょう。

cpfファイルを編集して対応する方法

インスタンスの設定情報が記載されている「iris.cpf(cache.cpf)ファイル」を直接修正して、%ZSTARTの機能を停止させます。

インスタンスのインストールディレクトリ直下に「iris.cpf(cache.cpf)」ファイルが配置されています。

該当ファイルを開き、「SystemStart」の設定値を「0」に変更します。

設定値の変更を行ったら、インスタンスを起動させます。

もし、インスタンスが起動したままで、シャットダウンがエラーで実行できない時は、下記記事を参照して強制停止を行ってください。

強制停止後は、念のため各データベースにある「.lck」ファイルを確認してください。
残っている場合は削除します。

無事インスタンスが起動したら、%ZSTART.mac の問題箇所を修正し、 cpfファイル の「SystemStart」の設定値を「1」に戻します。

対応が完了したら、念のためインスタンスを再起動し、正常に起動するか確認を行って下さい。

緊急モードで起動し、管理ポータルから対応する方法

手順が少々面倒ですが、緊急モードの起動方法を知っておくと、様々なトラブルの解決が行えるようになります。

覚えておいて損は無いです。

ザックリした作業手順
  1. コマンドプロンプトを管理者権限で起動する
  2. IRIS(Cache) を緊急モードで起動させる
  3. 仮ユーザで管理ポータルにログインする
  4. 管理ポータル上で「SystemStart」を「偽」に変更する
  5. インスタンスを再起動する
  6. ZSTAET.macの修正を行う。
  7. 管理ポータル上で「SystemStart」を「真」に変更する

では、順番に確認していきましょう。

コマンドプロンプトを管理者権限で起動する

コマンドプロンプトを管理者権限で起動した後、cdコマンドで「<インスタンスのインストールディレクトリ>\bin」フォルダまで移動します。

cd [インストールディレクトリ]\bin

IRIS(Cache) を緊急モードで起動させる

コマンドプロンプトに緊急モードで起動する為のコマンドを入力します。

■IRISの場合

iris start [インスタンス名] /EmergencyId=[仮ユーザ名],[仮パスワード]

■Cacheの場合

ccontrol start [インスタンス名] /EmergencyId=[仮ユーザ名],[仮パスワード]

仮ユーザ名」と「仮パスワード」は何でも良いので簡単な文字列の方が、後々の操作が楽になります。

今回は、仮ユーザ名=「sample」,仮パスワード=「1」としました。
インスタンス名が「CACHE」なので、コマンドの全体は下記になります。

コマンドが成功すると、緊急モードとしてインスタンスが起動します。

仮ユーザで管理ポータルにログインする

管理ポータルを起動すると、先ほど設定したユーザ名とパスワードでログインを行います。

管理ポータル上で「SystemStart」を「偽」に変更する

無事にログイン出来たら、[システム管理] > [構成] > [追加の設定] > [開始] をクリックし、開始設定画面を起動します。

画面が起動したら、「SystemStart」 の項目を 「偽(False)」 に変更します。

この設定は、先ほど説明した .cpfファイルを編集する方法と目的は同じで、今回は画面UIから設定を変更する方法になります。

先ずは、「SystemStart」項目のボタン「編集」をクリックします。

設定変更画面に切り替わるので、チェックボックスをOFFにしてボタン「保存」をクリックします。

SystemStartの値が「」になっていれば、設定変更は完了です。

インスタンスを再起動する

インスタンスを再起動すると、「突然ターミナルが起動」します。

ユーザ名とパスワードを聞かれるので、緊急モード時に設定した「仮ユーザ名」と「仮パスワード」を入力してログインして下さい。
入力後は「Enter」を4回押下します。

<機械翻訳>
・メッセージを誰かにブロードキャストしますか?
・キャッシュステータスレポートを表示しますか?
・ユーザー定義のシャットダウンルーチンを実行しますか?
・システムを停止する準備はできましたか?

この操作によって、緊急モードで使用した仮ユーザ情報が削除されます。

管理ポータル上で「SystemStart」を「真」に変更する

%ZSTART.macの修正に関しては割愛します。

修正後、管理ポータルより「SystemStart」の値を「真」に戻して作業完了です。

おわりに

本記事では、%ZSTART.mac のエラーによってインスタンスが起動できなくなった場合の復旧方法について紹介しました。

%ZSTART.mac(および %ZSTOP.mac)は、インスタンスの起動・停止時に自動実行される便利な仕組みですが、その反面、記述ミスがあるとインスタンス自体が起動できなくなるというリスクもあります。

今回紹介した手順を知っておくことで、万が一のトラブルにも落ち着いて対応することができます。

本記事が、同じような「やらかし」に遭遇した際の参考になれば幸いです。
皆様の安定したIRIS / Caché運用の一助となれば嬉しく思います。