スタンバイ運用において、Oracleリソースの起動、停止、監視処理について説明します。
Oracle インスタンスの起動
Oracle インスタンスの起動処理は以下のようになります。
su - <Oracle ユーザー>
sqlplus /nolog
connect / as sysdba
startup nomount または startup mount
alter database mount (4 で startup nomount を行ったとき)
alter database open
初期化パラメータ・ファイル/サーバー・パラメータ・ファイルの配置
PRIMECLUSTER Wizard for Oracle による Oracle インスタンスの起動では、デフォルトの配置先の初期化パラメータ・ファイルが使用されますので、以下のデフォルトのパスに初期化パラメータ・ファイルを配置 (またはシンボリックリンク) してください。
<$ORACLE_HOME>/dbs/init<$ORACLE_SID>.ora
サーバー・パラメータ・ファイルは動的に変更される資源のため、共用ディスク装置に配置する必要があります。サーバー・パラメータ・ファイルを使用する場合は、“2.2.6 データベースの作成・設定” の例に従って、サーバー・パラメータ・ファイルのパスを初期化パラメータ・ファイルに記述してください。
初期化パラメータ・ファイルを使用する場合は、運用・待機ノードで同一の設定とすることを推奨します。
リカバリー処理
PRIMECLUSTER Wizard for Oracle は、Oracle インスタンスのリカバリーを行い Oracle インスタンスを起動する場合があります。
1. V$BACKUP 表内に ACTIVE な表領域がある場合
2. V$RECOVER_FILE 表内に、リカバリーが必要なファイルがある場合
DBA の認証
PRIMECLUSTER Wizard for Oracle は、Oracle インスタンス、データベースの起動/停止を行う際に SYSDBA システム権限で接続しますが、このときオペレーティング・システム認証によるローカル接続を行います。
Oracle インスタンスの停止
Oracle インスタンスの停止処理は以下のようになります。
オペレーターによる userApplication の手動停止や手動切替えに伴う停止の場合の停止手順は以下のようになります。
su - <Oracle ユーザー>
sqlplus /nolog
connect / as sysdba
shutdown <immediate / abort / transactional> (StopModeStop で設定)
デフォルト : immediate
4.で Oracle インスタンスが停止しない場合、shutdown abort (4.で、abort 以外の場合)
5.で Oracle インスタンスが停止しない場合、バックグラウンド・プロセスに SIGKILL を送信して強制停止
リソース異常 (Oracle リソース以外のリソース異常も含む) に伴う停止の場合以下のような手順になります。
su - <Oracle ユーザー>
sqlplus /nolog
connect / as sysdba
shutdown <immediate / abort> (StopModeFail で設定)
デフォルト : abort
4.で Oracle インスタンスが停止しない場合、shutdown abort (4.で、abort 以外の場合)
4.または 5.で Oracle インスタンスが停止しない場合、バックグラウンド・プロセスに SIGKILL を送信して強制停止
リスナーの起動
リスナーの起動処理は以下のようになります。
su - <Oracle ユーザー>
lsnrctl start <ListenerName>
リスナープロセスが存在することを確認
リスナーの停止
リスナーの停止処理は以下のようになります。
su - <Oracle ユーザー>
lsnrctl stop <ListenerName>
リスナープロセスが存在しないことを確認
3.でリスナープロセスが存在する場合、SIGKILL を送信して強制停止
Oracle ASM インスタンスの起動
Oracle ASM インスタンスの起動処理は以下のようになります。
Oracle Database 10g R2/11g R1/11g R2/12c R1(12.1.0.1)の場合
su - <Oracle ユーザー>
sqlplus /nolog
connect / as sysdba (Oracle Database 11g 以降は connect / as sysasm)
startup mount (既に STARTED 状態の場合は alter diskgroup all mount;)
Oracle Database 12c R1 PSR12.1.0.2以降の場合
su - <Oracle ユーザー>
srvctl enable asm
srvctl start asm
srvctl disable asm
Oracle ASM インスタンスの停止
Oracle ASM インスタンスの停止処理は以下のようになります。
Oracle Database 10g R2/11g R1/11g R2/12c R1(12.1.0.1)の場合
オペレーターによる userApplication の手動停止や手動切替えに伴う停止の場合
su - <Oracle ユーザー>
sqlplus /nolog
connect / as sysdba (Oracle Database 11g 以降は connect / as sysasm)
shutdown <immediate/abort/transactional> (StopModeStop で設定)
デフォルト : immediate
“4”で Oracle ASM が停止しない場合、shutdown abort (“4”で、abort 以外の場合)
“4”または“5”で Oracle ASM が停止しない場合、バックグラウンド・プロセスに SIGKILL を送信して強制停止
リソース異常 (Oracle ASM 以外のリソース異常も含む) に伴う停止の場合
su - <Oracle ユーザー>
sqlplus /nolog
connect / as sysdba (Oracle Database 11g 以降は connect / as sysasm)
shutdown <immediate/abort> (StopModeFail で設定)
デフォルト : abort
“4”で Oracle ASM が停止しない場合、shutdown abort (“4”で、abort 以外の場合)
“4”または“5”で Oracle ASM が停止しない場合、バックグラウンド・プロセスに SIGKILL を送信して強制停止
Oracle Database 12c R1 PSR12.1.0.2以降の場合
オペレーターによる userApplication の手動停止や手動切替えに伴う停止の場合
su - <Oracle ユーザー>
srvctl stop asm -stopoption <immediate/abort/transactional(StopModeStop で設定)> -force
デフォルト : immediate
“2”で Oracle ASM が停止しない場合、以下を実行(“2”で、abort 以外の場合)
sqlplus /nolog
connect / as sysdba (Oracle Database 11g 以降は connect / as sysasm)
shutdown abort
“2”または“3”で Oracle ASM が停止しない場合、バックグラウンド・プロセスに SIGKILL を送信して強制停止
リソース異常 (Oracle ASM 以外のリソース異常も含む) に伴う停止の場合
su - <Oracle ユーザー>
srvctl stop asm -stopoption <immediate/abort(StopModeFail で設定)> -force
デフォルト : abort
“2”で Oracle ASM が停止しない場合、以下を実行(“2”で、abort 以外の場合)
sqlplus /nolog
connect / as sysdba (Oracle Database 11g 以降は connect / as sysasm)
shutdown abort
“2”または“3”で Oracle ASM が停止しない場合、バックグラウンド・プロセスに SIGKILL を送信して強制停止
Oracleインスタンスの監視
Oracle インスタンスの監視処理は以下のようになります。
バックグラウンド・プロセス (PMON, SMON) の存在状況を30秒間隔(固定)で確認。
Oracle インスタンス が起動し、バックグラウンド・プロセス(PMON・SMON)の存在を確認した場合は“2”へ進む。
su - <Oracle ユーザー>
Oracle データベースの SYSTEM ユーザーにて Oracle インスタンスへローカル接続。
Oracle インスタンスのステータスが OPEN であることを確認した場合は“5”へ進む。
バックグラウンド・プロセス (PMON・SMON・DBWn・LGWR・CKPT) の生存を監視。
監視間隔はデフォルト30秒で、設定項目「監視間隔(Interval)」で変更可能です。
「監視間隔(Interval)」に設定された監視間隔でSQL監視を実行。
SQL監視は、SYSTEM ユーザーのデフォルト表領域上の監視用テーブルに対し、SQL(INSERT・UPDATE・DELETE・COMMIT) が正常に実施できるかを確認します。
ただし、前回の SQL 監視からの経過時間をチェックし、60秒以上経過している場合にのみSQL監視を実行します。
24時間に1度、Oracle インスタンスへ再接続。
待機ノードでは、“1”を実行し、バックグラウンド・プロセス (PMON・SMON)が存在しないことを確認します。
SYSTEM ユーザーのパスワード
PRIMECLUSTER Wizard for Oracle による Oracleインスタンスの監視は SYSTEM ユーザーにて行います。“4.3 clorapass - 監視用パスワードの登録”に従って、SYSTEM ユーザーのパスワードを PRIMECLUSTER Wizard for Oracle に登録してください。
監視用テーブル (FAILSAFEORACLE_<ORACLE_SID>)
PRIMECLUSTER Wizard for Oracleは、監視のために監視用テーブルを SYSTEM ユーザーのデフォルト表領域上に作成します (初回起動時や、監視時の監視用テーブルが存在しない場合自動作成されます)。監視用テーブルは削除されません。
WarningとなるOracleデータベース異常
以下の異常を検出した場合 Warning を通知します。(Fault ではないためフェイルオーバはしません)
clorapassコマンドで登録された SYSTEM ユーザーのパスワードが誤っており Oracleインスタンスへ接続できない場合 (ORA-01017を検出)
SYSTEM ユーザーのアカウントがロックされており、Oracleインスタンスへ接続できない場合 (ORA-28000を検出)
SYSTEM ユーザーのパスワードが期限切れとなり、監視機能が Oracleインスタンスに接続できない場合 (ORA-28001を検出)
max session エラー、max process エラーなどで Oracleインスタンスへ接続できない場合 (ORA-00018 や ORA-00020を検出)
監視のSQL 文が一定時間応答せず監視タイムアウトが発生した場合
監視タイムアウトが発生した場合、再度監視を実施し、SQL文から応答があればOnlineを通知します。
フェイルオーバとなる Oracle データベース異常
Oracleデータベースの異常を検出しOfflineを通知した場合、リソース異常となりフェイルオーバします。
Oracleインスタンスリソースの設定で、AutoRecover(A) が有効の場合、リソース異常となる前にリソースを再起動し復旧を試みます。AutoRecover(A) については、「2.2.7.2 Oracle リソースの作成」を参照してください。
以下の場合にOfflineを通知します。
バックグラウンド・プロセス (PMON・SMON・DBWn・LGWR・CKPT)のどれか1つでも存在しない場合
例
以下の場合が該当します。
インスタンスが異常終了した場合
監視を中断せずにインスタンスを停止した場合
SQL文を実行したが Oracleデータベースからエラー (ORA-xxxxx) が返された場合
SQL 監視でエラー (ORA-xxxxx) が発生した場合、Wizard for Oracle は、アクション定義ファイル(/opt/FJSVclora/etc/FJSVclorafm.actionlist) に従った動作を行います。アクション定義ファイルで Of が定義されているORA-xxxxxを検出した場合、異常と判断します。詳細は、「付録G (参考)アクション定義ファイル」を参照してください。
例
以下の場合が該当します。
ORA-4031(共有プール不足)のエラーが発生した場合
SQL文を実行したが監視タイムアウトが2回連続で発生した場合
SQL 文を実行しても300 秒間(デフォルト)応答が無かった場合は「監視タイムアウト」となり、Oracleインスタンスリソースは Warning 状態となります。その後、Oracleインスタンスへ再接続を試みますが、接続処理でも 300秒間応答が無かった場合は、異常と判断します。
監視タイムアウトの300秒は、設定項目「監視タイムアウト(WatchTimeout)」で変更可能です。
例
以下の場合が該当します。
アーカイブログ領域の枯渇などで、Oracleデータベースがハングした場合
システム負荷が高負荷状態の場合
注意
フェイルオーバは、userApplication (クラスタアプリケーション) のAutoSwitchOverの設定に従います。 ResourceFailure(リソース故障時)を有効としている場合は、リソース異常でフェイルオーバします。userApplication (クラスタアプリケーション) の設定については、「PRIMECLUSTER 導入運用手引書」を参照してください。
リスナーの監視
リスナーの監視処理は以下のようになります。
psコマンドを使用し、リスナープロセスの生存を監視。
監視間隔はデフォルト30秒で、設定項目「監視間隔(Interval)」で変更可能です。
「監視間隔(Interval)」に設定された監視間隔でtnsping コマンドを実行。
ネット・サービス名に到達できるかを確認します。
ただし、前回のtnspingコマンド実行からの経過時間をチェックし、60秒以上経過している場合にのみtnspingコマンドを実行します。
注意
本監視は、Oracleリスナーリソースの設定で、TNSName(OracleTNS名)が設定されている場合に実行されます。TNSNameについては、「2.2.7.2 Oracle リソースの作成」を参照してください。
待機ノードでは、“1”を実行し、リスナープロセスが存在していないことを確認します。
監視タイムアウト
tnspingコマンドからの応答が一定時間返らない場合、監視タイムアウトと判定し、Oracleリスナーリソースの状態を Warning にします。監視タイムアウトが2回連続して発生すると、リソース異常と判断してフェイルオーバさせます。
Oracle リスナーからの応答待ち時間 (監視タイムアウト時間) は、設定項目「監視タイムアウト(WatchTimeout)」で変更可能です。
フェイルオーバ
リスナーの異常を検出しOfflineを通知した場合、リソース異常となりフェイルオーバします。
Oracleリスナーリソースの設定で、AutoRecover(A) が有効の場合、リソース異常となる前にリソースを再起動し復旧を試みます。AutoRecover(A) については、「2.2.7.2 Oracle リソースの作成」を参照してください。
以下の場合にOfflineを通知します。
リスナープロセスが存在しない場合
tnspingコマンドがエラーとなった場合
監視タイムアウトが2回連続して発生した場合
注意
フェイルオーバは、userApplication (クラスタアプリケーション) のAutoSwitchOverの設定に従います。 ResourceFailure(リソース故障時)を有効としている場合は、リソース異常でフェイルオーバします。userApplication (クラスタアプリケーション) の設定については、「PRIMECLUSTER 導入運用手引書」を参照してください。
Oracle ASMインスタンスの監視
Oracle ASM インスタンスの監視は行いません。NullDetector フラグが自動的に有効になります。