Oracle Restart (Oracle Databaseの自動再起動の構成)
Oracle Database 11gR2からの新機能としてシングルのデータベース・インスタンスに障害が発生した場合自動再起動する機能が追加されました。それゆえに、今までのバージョン(11gR1以前)と大きく構成が変更され現場で戸惑っている方を見かけるのでまとめておきます。
- 混乱する要因
そもそも、Oracle Database 11gR1と11gR2 で大きく仕様が変更されているため、前バージョンの知識で対応すると勘違いしてしまいます。
http://docs.oracle.com/cd/E16338_01/install.112/b56271/typinstl.htm#BABFCDAI
-
- 機能を構成しているものは Oracle Clusterware(Oracle高可用性サービス)でありcrsctlで操作を行います。
- ASMを利用するためにもGIが必要となります。(ちなみにRAWデバイスへのインストールができなくなりました)
- RACの構築を行うためにインストールするソフトウェアもGIであるため、RACとの区別が付きづらく手順を混乱します。
- リスナーはGI配下に作成する必要があります。NETCAを利用するのであればGIインストールORACLE_HOME配下のNETCAを利用する必要があります。(DBインストールORACLE_HOME配下のNETCAを利用すると別のリスナーが作成されてしまう)
- Oracle Restart構成にコンポーネントを追加する必要であるため、DB作成をSQL文(CREATE DATABASE文)で行うと別途srvctlコマンドで登録が必要となるためDBCAを利用した方が無難です。同じくリスナーもlistener.oraファイルを直接作成するよりNETCAを利用した方がよいです。
- GIをインストールするとClusterware, ASM環境が構築されます。
- 操作
- データベース、リスナー、ASM、高可用性サービスの起動・停止方法
$ srvctl {start | stop} databae -d [データベース名]
$ srvctl {start | stop} listener
$ srvctl {start | stop} diskgroup -g [ディスクグループ名]
$ srvctl {start | stop} asm
$ crsctl {start | stop} has
-
- 初期化パラメータをpfileで管理するための設定
DBCAで構築するとspfileで初期化パラメータが作成されるため、対応が必要となりOracle Restart構成にも設定が必要となります。
SQL> create pfile from spfile;
$ srvctl stop database -d <データベース名>
$ srvctl modify database -d <データベース名> -p ''
$ srvctl start database -d <データベース名>
-
- 動作確認
$ crsctl status resource -t
- 余談
VMWare HA 環境であると、ハード障害はVMWare HAが復旧し、Database障害はRestartが対応するためちょうど補完関係になります。ただし、Databaseサーバと同一筺体でAPサーバ(tomcatなど)が動作している場合には、Oracle RestartへAPサーバの監視、復旧サービスを登録する必要があるため少し工夫が必要となります。
前半にRestartの中核機能であるClusterwareのアーキテクチャを説明
http://www.oracle.co.jp/events/jpm111109_11/materials/day3/C-14_DL.pdf
-
- マニュアル