[Windows] Oracle Recovery Kit の処理概要

Oracle リカバリーキットが提供する監視機能についてご説明します。

対象製品
・Oracle リカバリーキット (LifeKeeper for Windows)
 ※本処理概要は LifeKeeper for Windows v8.3 に付属するリカバリキットをもとに作成しています。
 
クイックチェック (quickCheck)

Windows の sc コマンドを使用して得られるサービスのステータスから、以下の Core サービスの起動状態を確認します。
・Oracle サービス
・Oracle Listener サービス
また、Oracle リソース作成時にオプションの保護サービスを追加した場合には、同様にsc query コマンドを使用して該当サービスのステータスを確認します。
 

sc query [サービス名]

サービスステータスに対する監視結果は以下となります。

RUNNNING:
サービスが正常に起動していると判断し、監視処理を終了します。

RUNNING 以外:
障害とみなします。
この監視によって障害が検出された場合、検出したサービスによって以下のようなメッセージをイベントログに出力し、監視失敗として処理を終了します。

Oracle サービス、Oracle Listener サービスのとき

Error 2103 "Core service [サービス名] is not running on system [ノード名]."

任意に追加したオプションサービスのとき

Warning 2104 "Optional service [サービス名] is not running on system [ノード名]."

 

詳細チェック (deepCheck)

(1) クイックチェックを実施します。
 
(2) Oracle インスタンスへの接続確認
  Oracle の sqlplus コマンドを使用して、リソース作成時に指定されたユーザ名とパスワードでインスタンスに接続します。

  接続後、以下の SQL を実行してエラーが発生しない事を確認し、エラーが発生していない場合は監視成功として処理を終了します。

select file_name from dba_data_files;

  SQL クエリ実行結果について、クエリエラーを示す ERROR: が発生した場合、以下のようなメッセージをイベントログに出力し、監視失敗として処理を終了します。

Error 2842 "Error: An unexpected Oracle error has occurred. The SQL FILE_NAME Report identified the error as follows: $SqlOutput"

  ORA-01034 エラーが発生した場合、イベントログへ以下のようなメッセージを出力し、監視失敗として処理を終了します。

Error 2846 "Error: An Oracle Error 1034 \"Oracle Not Available\" has occurred.  The SQL FILE_NAME report identified the error as follows: $SqlOutput."

  ユーザ名・パスワードの誤りを示す ORA-01017 エラーが発生した場合、イベントログへ以下のようなメッセージを出力します。
  ただし、監視成功と判断して処理を終了します。

Error 2843 "Error: Invalid username/password combination found for Oracle SID [SID名]. Please use the UpdateLKOra utility to reset to the correct values."

 

起動処理 (restore)

(1) Oracle サービス の起動状況を確認します。

sc query [サービス名]

サービス起動状態により、以下の処理を行います。

RUNNNING:
既にサービスが正常に起動しているとみなし、ディープチェックを実施します。
ディープチェックに成功した場合、起動完了とみなして起動処理を終了します。
ディープチェックに失敗した場合、sc stop [サービス名] コマンドを実施してサービスを停止します。その後 (2) へ進みます。

STOPPED:
サービスが停止していると判断し、(2) へ進みます。

RUNNING、STOPPED 以外:
サービスの起動中、あるいは停止中と判断し、sc stop [サービス名] を実施して サービスを停止します。
サービス停止後、(2) へ進みます。

(2) サービスに対して起動状況を取得するため、以下コマンドを実行します。

$LKBIN/ScQueryState [サービス名]

(2-1) 取得したサービスの状態が RUNNING 以外の場合、以下のコマンドを実行します。

sc start [サービス名]

   サービスを起動できた場合、(3) へ進みます。
   サービスを起動できなかった場合、以下のメッセージをイベントログへ出力し、起動失敗と判断して起動処理を終了します。

Error 2853 "Unable to start [サービス名] on system [ノード名]."

(2-2) 既にサービスの状態が RUNNING の場合、(3) へ進みます。

(3) Oracle Listener サービスに対し、(1)、(2) の処理を行います。
  Oracle Listener サービスの起動に成功した場合、(4) へ進みます。

(4) オプションサービスも保護する場合は、Oracle 本体のサービス起動完了後に、オプションサービスについてサービス起動状況を取得するため、各々以下コマンドを実行します。

$LKBIN/ScQueryState [オプションサービス名]

  オプションサービスを保護しない場合は、(5) へ進みます。

(4-1) 取得したサービスの状態が RUNNING 以外の場合、以下のコマンドを実行します。

sc start [オプションサービス名]

   サービスを起動できた場合、次のオプションサービスの起動処理を行い、すべてのサービスの起動完了後 (5) へ進みます。
   サービスを起動できなかった場合、以下のメッセージをイベントログへ出力し、起動失敗と判断して起動処理を終了します。

Warning 2854 "Unable to start [オプションサービス名] on system [ノード名]." 

(5) サービス起動後、ディープチェックを実施します。

(5-1) ディープチェックに成功した場合、以下のメッセージをイベントログへ出力し、起動成功として起動処理を終了します。

Information 2302 "RESTORE Oracle [リソース名] : deepchk success."
Information 2311 "LifeKeeper: RESTORE Oracle [リソース名] END - successful."

(5-2) ディープチェックに失敗した場合、以下のメッセージをイベントログへ出力し、起動失敗と判断して起動処理を終了します。

Warning 2303 "RESTORE Oracle [リソース名] : deepchk fails."

 

停止処理 (remove)

(1) オプションで保護するサービスが存在する場合には各サービスを停止するため、以下のコマンドを実行して各オプションサービスの起動状況を1つずつ取得します。
  オプションのサービスが存在しない場合、(2) へ進みます。

$LKBIN/ScQueryState.exe [オプションのサービス名]

  取得したサービスの状態が STOPPED 以外の場合、以下のコマンドを実行してサービスを停止します。

sc stop [オプションのサービス名]

  オプションサービスの停止に成功した場合、次のオプションサービスの停止処理を行います。
  オプションサービスの停止に失敗した場合、以下のようなメッセージをイベントログへ出力します。ただし、停止処理の失敗とせずに次のサービスの停止処理を行います。

Warning 2882 "Unable to stop [オプションのサービス名] on system [ノード名]."

(2) Oracle Listener のサービスを停止するため、以下のコマンドを実行してサービス起動状況を取得します。

$LKBIN/ScQueryState.exe [Oracle Listener のサービス名]

  取得したサービスの状態が STOPPED 以外の場合、以下のコマンドを実行してサービスを停止します。

sc stop [Oracle Listener のサービス名]

  Oracle Listener のサービスの停止に成功した場合、(3) へ進みます。
  Oracle Listener のサービスの停止に失敗した場合、以下のようなメッセージをイベントログへ出力し、停止処理に失敗したと判断して停止処理を終了します。

Error 2883 "Unable to stop [Oracle Listener のサービス名] on system [ノード名]."

(3) Oracle サービスを停止するため、以下のコマンドを実行してサービス起動状況を取得します。

$LKBIN/ScQueryState.exe [Oracle サービス名]

  取得したサービスの状態が STOPPED 以外の場合、以下のコマンドを実行してサービスを停止します。

sc stop [Oracle サービス名]

  Oracle サービスの停止に成功した場合、すべての Oracle に関連するサービスの停止に成功したと判断し、以下のようなメッセージをイベントログへ出力し、停止処理を終了します。

Information 2510 "LifeKeeper: REMOVE Oracle [リソース名] END - successful."

  Oracle サービスの停止に失敗した場合、以下のようなメッセージをイベントログへ出力し、停止処理に失敗したと判断して停止処理を終了します。

Error 2883 "Unable to stop [Oracle サービス名] on system [ノード名]."

 

回復処理 (recover)

起動処理 (restore) と同一の処理を行います。
 


改訂履歴

[公開日:2010年1月29日]

[更新日:2017年2月15日]
以下の処理概要を追加しました。
・起動処理(restore)
・停止処理(remove)
・回復処理(recover)

return top