Oracle ARKが提供する監視機能と起動処理、停止処理についてご説明します。
対象製品
Oracle Recovery Kit (LifeKeeper for Linux)
※本処理概要は LifeKeeper for Linux v9.0.0 に付属するリカバリキットをもとに作成しています。
==== リスナーリソース ===================================================
監視処理
LKCHECKINTERVAL(デフォルト120秒)の間隔で、Oracle ARK の quickCheck を実行します。
監視処理のタイムアウト:15秒
1) リソースの状態が起動中(ISP)であるかを確認します。
リソースが起動中のみ監視処理が続行され、リスナーリソースの情報を ins_list より取得します。
2) /tmp に監視処理用の一時ファイルを作成し、lsnrctl status よりリスナーの状態を取得します。
3) 2)で取得した状態からリスナーが動作しているかどうかを確認します。
動作していなかった場合は、回復処理を実施します。
起動処理
1)リスナーの状態を取得します。
$ lsnrctl status
2)リスナーを起動します。
リスナーが起動していない場合は以下のコマンドで起動します。
$ lsnrctl start
既に起動している場合は処理は正常終了します。
3)リスナーの状態を取得します。
$ lsnrctl status
起動出来なければ処理が異常終了します。
停止処理
1)リスナーの状態を取得します。
$ lsnrctl status
2)リスナーを停止します。
リスナーが停止していない場合は以下のコマンドで停止します。
$ lsnrctl stop
既に停止している場合は処理は正常終了します。
3)リスナーの状態を取得します。
$ lsnrctl status
リスナーが停止出来ていなければ停止失敗として処理が終了します。
(リソース切り替えは行いません)
回復処理
1)リソースの状態を確認します。
$ lsnrctl status
リソースが停止状態の場合はリカバリ処理は中断されます。
2)リスナーが停止していたら起動します。
$ lsnrctl start
3)リスナーの状態を取得します。
$ lsnrctl status
動作していれば正常終了します。
==== Oracleリソース ===================================================
監視処理
監視処理のタイムアウト:45秒(v7.5以前は40秒)
1)Oracle が動作しているかどうかを確認します。
ora_pmon プロセスおよび ora_lgwr プロセスが存在するかどうかを ps コマンドで確認します。
# ps -ewwwwf
2)Oracle の起動状態を確認します。
1.コネクションの状態を確認。
DB へ接続し、以下の SQL を実行します。
SELECT * from dba_data_files;
2.一時ファイルへ ORA エラーが出力されていないか確認。
異常を検出した場合はその旨を知らせるメッセージが lifekeeper.log に出力されます。
障害と判定された場合、ローカルリカバリ機能により同じサーバ上でOracleの再立ち上げを試行します。
起動処理
起動処理のタイムアウト:240秒(v7.5以前はタイムアウト無し)
1)インスタンスを確認します。
2)Oracle の SID を確認します。
3)sqlplus が利用できるかどうかを確認します。
4)Oracle の起動状態を確認します。
監視処理の1)と2)を実施します。
5)startup コマンドで Oracle を起動させます。
起動しない場合は startup force オプションで再試行します。
停止処理
停止処理のタイムアウト:240秒(v7.5以前はタイムアウト無し)
1)インスタンスを確認します。
2)Oracle の SID を確認します。
3)sqlplus が利用できるかどうかを確認します。
4)Oracle の起動状態を確認します。
監視処理の1)を実施します。
5)shutdown コマンドで Oracle を停止させます。
停止しない場合は shutdown abort で強制停止を行います。
回復処理
回復処理は監視処理で異常と判断された場合に実施されます。
1)Oracle の SID を確認します。
2)Oracle リソースが ISP かどうかを確認します。
3)sqlplus が利用できるかどうかを確認します。
4)Oracle の起動状態を確認します。
監視処理の1)を実施します。
Oracle のプロセスが起動していなければ 5)へ進みます。
Oracle のプロセスが起動している場合、監視処理の 2)を実施します。
Oracle のプロセスが起動している、かつ、Oracle への接続処理に問題が無ければ
Oracle は起動していると判断し、回復処理は正常終了します。
5)Oracle を shutdown abort で強制終了します。
Oracle が停止出来ない場合、回復処理は異常終了しリソース異常となります。
6)Oracle を起動させます。
startup を実行し、失敗したら startup force で起動を試みます。
startup force でも起動が行えない場合、回復処理は異常終了しリソース異常となります。
7)Oracle の起動状態を確認します。
監視処理の1)、2)を実施します。
Oracle の起動が確認出来たら、回復処理は正常終了します。
Oracle の起動が確認出来ない場合、回復処理は異常終了し、リソース異常となります。
==== 関連パラメータ ===================================================
下記テクニカルドキュメントにおいて、Oracle Recovery Kit のパラメータ名とその意味を説明しています。
Oracleパラメータ一覧
http://jpdocs.us.sios.com/Linux/9.0/LK4L/Parameters/index.htm#Parameters/Oracle_Parameters.htm
http://docs.us.sios.com/spslinux/9.4.0/ja/topic/oracle-parameters-list
※デフォルトではすべての設定項目が未記載となります。
※設定を変更したい項目を /etc/default/LifeKeeper へ設定してください。
ORACLE_ORATABLOC
oratab ファイルが /etc ディレクトリ、または /var/opt/oracle ディレクトリ以外に
配置される場合に、oratab ファイルが配置されているディレクトリを指定します。
デフォルト値:/var/opt/oracle
※本パラメータは Listener リソースと共通です。
LK_ORA_NICE
最大許容接続に達した時に、原因となるデータベース接続障害に対してリカバリを試み
るかどうかを指定します。
0: リカバリ実行
1: リカバリ回避(実行しない)
デフォルト値:0
<参考>
Oracle データベースアカウントに対するユーザ名 / パスワードの変更
http://jpdocs.us.sios.com/Linux/9.1/LK4L/Oracle/index.htm#Oracle/Changing_Username_Password_for.htm
ORACLE_QUICKCHECK_TIMEOUT
監視処理時のタイムアウトを指定します。
デフォルト値:45(秒)(v7.5以前は 40)
ORACLE_RESTORE_TIMEOUT
リソース起動処理時のタイムアウトを指定します。
デフォルト値:240(秒)(v8.0 ~ v9.3.2 まで)
300(秒)(v9.4 以降)
※v7.5以前は タイムアウト無し
ORACLE_REMOVE_TIMEOUT
リソース停止時のタイムアウトを指定します。
デフォルト値:240(秒)(v8.0 ~ v9.3.2 まで)
300(秒)(v9.4 以降)
※v7.5以前は タイムアウト無し
リスナーにつきましては下記 URL をご参考ください。
Oracleリスナーリソースのチューニングパラメータhttps://lkdkuserportal.zendesk.com/hc/ja/articles/360037734251
改訂履歴
[公開日:2017年3月31日]
[改訂日:2017年6月22日]
[改訂日:2020年8月18日]