Oracle Fail Safeにより、Microsoft Windowsフェイルオーバー・クラスタを使用して構成されたWindowsクラスタで稼働しているシングルインスタンスOracle Database(Oracle Database Personal Editionを除く)の可用性が向上します。
シングルインスタンスOracle Databaseの可用性を高めると、1つのクラスタ・ノードが停止または故障した場合でも、別のクラスタ・ノードでデータベースが再起動され、そのデータベースにアクセスするアプリケーションとデータベースとの接続が失われるのはほんの一瞬にすぎません。透過的アプリケーション・フェイルオーバーの使用後、アプリケーションは自動的にデータベースに再接続できるため、フェイルオーバーがユーザーの作業に悪影響を与えることはありません。
この章では、以下のトピックについて説明します。
次の項では、スタンドアロン・シングルインスタンス・データベースのためのOracle Netの構成について簡単に説明します。
リスナーの定義でシステムのホスト名が使用されている場合、このリスナーはホスト名に関連付けられているIPアドレスのみではなく、ノード上のすべてのIPアドレスでリスニングを行います。ローカル・リスナーは、グループに割り当てられているIPアドレスをリスニングする際にクラスタ・グループ・リスナーの障害の原因となるクラスタIPアドレスも開きます。
この問題を回避するために、リスナーにはホスト名ではなくホスト・エントリのノードIPアドレスを使用する必要があります。Oracle Fail Safeがクラスタ・グループを検証するかデータベースをグループに追加する場合、HOSTがローカル・ノードのホスト名に設定されているADDRESSエントリを検索します。ローカル・ノード名を使用するすべてのHOSTエントリは、ノードのIPアドレスを使用するように変更されます。
Oracle Fail Safe環境での無効なエントリの例を次に示します。
LISTENER = .... (ADDRESS= (PROTOCOL=TCP) (HOST=NTCLU-152) (PORT=1521) )
Oracle Fail Safe環境での有効なエントリの例を次に示します。
LISTENER = .... (ADDRESS= (PROTOCOL=TCP) (HOST=192.0.2.254) (PORT=1521) )
可用性が高まるようにデータベースが構成されている場合、Oracle Fail Safeではデフォルト・リスナーの調整を行います。この調整は、スタンドアロン・データベースを含むすべてのデータベースのOracle Net構成に影響を与えます。その結果、クラスタ内のデータベースが可用性が高まるように構成されている場合、Oracle Fail Safe環境のすべてのスタンドアロン・データベースのOracle Net構成を調整する必要があります。
スタンドアロン・シングルインスタンス・データベースの共有サーバーの構成がデフォルト・リスナーに依存している場合、データベース・パラメータ・ファイル内にリスナー・パラメータが指定されていません。(デフォルト・リスナーとは、ノードのホスト名、デフォルト・ポート番号およびTCPプロトコルをリスニングするリスナーです。)この場合、Oracle Fail Safeでホスト名ではなくIPアドレスを使用するようにデフォルトのリスナーが変更されると、その構成が機能しなくなります。
Oracle Fail Safeはスタンドアロン・データベース・リスナーを検索する際、リスナーのWindowsサービスをスキャンして、データベースによって使用されているネットワーク・アドレスでリスニングしているものを探します。ネットワーク・アドレスにリスナーが複数存在する場合、Oracle Fail Safeは実行中のリスナー・サービスを選択します。どのリスナーも起動されていない場合、ネットワーク・アドレスでリスニングしているリスナーで最初に検出されたものがOracle Fail Safeによって選択されます。
注意:
ネットワーク構成エラーを回避するために、Oracle Fail Safeのどの操作においても、実行前にスタンドアロン・シングルインスタンス・データベースのリスナーが予定どおりの状態(停止または起動)であることを確認してください。
可用性が高まるようにシングルインスタンスOracle Databaseを構成するには、少なくとも1つのネットワーク名が含まれているグループにデータベースを追加します。Oracle Fail Safeにより、シングルインスタンスOracle Databaseで必要なすべてのリソースが追加されます。通常、このグループには次のリソースが含まれます。
それぞれが1つのIPアドレスおよびネットワーク名から構成される1つ以上のネットワーク名
Oracle Databaseインスタンス
Oracle Databaseで使用する全ディスク
グループのネットワーク名上でグループ内のデータベースへの接続要求をリスニングするOracle Netネットワーク・リスナー
シングルインスタンス・データベースをグループに追加する前に、次の前提条件に注意してください。
データベース初期化パラメータ・ファイルを除き、シングルインスタンス・データベースにより使用されるファイルはすべて共有クラスタ・ディスク上に置く必要があります。データベース初期化パラメータ・ファイルは、プライベート・ディスクにも共有クラスタ・ディスクにも配置できます。初期化パラメータ・ファイルの配置の詳細は、「データベース・パラメータの識別」を参照してください。
リソースが属するグループは1つのみです。2つのシングルインスタンス・データベースが同じディスク・ドライブを共有する場合は、この2つのデータベースを同一グループ内に指定する必要があります。
フェイルオーバーの際、一時表内のデータはフェイルオーバーされません。(ソートやハッシュ結合など)一時表や一時表領域を使用する操作では、フェイルオーバー・ノードで再起動されるときに必要な一時オブジェクトが再作成されます。ただし、一時表内の特定のデータに依存するアプリケーションが正常に機能することを確認する必要があります。
一時表の詳細は、『Oracle Database概要』の一時表に関する説明を参照してください。
グループには、少なくとも1つのネットワーク名が含まれている必要があります。
データベース・サービス名がクラスタ全体で一意になるようにする必要があります。
グループ内のすべてのリスナーおよびデータベースは同じOracleホームを使用している必要があります。
Oracle Fail Safeでは、マウントされたフォルダ(マウント・ポイント)やOracleデータベースで使用されるファイルのシンボリック・リンクの使用をサポートしていません。たとえば、制御ファイルやサーバー・パラメータ・ファイルは、ファイルを表す実際のファイル名以外のファイル名で参照できません。クラスタ共有ボリュームに格納され、C:\ClusterStorage
ルート・フォルダを使用するファイルはサポートされます。
データベースを起動するにはテキスト初期化パラメータ・ファイル(PFILE
)を使用する必要があります。oradimユーティリティを使用して、PFILE
の場所を設定します。
表7-1に、可用性が高まるようにシングルインスタンスOracle Databaseを構成する際に必要な作業の一覧を示します。各作業の詳細は、オンライン・ヘルプとチュートリアルを参照してください。オンライン・ヘルプにアクセスするには、Oracle Fail Safe Managerウィンドウの右側のペインの「アクション」メニューから「ヘルプ」を選択します。または、Oracle Fail Safe Managerの中央のペインの「Fail Safeドキュメント」を選択し、順を追った詳細な説明は「チュートリアル」の「HTML」または「PDF」バージョンを選択します。
表7-1 データベースを構成する手順
手順 | プロシージャ | Oracle Fail Safe Managerでの手順 |
---|---|---|
1 |
Oracle Databaseの可能所有者となるクラスタの各ノードのプライベート・ディスク上に、Oracle Databaseソフトウェアがインストールされていることを確認します。 |
インストールの情報は、Oracle Databaseのマニュアルを参照してください。 |
2 |
グループを作成し、1つ以上のネットワーク名を追加します。 |
|
3 |
サンプル・データベースを作成(必要な場合)します。 |
「Oracleリソース」ビューで、画面右側のペインの「アクション」メニューから「サンプル・データベースの作成」アクションを選択します。このサンプル・データベースを使用して、Oracle Fail Safeの機能を本番データベースで使用する前に試すことができます。サンプルは、本番作業用には使用しないでください。 |
4 |
スタンドアロン・データベースを検証します。 |
「使用可能なOracleリソース」リストから検証するリソースを選択し、「Oracleリソース」ビューの「アクション」メニューから「検証」を選択します。この操作では、有効性検査を実行し、スタンドアロン・データベースが常駐するノード上に正しく構成されているかどうかを確認して、もう一方のクラスタ・ノードに存在するデータベースへの参照を削除します。 |
5 |
Oracle Databaseをグループに追加します。 |
「使用可能なOracleリソース」リストから追加するリソースを選択し、「Oracleリソース」ビューの「アクション」メニューから「リソースの追加」を選択します。これにより、可用性が向上するようにシングルインスタンスOracle Databaseを構成できます。 |
6 |
仮想サーバーを認識するようにクライアントを構成します(ネットワーク構成ツールを使用して各クライアント・システム上の |
Oracle Fail Safe Managerには、可用性が向上するようにシングルインスタンスOracle Databaseを構成する際に役立つリソースをグループに追加ウィザードがあります。ウィザードで表示されるページは、現在グループに含まれているネットワーク名の数と、クラスタ内のノード数によって異なります。
各グループに1つのネットワーク名が含まれる構成が典型的ですが、複雑な構成では複数のネットワーク名が含まれる場合もあります。リソースをグループに追加ウィザードを使用して典型的な構成を実行するには、次のデータが必要です。
インスタンス名およびデータベース初期化パラメータ・ファイルのファイル指定などのシングルインスタンスOracle Databaseの識別情報
OS認証が使用されていない場合はデータベースのSYS
パスワード
現在複数のネットワーク名が含まれているグループにデータベースを追加する場合、リスナーのネットワーク名も指定するよう求められます。
次の項では、シングルインスタンス・データベースの構成要件について詳細に説明します。
Microsoftフェイルオーバー・クラスタでは、リソース名に任意のテキスト文字列を使用できます。デフォルトで、Oracle Fail SafeではデータベースのインスタンスIDを使用します。必要に応じて、この名前をもっとわかりやすい名前に変更できます。たとえば、ここではクラスタ・リソース名がTest Databaseに変更されています。
データベースをグループに追加する際に、クラスタが3つ以上のノードから構成されている場合は、図7-2に示すように、選択済ノードのリストを指定して、データベースの可能所有者となるノードを指定するように求められます。特定のノードをデータベースの可能所有者として指定しない場合は、そのノードを「選択済ノード」リストから選択して、左矢印をクリックします。
「リソースの「可能所有者ノード」リスト」では、「可能所有者ノード」リストの概念の詳細を説明しています。
シングルインスタンス・データベースをグループに追加する際に、クラスタが2つ以上のノードで構成されており、そのうちの1つ以上のノードが使用できない場合、どのノードをデータベースの可能所有者とするのかを指定するように求められます。このような場合、図7-3に示すように、ウィザード・ページには使用できないノードが表示されます。
シングルインスタンス・データベースを追加するグループに複数のネットワーク名が含まれている場合、図7-4に示すように、「リソースをグループに追加」ウィザードによってリスナーのネットワーク名を指定するよう求められます。ネットワーク名が1つしか含まれていないデータベースを追加する場合には、このページは表示されません。
Oracle Fail Safeでは、1つのグループに複数のネットワーク名がサポートされます。グループ内のすべてのデータベースは同じネットワーク名を使用する必要があり、グループにデータベースを追加する前にネットワーク名がグループに追加される必要があります。グループの作成順序は、次のとおりです。
たとえば、グループに2つのネットワーク名を持つデータベースが含まれ、2番目のデータベースをそのグループに追加する場合、2番目のデータベースは、グループに構成されていた最初のデータベースと同じネットワーク名を使用する必要があります。Oracle Fail Safe Managerは、グループに追加したすべてのシングルインスタンス・データベースで同じネットワーク名が使用されていることを確認します。
複数のネットワーク名を持つグループ内にリソースを構成する方法の詳細は、「複数のネットワーク名を使用した構成」を参照してください。
リソースをグループに追加ウィザードでは、図7-5に示すように、可用性が高まるように構成されるシングルインスタンス・データベースを一意に識別する、データベース・パラメータ情報を入力する必要があります。
Oracle Fail Safeでは、(たとえば、tnsnames.ora
ファイルを更新する場合)このデータを使用してデータベースがクラスタ内に構成されます。また、ユーザーが入力したデータがMicrosoft Windowsフェイルオーバー・クラスタに渡され、データはMicrosoft Windowsフェイルオーバー・クラスタに登録されて、データベースがオンラインまたはオフラインになるとき、あるいはIs Aliveポーリングが実行されるときに使用されます。Oracle Fail Safeは、初期化パラメータ・ファイルの名前と場所を要求します。
Oracle Databaseの起動時には、初期化パラメータ・ファイルを使用してデータベース名、メモリーの割当て量、制御ファイル名、各種の制限事項、およびその他のシステム・パラメータが指定されます。
通常は、どのクラスタ・ノードがデータベースのホストであるかにかかわらずパラメータ・ファイルにアクセスできるように、パラメータ・ファイルはクラスタ・ディスク上に配置します。ただし、データベースが稼働するように構成されたすべてのクラスタ・ノードの同じ場所に初期化パラメータ・ファイルを置くことが確実な場合は、各ノードのプライベート・ディスクにファイルのコピーを配置することも可能です。また、ホストになっているノードに応じてデータベースに異なるパラメータを設定するために、各ノードのプライベート・ディスクにパラメータ・ファイルを配置することもできます。ノード間でメモリー量または処理能力に差がある場合は、このような方法が有効です。
注意:
可用性が高まるようにデータベースを構成した後、必要に応じて初期化パラメータ・ファイルを移動できます。この操作の実行方法の詳細は、Oracle Fail Safe Managerのヘルプを参照してください。
Oracle Fail Safeでは、「パラメータ・ファイル」フィールドでテキスト初期化パラメータ・ファイル(PFILE
)を指定する必要があります。バイナリ・サーバー・パラメータ・ファイル(SPFILE
)を、可用性が高まるように構成されたデータベースとともに使用する場合は、SPFILE
SPFILE-location
パラメータを使用して、PFILE
内でSPFILE=
の位置を指定します。SPFILE
は、データベースが常駐するクラスタ・グループのメンバーである共有ディスクに常駐する必要があります。たとえば、PFILE
に次のようなパラメータを含めることが可能です。
SPFILE=F:\OFSDB\oradata\OFS1\spfileTestDboradb.ora
(Oracle Fail Safeで使用するPFILE
内にSPFILE
を指定する場合、そのSPFILE
をエクスポートする際には注意が必要です。ファイル指定なしでCREATE PFILE FROM SPFILE
コマンドを使用すると、Oracle Fail Safeで使用するPFILE
が上書きされます。SPFILE
をエクスポートするPFILE
には必ず一意のファイル名を指定してください。サーバー・パラメータ・ファイルの詳細は、『Oracle Database管理者ガイド』を参照してください。)
クラスタの各ノードのすべてのOracleデータベース・インスタンスは同じSPFILE
を使用する必要があり、ファイルは共有記憶域に存在する必要があります。SPFILE
が共有記憶域に保存されていない場合、次のようにして、SQL*PLUS
を使用してコピーを作成します。
CREATE SPFILE=shared disk path\spfiledb_unique_name.ora
SPFILE=
shared disk path
\spfile
db_unique_name
.ora
という名前が含まれるPFILE
、ORACLE_HOME
\dbs\initsid.ora
を作成します。
ORA_DBA
グループ
ORA_
SID
_DBA
グループ
またはデータベースに関連付けられているORA_
home
_DBA
グループ。
SYS
アカウントを使用してデータベースにアクセスする必要があります。Oracleデータベースがクラスタ・グループに追加されると、Oracle Fail SafeはORA_sid_DBA
およびORA_sid_OPER
ローカル・ユーザー・グループがデータベースを所有するクラスタ・ノードに存在するかどうかを確認します。これらのローカル・グループが存在する場合は、クラスタ内の他のノードにレプリケートされます。Fail Safeでは、ローカル・ユーザー名など、そのノードに固有のグループ・メンバーはコピーされません。組込みメンバーはコピーされます。たとえば、管理者メンバーは他のノードにコピーされます。ローカル・グループにメンバーがない場合は、無視されます。
図7-6に示すように、Oracle Fail Safeでデータベースおよびデータベース・インスタンスにアクセスする際に、オペレーティング・システム認証とSYS
アカウントのどちらを使用するかを、このページから指定できます。
クラスタ内のすべてのデータベースでオペレーティング・システム認証が有効になっている場合(Fail Safeサーバーのユーザー名がORA_DBA
ユーザー・グループのメンバーである場合)、「オペレーティング・システム認証を使用」オプションがデフォルトで選択されており、変更できません。
クラスタワイドでオペレーティング・システム認証が有効になっていない場合、特定のデータベースに対して「オペレーティング・システム認証を使用」を選択するか(Fail Safeサーバー・ユーザーがORA_SID_DBA
ユーザー・グループに追加されます)、「SYSアカウントを使用」を選択して、データベースSYS
アカウントと関連するパスワードを使用してFail Safeを認証する必要があることを指定できます。
Oracleホーム・ユーザーが構成されている場合、Oracle Fail SafeによってOracleホーム・ユーザー用にパスワード・フィールドのセットが追加で表示されます。Oracleホーム・ユーザーのパスワードも必ず入力してください。
Oracle Fail Safeによりスタンドアロン・データベースに関連付けられたパスワード・ファイルがあることが検出されると、図7-8に示すように、フェイルセーフ・データベースのすべての可能所有者ノードにパスワード・ファイルをOracle Fail Safeで作成するかどうかをウィザードによって尋ねられます。
「はい、パスワード・ファイルを作成します」オプションを選択することをお薦めします。パスワード・ファイルは、リモート操作を実行する場合に必要となります。たとえば、Recovery Manager(RMAN)では、セキュリティ保護されていないOracle Net接続でターゲット・データベースに接続する際にパスワード・ファイルが必要となります。
「いいえ、パスワード・ファイルを作成しません」オプションを選択すると、すべてのユーザーはオペレーティング・システム認証を使用してデータベースにアクセスする必要があります。さらに、ユーザーはデータベース管理のリモート操作を実行できません。
Oracle Fail Safeでは、データベースの可能所有者ノードであるすべてのクラスタ・ノードにパスワード・ファイルを作成するかどうかの選択に応じて、データベース初期化パラメータ・ファイルが次のように調整されます。
はい、パスワード・ファイルを作成します
REMOTE_LOGIN_PASSWORDFILE
パラメータをEXCLUSIVE
に設定します。
「いいえ、パスワード・ファイルを作成しません」を選択する場合
REMOTE_LOGIN_PASSWORDFILE
パラメータをNONE
に設定します。
データベースをグループに追加した後でSYS
アカウントのパスワードを変更する場合は、Oracle Fail Safe Managerを使用してパスワードを更新する必要があります。データベースをグループに追加した後でこのアカウントのパスワードを更新する方法の詳細は、「SYSアカウントのパスワードの変更」を参照してください。
シングルインスタンス・データベースをグループに追加すると、Oracle Fail Safeでは、Oracle Netリスナー・リソースおよびデータベース・リソースがグループに作成および構成されます。スタンドアロン・データベースがグループに追加されたときに使用しているリスナーに基づいて、新規グループのリスナーが構成されます。新規リスナーには、元のリスナーと同じパラメータが設定され、元のリスナーのアドレス・リストと同じポート番号を使用します。
通常の操作中、クラスタは定期的にリスナーをポーリングし、Windowsサービスが起動されており、リスナーがステータス・コマンドに応答するかどうか検証されます。それらのチェックが失敗すると、リスナーが停止され、クラスタはフェイルオーバー・ポリシーを開始して、リスナー・リソースを再起動する必要があるか、またはグループを別のノードにフェイル・オーバーする必要があるかが決定されます。Oracleクラスタ・リソースのコントロール・マネージャが検出したリソースの障害はすべてWindowsアプリケーションのイベント・ログに記録されます。
Oracle Fail Safeでは、データベースと、リスナーに関連付けられたIPアドレス(リスナーそのものではない)との間に依存性を作成します。この依存性は、データベースに接続する前にIPアドレスがオフライン化された場合に、クライアントの応答が停止するという状況を避けるために作成されます。
(データベースを含む)ネットワーク・オブジェクトは、ネットワーク・アドレスによって識別されます。クライアントとデータベース間を接続するには、クライアントのtnsnames.ora
ファイル内のネットワーク・アドレスと、サーバーのlistener.ora
ファイル内のネットワーク・アドレスが一致している必要があります。つまり、クライアントがネットワーク・アドレスを使用してネットワーク・オブジェクトの特定の場所に接続要求を送ると、受け側は、このアドレス上で要求をリスニングし、クライアント情報と一致するアドレス情報に基づいて接続を許可します。
シングルインスタンス・データベースをグループに追加すると、Oracle Fail Safeでは、データベースが常駐するOracleホーム内にグループのリスナーを作成します。Oracle Fail Safeがネットワーク名情報を構成する際、データベースの所有者の可能性のあるクラスタ・ノードのすべてのOracleホームでtnsnames.ora
ファイルを更新します。これによって、Oracle Fail Safeで常に最新の構成でデータベース・インスタンスにアクセスできるようになります。
次の項で説明するように、シングルインスタンス・データベースをグループに追加すると、Oracle Fail Safeによりtnsnames.ora
ファイル、listener.ora
ファイルおよびsqlnet.ora
ファイル内のデータベースのOracle Net構成が変更されます。
TNS_ADMIN環境変数が存在する場合、Oracle Fail Safeは、OracleホームではなくTNS_ADMIN環境変数でポイントされるディレクトリのネットワーク構成ファイルを更新します。
まず、Oracle Fail Safeによってtnsnames.oraファイルがスキャンされ、データベースを参照するネット・サービス記述子が存在するか確認されます。既存の記述子は、グループのTNSリスナーのアドレス・リストを使用するよう変更されます。
次に、データベースのservice_namesパラメータで検出された各サービス名について、Oracle Fail Safeはtnsnames.oraファイルにネット・サービス記述子が存在するか確認します。
ネット・サービス記述子が検出されなかった場合、Oracle Fail Safeにより、グループのリスナー・アドレス・リストに一致するアドレス・リストが含まれる新しいネット・サービス記述子が作成されます。ノードに複数のOracleホームが存在し、TNS_ADMIN環境変数が設定されていない場合、データベースのすべてのネット・サービス記述子が、他のOracleホームのtnsnames.oraファイルに複製されます。
同様に、新しいネット・サービス記述子も、クラスタに含まれる他のすべてのノードのtnsnames.oraファイルに複製されます。
グループにシングルインスタンス・データベースを追加する際に、Oracle Netサービス名にドメイン名を指定しない場合、次のようにOracle Fail Safeによってドメイン名が選択され、ネット・サービス名に追加されます。
Oracle Fail Safeにより、ノードの最新データベース・バージョンのOracleホームでデフォルトのドメイン名が検索されます。検出された場合、このデフォルトのドメイン名がネット・サービス名に追加されます。たとえば、ノード上で最もバージョンが新しいデータベースはOracle Database 12cであると仮定します。Oracleネット・サービス名にMyDB
と指定した場合に、Oracle Database 12cホームでのデフォルトのドメイン名がexample.com
であれば、ネット・サービス名はMyDB.example.com
となります。
ノード上で最もバージョンが新しいデータベースのOracleホームに、デフォルトのドメイン名がない場合、ネット・サービス名には何も追加されません。たとえば、MyDB
と指定した場合、ネット・サービス名もMyDB
となります。
次の例に示すように、アーカイブ・ログの宛先をサービス名として定義した場合、どのクラスタ・ノードでもtnsnames.ora
ファイルが自動的に更新されなくなります。各クラスタ・ノードで、サービス名エントリを手動で編集するか、tnsnames.ora
ファイルに追加します。
log_archive_dest_2='SERVICE=standby OPTIONAL REOPEN=120'
データベースに接続するすべてのクライアント・システムにおいて、データベースを参照する各ネットワーク・サービス記述子のアドレス・リストのHOST
パラメータに、クラスタ・グループのネットワーク名を使用するよう、tnsnames.oraファイルが更新されている必要があります。各クライアントのローカルtnsnames.oraファイルを手動で編集するか、ネットワーク構成ツールを使用します。
シングルインスタンス・データベースをグループに追加すると、Oracle Fail Safeではlistener.ora
ファイルを次のように変更します。
シングルインスタンス・データベースに関連付けられたネットワーク名でリスニングするように構成されたOracle Fail Safeリスナーを新規作成します。
スタンドアロン・データベース・リスナーを停止後、再起動して変更内容を有効にします。
新規のOracle Fail Safeリスナーを起動します。
新規クラスタ・グループ・リスナーが作成されると、Oracle Fail Safeによって元のリスナーから新規リスナーにポート番号が複製されます。たとえば、元のリスナーのADDRESS
エントリでポート1521
および1522
がADDRESS_LIST
に含まれている場合、新規リスナーは同じポート番号が含まれるADDRESS_LIST
を作成します。
新規グループ・リスナーが作成されると、Oracle Fail Safeにより、クラスタ・グループ内のすべてのデータベースがIPCプロトコルを介してセキュアな登録を使用するよう強制されます。したがって、Oracle Fail SafeによってパラメータSECURE_REGISTER_group_listener_name
が値IPC
で作成されます。
データベースがクラスタ・グループに追加され、グループに対して構成されているリスナーが存在しない場合、Oracle Fail Safeによってデータベースの現在のリスナーから新規グループ・リスナーにパラメータがコピーされます。たとえば、データベースが現在「listener」という名前のデフォルト・リスナーを使用しており、リスナーにはパラメータINBOUND_CONNECT_TIMEOUT_LISTENER
がlistener.ora
ファイルに含まれている場合、Oracle Fail Safeによって新規リスナー用にパラメータINBOUND_CONNECT_TIMEOUT_group_listener_name
が作成され、INBOUND_CONNECT_TIMEOUT_LISTENER
パラメータに使用される値が割り当てられます。
Oracle Fail Safeでは、新規グループ・リスナー用に外部プロシージャ・パラメータは作成されません。ご使用のアプリケーションで外部プロシージャが使用されている場合、クラスタ内の各ノードのlistener.ora
およびtnsname.ora
ファイルを手動で編集し、アプリケーションが使用する外部プロシージャに必要なパラメータを追加する必要があります。
Oracle Fail Safeでは、共有サーバー構成を使用するシングルインスタンスのOracle8データベースがサポートされています。ただし、Oracle Fail Safeでは、共有サーバー構成が定義されているデータベース初期化ファイルは自動的に更新されません。
スタンドアロンのシングルインスタンス・データベースまたは現在グループ内のリソースであるシングルインスタンス・データベースを構成して共有サーバーを使用できます。どちらの場合も、次の手順を実行してデータベース初期化ファイルを更新する必要があります。
次のように、共有サーバー構成を使用して、シングルインスタンス・データベースを含むグループのリスナー・パラメータを決定します。
データベースが存在するOracleホーム内のOracle Net構成ディレクトリでlistener.oraファイルを探します。
listener.oraファイルでデータベースのSIDを検索し、TCPプロトコルを使用しているグループの最初のリスナー・アドレスを探します。
たとえば、次のlistener.oraファイルの太字のテキストは、グループの最初のリスナー・アドレスを示します。
LISTENER = (Entries for default Listener) (ADDRESS_LIST = . . . Fslvirtualnode = (Entries for Fail Safe Listener) (ADDRESS_LIST= (ADDRESS= (PROTOCOL=IPC) (KEY=OFS1) ) (ADDRESS= (PROTOCOL=IPC) (KEY=805mts.world) ) (ADDRESS= (PROTOCOL=TCP) (Host=virtualnode) (Port=1521) ) (ADDRESS= (PROTOCOL=TCP) (Host=virtualnode) (Port=1526) ) ) SID_LIST_Fslvirtualnode = (SID_LIST= (SID_DESC= (SID_NAME=OFS1) ) )
ファイル内で(PROTOCOL=TCP)行を含む最初のアドレスを探し、アドレス・パラメータを単一行に書式設定します。次に例を示します。
(ADDRESS=(PROTOCOL=TCP)(Host=virtualnode)(Port=1521))
グループのリスナー・パラメータを使用するようにデータベース初期化ファイル(initofs1.oraなど)を更新します。これを行うには、次の手順を実行します:
データベース初期化パラメータ・ファイルを開きます。
データベースの初期化パラメータ・ファイルは、次のような共有相互接続上のディスクに存在する場合があります。
H:\OFSDB\OFS1\PARAM\initofs1.ora
クラスタの各ノードにプライベート・ディスク上のファイルの固有のコピーがある場合は、すべてのコピーを更新する必要があります。
データベース初期化パラメータ・ファイルで、次のパラメータを含む行を検索します。
mts_listener_address
mts_listener_addressパラメータの値を、手順1cで書式設定したリスナー・アドレスで置換します。
たとえば、元のmts_listener_addressパラメータに次の値が含まれているとします。
mts_listener_address = "(ADDRESS=(PROTOCOL=TCP)(HOST=node1)(PORT=1521))"
この行を次の行で置換します。
mts_listener_address = "(ADDRESS=(PROTOCOL=TCP)(HOST=virtualnode)(PORT=1521))"
データベース初期化ファイルを保存します。
mts_serviceパラメータの値がデータベースSIDであることを確認します。
Database Configuration Assistantは、mts_serviceパラメータの値にデータベース名を使用することがあります。その場合は、値をデータベースSIDに変更します。
グループ内リソースを停止し、再起動します。
変更を反映するには、Oracle Fail Safe ManagerまたはFSCMDコマンドを使用して、データベースを含むグループをオフラインにしてから、再びオンラインにします。これにより、グループ内のすべてのリソースが停止し、再開します。
共有サーバー構成を使用するには、データベース・パラメータ・ファイルを変更する必要があることがあります。
リスナー情報は、共有サーバー構成のLOCAL_LISTENER
パラメータまたはDISPATCHERS
パラメータのいずれかに指定できます。
共有サーバー構成で、LOCAL_LISTENER
パラメータを使用して完全なリスナー情報を指定する場合(完全なリスナー情報にはホストとポートの両方の値が含まれる)は、Oracle Fail Safeにより、「リソースをグループに追加」操作中に共有サーバー構成用のデータベース・パラメータ・ファイルが自動的に更新されます。
グループに追加されたシングルインスタンス・データベースは、共有サーバー・モードで稼働します。データベース・パラメータ・ファイルはそれ以上変更しないでください。
次の例は、Oracle Fail Safeにより自動的に更新される共有サーバー構成を示します。
dispatchers = "(PROTOCOL=TCP)(DISPATCHERS=1)" local_listener = "(ADDRESS=(PROTOCOL=TCP)(HOST=124.7.56.1)(PORT=1521))"
データベースをグループに追加すると、Oracle Fail SafeではLOCAL_LISTENER
パラメータを更新し、そのグループのリスナー情報を使用します。
ただし、共有サーバー構成でDISPATCHERS
パラメータを使用して完全なリスナー情報を指定する場合は、DISPATCHERS
パラメータからホストとポートの値を削除します。Oracle Fail Safeでは、常にLOCAL_LISTENER
パラメータをデータベース・パラメータ・ファイルに書き込みます。
Oracle Fail Safe Managerを使用してデータベースをグループから削除すると、データベース初期化ファイルからLOCAL_LISTENER
パラメータが削除されます。「共有サーバーの構成とスタンドアロン・データベース」の手順に従って、パラメータをデータベース初期化ファイルに追加する必要があります。
シングルインスタンスOracle Databaseを管理するには、SYSDBA
権限を付与されたデータベース管理者アカウントを使用します。これにより、リモート・クライアントからOracle Databaseを管理できます。
シングルインスタンスのサンプル・データベースを作成する場合や、グループにシングルインスタンス・データベースを追加する場合、Oracle Fail Safeではオペレーティング・システム認証またはSYS
ユーザー・アカウントを使用してデータベースにアクセスする必要があります。ユーザーがSYS
アカウントを使用してデータベースにアクセスする場合は、認証パスワード・ファイルを使用してデータベース初期化パラメータ・ファイル(init
database-name
.ora
)内の初期化パラメータREMOTE_LOGIN_PASSWORDFILE
をSHARED
または EXCLUSIVE
に設定します。ユーザーがオペレーティング・システム認証のみを使用してデータベースにアクセスする場合は、REMOTE_LOGIN_PASSWORDFILE
をNONE
に設定します。
データベース管理者認証およびREMOTE_LOGIN_PASSWORDFILE
パラメータの詳細は、『Oracle Database管理者ガイド』を参照してください。
データベースのパスワード・ファイルはプライベート・ディスクに格納されます。一方のクラスタ・ノードでパスワード・ファイルに対して行った変更内容は、他方のクラスタ・ノード上の対応するファイルに自動的には適用されません。
1つのクラスタ・ノード上のパスワード・ファイルにアカウントを追加した場合は、データベース・インスタンスを実行するよう構成されている他のクラスタ・ノード上のパスワード・ファイルにもそのアカウントを追加する必要があります。パスワード・ファイルにSYS
以外のアカウントも格納されている場合は、シングルインスタンス・フェイルセーフ・データベース用に、他のクラスタ・ノードで追加アカウントのSYSOPER
およびSYSDBA
権限を付与する必要があります。
Oracle Fail Safe Managerのリソースをグループに追加ウィザードを使用してシングルインスタンス・データベースをグループに追加する場合、Oracle Fail Safeはデータベースを実行するために構成される他のノード上にデータベース・インスタンスを作成し、パスワード・ファイルのユーザーの最大数にデフォルト値を使用します。インスタンスが作成されたノード上のパスワード・ファイルには、リソースをグループに追加ウィザードで指定したSYS
アカウントのパスワードのみが含まれます。
データベース・インスタンスが稼働するように構成された他のノードで、次の手順を実行して、他のクラスタ・ノード上のパスワード・ファイルを同期化します。
SYSアカウントのパスワードは、データベースに関連付けられているOracleホームにあるパスワード・ファイルに通常格納されます。各クラスタ・ノードにデータベースに使用するOracleホームがあるため、データベースがクラスタ・リソースである場合に保持する複数のパスワード・ファイルが存在します。SYSアカウントのパスワードを変更するには、変更をデータベースに関連付けられているクラスタの各Oracleホームに伝播できるように、Oracle Fail Safe Managerユーティリティを使用します。Oracle Fail Safeで使用するパスワード・メンテナンス戦略を妨げる可能性があるため、SQL*Plusまたは他のユーティリティを使用してSYSアカウント・パスワードを変更しないでください。
クラスタ・リソース・リストからデータベースを選択し、「アクション」メニューの「プロパティ」をクリックします。
リソースのプロパティ・ページが表示されます。
オペレーティング・システム認証が使用されない場合は、パスワード・フィールドが表示されます。
ほとんどのデータベースでは、パスワードの変更がただちに適用されます。ただし、データベース・パスワード・ファイルが共有されている場合、パスワードの変更を反映するにはデータベースを再度オープンする必要があります。これは、データベース・クラスタ・リソースをオフラインにしてから、オンラインに戻すことで行うことができます。または、データベースを所有するクラスタ・グループをクラスタ内の別のノードに移動できます。
この項では、Oracle Database Upgrade Assistantを使用して異なるリリース間でシングルインスタンス・フェイルセーフ・データベースをアップグレードする方法、あるいは異なるOracleホーム間でシングルインスタンスOracle Databaseを移動する方法について説明します。
アップグレードまたは新規Oracleホームに移動するシングルインスタンス・データベースのそれぞれに対して、次の手順を実行します。
シングルインスタンス・データベースをグループから削除します。
シングルインスタンス・データベースの移動先またはアップグレード先となるOracleホームから、Oracle Database Upgrade Assistantを実行します。
アップグレードするシングルインスタンス・データベースのデータベース・パラメータ・ファイルの場所を把握しておきます。データベースをアップグレードする際に、データベース・パラメータ・ファイルが変換されます。データベース・パラメータ・ファイルがクラスタ・ディスク上にある場合、パラメータ・ファイルはOracle Fail Safeによる変換に適した場所に置かれます。データベース・パラメータ・ファイルがプライベート・ディスク上にある場合、Oracle Database Upgrade Assistantはそのローカル・コピーのみを変換します。この場合、他のクラスタ・ノード上のコピーも編集し、適切な変更を加える必要があります。
Oracle Database Upgrade Assistantで求められる変換済データベース・ファイルの場所を指定します。データファイルを現在の場所のままにしておくか、またはローカル・ノードから現在アクセス可能なクラスタ・ディスクを指定します。後者を選択する場合、そのクラスタ・ディスクが他のグループによって使用されていないことを確認してください。
Oracle7データベースをOracle8データベースにアップグレードする場合、Oracle Database Upgrade Assistantでは<Oracle_Home>\database\mig<SID>.oraという新しいデータ・ファイル(SIDはデータベース・インスタンス名)がプライベート・ディスクに作成されます。次のように、この新しいデータ・ファイルを、他のデータ・ファイルがあるクラスタ・ディスクに移動します。
SQL*Plusを使用してデータベースに接続し、シャットダウンします。
SQL> SHUTDOWN
<Oracle_Home>\database\mig<SID>.oraファイル(<SID>はデータベース・インスタンス名)をクラスタ・ディスクにコピーします。
SQL*Plusを使用してデータベースに接続し、次のコマンドを実行します。
SQL> STARTUP PFILE=init<SID>.ora MOUNT
SQL> ALTER DATABASE RENAME FILE
'<Oracle_Home>\database\mig<SID>.ora' TO
'cluster_disk\mig<SID>.ora';
SQL> SHUTDOWN
SQL> EXIT
Oracle Database Upgrade Assistantによって、グループ内のすべてのデータベースがアップグレードまたは新規Oracleホームに移動されてから、Oracle Fail Safe Managerを使用して、次のようにデータベースをグループに戻し、データベースをオンライン化します。
使用可能なリソースをグループに追加するには、グループに追加するリソースを選択し、「Oracleリソース」ビューの「アクション」メニューから「リソースの追加」を選択します。
「リソースをグループに追加」ガイド付きプロセス・ウィザードが開き、クラスタ・リソースの構成を示します。
Oracle Database Upgrade Assistantを使用して、あるグループ内の1つのデータベースを新規のOracleホームに移動する場合、そのグループ内のすべてのデータベースが同じOracleホームを使用する必要があります。
Oracle9iより前のOracleデータベース・サーバーのリリースでは、ctxsrvサーバーはドキュメントの索引付け、検索、取得および表示用のバックグランド・データ操作言語(DML)を処理します。(Oracle9iからは、標準SQLまたはPL/SQLプロシージャでドキュメントを索引付け、検索、取得および表示できます。)
ctxsrvサーバーをシングルインスタンスのOracleデータベース・サーバーとともに使用している場合は、次のように高可用性用のctxsrvサーバーを構成できます。
ctxsrvサーバーを起動するバッチ・ファイルを作成し、パーソナリティ・マスクを指定します。たとえば、次のコマンド・ラインを含むcontext.batという名前のファイルを作成します。
ctxsrv -user CTXSYS/CTXSYS -personality QDM
Windowsフェイルオーバー・クラスタ・マネージャを開き、次のようにctxsrvサーバーを高可用性汎用アプリケーションとして構成します。
「ファイル」メニューで、「新規」、「リソース」の順にクリックします。
「新しいリソース」ページで、次の操作を行います。
「名前」フィールドで、ctxsrvサーバーの名前を入力します。
「説明」フィールドで、必要に応じてctxsrvサーバーの説明を入力します。
「リソースの種類」フィールドで、「汎用アプリケーション」を選択します。
「グループ」フィールドで、ctxsrvサーバーが関連付けられているデータベースを含むグループを選択します。
「実行可能な所有者」ページで、ctxsrvサーバーをオンラインにできるクラスタ内のノードを指定します。これらは、ctxsrvサーバーが関連付けられているシングルインスタンス・データベースの実行可能な所有者である必要があります。
「依存関係」ページで、ctxsrvサーバーが関連付けられているシングルインスタンス・データベースをリソース依存関係として指定します。ctxsrvサーバーにディスク依存関係(データベースで必要な依存関係以外)がある場合は、1つまたは複数のディスクもリソース依存関係として指定します。
「汎用アプリケーション パラメータ」ページで、次の操作を行います。
「コマンド ライン」フィールドで、前に作成したバッチ・ファイルのファイル仕様を入力します。たとえば、context.bat
などです。
「現在のディレクトリ」フィールドで、ctxsrvサーバーがインストールされたディレクトリ(たとえば、D:\Orant\bin)を入力します。
「レジストリのレプリケーション」ページでは、レジストリ・キーを入力する必要はありません。「完了」をクリックします。
構成を完了した後、クラスタ・サービスは.batファイルを起動し、コマンド・ウィンドウを開いてctxsrvサーバー・ロギング情報を表示します。誰かがコマンド・ウィンドウを閉じると、別のコマンド・ウィンドウがすぐに開き、ctxsrvサーバーは通常どおり検索を続行します。ctxsrvサーバーを含むグループがフェイルオーバーした場合、操作および検索機能は通常どおり続行されます。
Oracle Enterprise Managerを使用して、Oracle Fail Safe環境のシングルインスタンス・データベースを管理および監視します。たとえば、Oracle Enterprise Managerを使用して次のことができます。
Oracle Enterprise ManagerがOracle Fail Safeクラスタを検出するには、nmiconf.lst
ファイルを編集し、リストの最初のエントリとしてfs_discover.tcl
を追加する必要があります。これは、クラスタのすべてのノードで実行する必要があります。Oracle Intelligent Agentsを複数のOracleホームから使用している場合は、Oracleホームの1つにfs_discover.tcl
エントリを追加します。nmiconf.lst
ファイルはOracle_Home
\NETWORK\AGENT\CONFIG
にあります。
注意:
Oracle Enterprise Managerのグループごとに検出を実行して、そのグループに構成されているリソースを確認する必要があります。検出されると、各グループはOracle Enterprise Managerノード・リストにノードとして表示され、スタンドアロン・リソースの管理と同じようにグループ内のリソースを管理できます。
グループのジョブとイベントを物理ノード(ホスト)であるかのように作成および登録します。
関連項目:
Oracle Enterprise Managerとの統合に関連する問題のトラブルシューティングについては、「セキュリティ・アクセスおよび認証の問題」を参照してください。
グループにシングルインスタンス・データベースを追加した後で、リソースをグループに追加ウィザードをもう一度実行してOracle Management Agentをそのグループに追加します。ウィザードには、図7-10に示すようなダイアログ・ボックスが表示されます。
グループ内のデータベース数にかかわらず、グループにはOracle Management Agentを1つのみ追加します。ただし、Oracle Management Agentを追加するには、グループに少なくとも1つのデータベース・リソースが含まれている必要があります。同様に、最初にOracle Management Agentを削除してからでないと、グループから最後のデータベース・リソースを削除できません。
Oracle Management Agentをグループに追加することを指定する場合:
Oracle Fail Safeでは新しいManagement Agentが作成されます
新しいManagement Agentは、クラスタ・ディスクの1つ(リソースをグループに追加ウィザードを実行してOracle Management Agentを追加したときに指定)を使用してジョブおよびイベント情報を格納します
Oracle Fail Safeは、新しいManagement Agentを構成してグループの一部にします。
Oracle Enterprise Managerを使用してクラスタに構成されたOracleデータベースおよび監視イベント(フェイルオーバーなど)用のジョブをスケジューリングする方法の詳細は、Oracle Fail Safeのヘルプを参照してください。
Oracle Fail Safeによって可用性が高まるように構成されたOracle Databaseでは、予定外に発生したシステム・ダウンおよび(ソフトウェア・アップグレードや定期メンテナンスなどの)計画的システム・ダウンの際に、高速フェイルオーバーと高速リカバリを実現できます。Oracleのファスト・スタートおよび障害時リカバリ機能を利用して、データベース・リカバリに費やされる時間を制御し、Oracle Fail Safeにより可用性が高くなるように構成されたデータベースを連続的に監視することができます。
Oracle Fail SafeとOracle Databaseテクノロジにより、計画的/計画外いずれのフェイルオーバーの場合も、あるノードでデータベースを停止して別のノードでインスタンスを完全にリカバリするまでの所要時間が最適化されます。Oracle Databaseのチェックポイント・アルゴリズムにより、計画的および計画外フェイルオーバーでのインスタンスのリカバリ時間が最適化されます。
計画的フェイルオーバーの実行にOracle Fail Safe Manager(またはPowerShellコマンドレット)を使用すると、Oracle Fail Safeでは、シングルインスタンスOracle Databaseを停止する前にそのチェックポイントを取得します。インスタンス・リカバリを即時に完了し、データベース・クライアントでデータベースをすぐに利用できるように、別のノードのシングルインスタンス・データベースは制限付きモードで起動されます。(計画的フェイルオーバーの実行にMicrosoft Windowsフェイルオーバー・クラスタを使用した場合、データベースが停止される前のチェックポイントの取得は行われません。)
注意:
Oracle Fail Safe Manager、Oracle Fail Safe PowerShellコマンドレットまたはWindowsフェイルオーバー・クラスタ以外のツールを使用してデータベースをオフライン化すると、Oracle Fail Safeではそれを障害の発生したリソースとみなし、再度オンライン化を試行します。
計画外フェイルオーバーの場合、インスタンス・リカバリの時間はデータベース・リカバリ処理によって制御されます。
可用性が向上するように構成されたデータベースに対する管理作業も、他のデータベースと同様にして実行します。ただし、データベースへのアクセスを制限する操作、またはフェイルオーバー機能を一時的に使用不可にする操作の途中でデータベースをオフラインにする(およびクラスタでのデータベースの監視を停止する)場合は、Oracle Fail Safe ManagerまたはPowerShellコマンドレット・コマンドライン・インタフェース(「PowerShellコマンド」を参照)を使用します。これには、コールド・バックアップ操作、ユーザーがデータベースにアクセス中に実行する必要のある管理操作やMicrosoft Windowsフェイルオーバー・クラスタによる定期的なIs Aliveポーリング中の応答時間に影響する操作が含まれます。
Oracle Fail Safe Managerを使用してグループ内に構成されているデータベースに対して管理作業を実行するには、次の手順に従います。
Oracle Database 12cリリース1 (12.1)以降、Oracle Databaseでは、インストール時に指定されるOracleホーム・ユーザーの使用がサポートされます。Oracleホーム・ユーザーは、ドメイン・ユーザー・アカウントである必要があります。Oracleホーム・ユーザーは、Oracleホームに関連付けられます。同じOracleホームを使用するクラスタのすべてのノードで同じOracleホーム・ユーザーを使用していることを確認してください。
Oracle Fail Safeでは、データベースにアクセスする際、通常は同じOracle Databaseホームを使用してシステムのデータベースにアクセスします。Oracle Fail Safeは、サーバーの起動時にデータベース・ホームを選択します。Oracle Fail Safeはすべてのデータベース・ホームをスキャンして、最上位のソフトウェア・バージョンが含まれるホームを検索します。最初は、システムのPATH
環境変数に\bin
パスが含まれるホームのみを検索します。Oracle Fail SafeはシステムのPATH
にデータベース・ホームが見つからない場合、すべてのデータベース・ホームをスキャンして、最上位のバージョンが含まれるホームを検索します。
Oracle Fail Safeでは、起動時にデータベース・ホームが選択されるため、Oracle Fail Safe起動後にインストールされたデータベース・ホームは認識されないことに注意してください。Oracle Fail Safeのサーバーおよびリソース・モニターを再起動しないと、Oracle Fail Safeは新しいデータベース・ホームを使用できるとはみなしません。新しいバージョンのOracle Databaseをインストールした後は、Oracle Fail Safeが新しいデータベース・ホームを使用できるように、すべてのノードでCluster Serviceサービスを再起動する必要があります。
クラスタにより管理されているデータベースがある場合は、データベース・ホームがクラスタ内の各ノードのローカル・ディスクにインストールされている必要があります。データベース・ホームが共有クラスタ・ディスクにインストールされている場合、システムのPATH
環境変数にその\bin
ディレクトリを含めないでください。
データベースにアクセスできるOracle Fail Safeコンポーネントは、次の2種類です。
Oracle Fail Safeサーバー(OracleMSCSServices)
Oracle Fail Safeデータベース・リソースDLL(FsResOdbs.dll)
通常、サーバーがデータベースにアクセスするのは、データベース・リソースを構成(リソースを追加または削除)するときか、操作を検証するときのみです。通常のシステム操作中にOracle Fail Safeサーバーがデータベースにアクセスすることはありません。
データベースまたはリスナー・リソースがクラスタによって参照されると、Windows Cluster ServiceによってリソースDLLが呼び出されます。たとえば、データベースがオンライン化されるとき、IsAliveポーリング中、リソースが別の仮想ノードにフェイルオーバーされるときなどです。複数のデータベース・ホームが存在するシステムでは、そのデータベースのインスタンスで使用されるデータベース・ホーム・ソフトウェアと同じデータベース・ホーム・ソフトウェアを使用して、各データベースをアクセス先のシステムに置く必要があることがあります。Oracle Fail Safe Managerで表示されるリソース・プロパティ・ページの「このリソースを別のリソース・モニターで実行」チェック・ボックスを選択すると、リソースが個別のリソース・モニター・プロセスで実行されるよう構成することが可能です。このオプションが有効になっている場合、データベースのリソース・モニター・プロセスでは、データベース・アクセスの際に、システムの最上位バージョンのデータベース・ホームが常に使用されるのではなく、データベース・インスタンスの実行に使用されるデータベース・ホームが使用されます。データベース・リスナー・リソースを参照する際には、リソースDLLでは、「このリソースを別のリソース・モニターで実行」オプションの設定に関係なく、リスナー・サービスの起動に使用される\bin
パスからのソフトウェアが常に使用されます。
データベースにアクセスする際にOracle Fail Safeコンポーネントにより使用されるユーザー・アカウントの詳細は、「Oracle Fail Safeサービス」を参照してください。
スタンドアロン・シングルインスタンス・データベースの場合、透過的アプリケーション・フェイルオーバー(TAF)が発生すると、Oracle Netは別のリスナーに接続して障害の発生したデータベースへの再接続を確立します。このため、ユーザーは元の接続が維持されている場合と同じように、新しい接続を使用して作業を続行できます。スタンドアロン・シングルインスタンス・データベースの場合とシングルインスタンスOracle Fail Safeデータベースの場合では、TAF機能による実際の処理は異なります。Oracle Fail Safeデータベースの場合、透過的アプリケーション・フェイルオーバーにより、(グループのフェイルオーバーによって別のクラスタ・ノードに移動した)同じリスナーに再接続するようにOracle Netに指示されます。
スタンドアロン・データベースの場合、TAFのフェイルオーバーという語句は、Oracle Netによってあるリスナーから別のリスナーに接続がフェイルオーバーされることを指します。Oracle Fail Safeデータベースの場合、TAFのフェイルオーバーという語句の使用方法に多少誤りがあります。この場合、アプリケーションではなく、アプリケーションに接続されているリスナーのフェイルオーバーによって再接続が確立されます。
実装にはこのような違いがありますが、TAFを管理する方法は同じです。
Oracle Fail Safeで構成されるデータベースに接続する場合に透過的アプリケーション・フェイルオーバーを利用するには、クライアント・アプリケーションはOracle Netを介してOracle Databaseに接続する必要があります。
TAFでは、グループ・フェイルオーバーの後、クライアントは明示的に再接続を行いません。OCI接続がクライアント・アプリケーションの再接続と状態のリカバリを自動的に処理します。実際、障害の発生時にデータベースを頻繁に更新していた場合を除き、アプリケーション側ではフェイルオーバーの発生に気付かない場合があります。
透過的アプリケーション・フェイルオーバーの詳細は、Oracle Net Services管理者ガイドを参照してください。
次の各項では、Oracle Fail Safeが高可用性シングルインスタンス・データベースをオンラインにしようとしたときに発生するエラーの処理方法について説明します。高可用性用に構成されたシングルインスタンスOracleデータベースの特定の問題のトラブルシューティングについても説明します。
Oracle Fail Safeがシングルインスタンス・データベースのオンライン化を試行した際に発生するエラーを処理するスクリプトを作成できます。Oracle Fail Safeでは、クラスタ上のすべてのシングルインスタンス・フェイルセーフ・データベースに同じスクリプトを使用します。
エラー処理スクリプトを指定するには、次のようにします。
シングルインスタンス・データベースをオンライン化できない場合、Oracle Fail Safeは次のように、最初にスクリプトを実行するプロセスを生成し、エラー・コード、データベース名、データベースSID
、TNSサービス名およびデータベース・パラメータ・ファイル指定をスクリプトに渡してスクリプトを実行します。
FsDbError.bat error-code database-name SID TNS service name parameter-file-spec
次に例を示します。
FsDbError.bat ORA-01113 OracleDB OracleDB OracleDB.WORLD D:\Ora\admin\OracleDB\pfile\initOracleDB.ora
スクリプトを実行しているプロセスは、データベース・リソースの「保留タイムアウト」値で指定された期間、スクリプトの終了を待機します。スクリプトが保留タイムアウト期間内に終了しない場合、スクリプトは終了させられます。
Oracle Fail Safeは、Windowsイベント ログにイベントを記録し、スクリプトが成功したか、失敗したか、Oracle Fail Safeによって終了させられたかを示します。スクリプトが失敗した場合は、エラー・コードもイベント ログに書き込まれます。
スクリプトの成否にかかわらず、Oracle Fail Safeでは、データベースの再起動ポリシーおよびフェイルオーバー・ポリシーの定義に従ってシングルインスタンス・データベースのオンライン化の試行が継続されます。
多くの場合、問題のトラブルシューティングでは、まず「検証」クラスタ、「検証」グループ、または「検証」スタンドアロン・データベース・アクションを選択します。これらのツールについては、「アクションの検証」で概要を説明しています。「検証」アクションを実行しても問題の原因を特定できない場合は、Windowsアプリケーション・イベント・ログを確認して、エラー・メッセージがポストされていないかを調べます。操作が失敗した場合、Oracleサポートによりトレースを有効にするように求められることがあります。Oracle Fail Safeトレースの有効化の詳細は、「Oracleサポート・サービスへの連絡」を参照してください。
シングルインスタンス・データベースを含むグループに対して「検証」アクションを選択すると、Oracle Fail Safeでは次のことを行います。
グループ内の各データベースに問い合せて、使用されているディスクを特定します。その後、そのディスクがクラスタ・ディスクであるか、すでにグループに追加されているかをチェックします。(たとえば、可用性が高まるように構成された後にデータベースにディスクが追加されたために)ディスクの有効性検査が失敗した場合、「検証」グループ・アクションでは、問題を修正する前に確認を求められます。
いつでも「検証」グループ・アクションを選択できます。ただし、次の状況が発生した場合は、必ず実行してください。
グループまたはグループ内のリソースがオンライン化されない場合。
クラスタに新しいノードが追加された場合。
たとえば、Oracle Fail Safe Managerを使用してクラスタ構成を更新せずに、シングルインスタンス・データベースに新しいディスクを追加した場合を考えてみます。その後サーバー・ノードが停止しても、フェイルオーバーは適切に実行されません。これは、クラスタ・ソフトウェアに構成の変更を通知していないことによるものです。この問題を回避するため、シングルインスタンス・データベースの構造を変更したときは、必ずそのデータベースを含むグループを検証してください。グループを検証すると、Oracle Fail Safeでは自動的に変更を検出し、クラスタ構成を更新します。前述の例では、Oracle Fail Safeは、ユーザーにかわって新しいディスクをグループに追加します。
グループの検証で問題が検出された場合、Oracle Fail Safeは問題を修正するための応答を求めるか、または問題を詳しく説明したエラー・メッセージを返します。
データベースをグループに追加する際、リスナーまたはデータベース・リソースがオンライン化に失敗すると、Oracle Fail Safe Managerによって詳細なエラー情報が表示されない可能性があります。Oracle Fail Safeのリソース・コントロール・マネージャにより、エラー情報はWindowsアプリケーションのイベント・ログにロギングされます。その他のエラー情報は、「Oracleサポート・サービスへの連絡」を参照してください。
シングルインスタンス・データベースが含まれるグループをオンライン化する際に問題が発生した場合は、次の操作を実行します。
(Oracle Fail Safe Managerグループの「アクション」メニューから)「検証」を選択すると、Oracle Fail Safeではグループの構成をチェックし、問題が見つかると修正を行います。
「検証」グループ・アクションで問題が見つかった場合は、その問題を手動で解決するヒントとなるエラー・メッセージが返されます。
Oracle Netでは、エラーの検出や、リスナーを介したデータベースへのアクセスのたびに、リスナー・ログ・ファイルにエントリを作成します。このログ・ファイルの中に、問題の識別に役立つエラーがないかどうかを調べます。
Oracle Net構成データを確認します。
サーバー・システム上のlistener.ora
ファイル、およびサーバーとクライアントの両方のシステム上の tnsnames.ora
ファイルには、クラスタ内のグループに対する有効な仮想サーバー・アドレスが含まれている必要があります。
グループ内の各リソースを個別にオンライン化します。
グループ内に複数のシングルインスタンス・データベースが存在する場合、この方法で問題の原因となっているデータベースを識別できます。
「拡張ポリシー」プロパティ・ページで指定されたシングルインスタンス・データベースの「保留タイムアウト」値が十分であることを確認します。
データベースが含まれるグループがオンライン化に失敗する場合、または頻繁にフェイルオーバーする場合は、「保留タイムアウト」値が正しく設定されているか確認してください。データベースの「保留タイムアウト」値の設定が低すぎると、オンライン化に失敗したり、フェイルオーバーが頻繁に発生します。
「保留タイムアウト」
の値を設定して、クラスタ・ソフトウェアでデータベースがオンライン(またはオフライン)になってから操作が失敗したと判断されるまでの時間を指定します。値は、遅いレスポンス時間がクラスタ・システムにより使用不可状態と判断されることがない程度に大きく、かつ障害発生時のフェイルオーバー・レスポンス時間を最小限に抑えられる程度に小さく設定してください。
「保留タイムアウト」
値を設定するには、次のようにデータベース・プロパティを変更します。
Oracle Fail Safe Managerのツリー・ビューで、データベース名を選択します。
「 拡張ポリシー」タブをクリックします。
「保留タイムアウト」ボックスで「保留タイムアウト」
値を変更します。
ユーザーがSYS
アカウントを使用してデータベースにアクセスする場合は、データベース初期化パラメータ・ファイル(init
database-name
.ora
)内の初期化パラメータREMOTE_LOGIN_PASSWORDFILE
がSHARED
またはEXCLUSIVE
に設定されていることを確認します。
ユーザーがオペレーティング・システム認証のみを使用してデータベースにアクセスする場合は、データベース初期化パラメータ・ファイル内の初期化パラメータREMOTE_LOGIN_PASSWORDFILE
がNONE
に設定されていることを確認します。
Oracle Fail Safeでデータベースへのアクセスに使用するアカウントのパスワードが変更されている場合は、Oracle Fail Safe Managerでその変更を更新します。
Oracle Fail Safeでデータベースへのアクセスに使用するアカウントのパスワードを変更後、Oracle Fail Safe Managerでその情報を更新しない場合、データベースに対するポーリングは失敗します。Oracle Fail Safeのデータベース・パスワードの変更を更新する方法の詳細は、「SYSアカウントのパスワードの変更」を参照してください。
プロセスが集中している操作(インポート操作など)では、Is Aliveポーリングが正常に実行されずに、予期しないグループ・フェイルオーバーが発生する場合があります。このような場合には、(Get-OracleClusterResource dbname).IsAliveEnabled=$false
コマンドを発行して、データベースに対するIs Aliveポーリングを使用不可にできます。Is Aliveポーリングを使用不可にする場合は、再度使用可能にするまで、Oracle Fail Safeによりインスタンスの監視が中止されるので注意してください。Is Aliveポーリングを再度使用可能にするには、(Get-OracleClusterResource dbname).IsAliveEnabled=$true
コマンドを使用します。
これらのPowerShellコマンドレットは、プロセスが集中している操作の完了時にIs Aliveポーリングを再度使用可能にできるようにスクリプト内から実行することをお薦めします。
PowerShellコマンドレット・コマンドの詳細は、「PowerShellコマンド」を参照してください。
Oracle Fail Safeでシングルインスタンス・データベースをオンライン化またはオフライン化しようとして問題が発生することがあります。この問題の原因として、データベース認証の設定方法に問題があることが考えられます。この問題を解決するには、次の操作を実行します。
Oracle Databaseの「通常」プロパティ・ページでデータベースを認証する「SYSアカウントを使用」を選択した場合は、データベース初期化パラメータ・ファイル(init
database-name
.ora
)でREMOTE_LOGIN_PASSWORDFILE
初期化パラメータがSHARED
またはEXCLUSIVE
に設定されていることを確認します。
「シングルインスタンス・データベースのセキュリティ要件」に、データベース認証に対してこのパラメータを適切に設定する方法が記載されています。
Oracle Fail Safeでグループ内のデータベースにアクセスできることを確認します。
グループの検証や、データベースがオンライン状態であることを確認するためのポーリングなど、Oracle Fail Safeにより実行される一部の操作では、Oracle Fail Safeでグループ内にあるデータベースにアクセスできる必要があります。データベース・アカウントのパスワードが変更されている場合は、Oracle Fail Safe Managerでその変更を更新します。更新しないと、Oracle Fail SafeでIs Aliveポーリングを使用するデータベースの監視ができなくなります。この状態は、Windowsアプリケーション・イベント・ログにより記録されます。
「SYSアカウントのパスワードの変更」に、データベース・パスワードの正しい更新方法が記載されています。
スタンドアロン・データベースまたはグループに構成されているデータベースに接続しようとして問題が検出された場合は、データベースのOracle Net構成を調べる必要があります。
Oracle Fail Safeは、「検証」グループおよび「検証」スタンドアロン・データベース操作を提供して、Oracle Net構成を検証および修正できます。詳細は、「Oracleリソースの構成の検証」および「スタンドアロン・データベースの検証」を参照してください。
Oracle Fail Safeにより、ネットワーク名情報を構成する際、listener.ora
およびtnsnames.ora
ファイルが変更され、リスナーが停止および起動されます。発生する可能性のある問題と問題を解決するための処置を、次のリストに示します。
このメッセージ・コードは、Oracle Netのlistener.ora
およびtnsnames.ora
ファイルの解析(読込みまたは更新)に問題があることを報告するものです。
不適切な更新やファイルの破損によりファイルが無効となった場合、Oracle Fail Safeではこれらのファイルを使用して仮想サーバー情報を構成できません。有効なバージョンのファイルを取得するか、Oracle Net Assistantを使用してファイルを作成しなおします。
これらのファイルが有効な場合は、操作で使用されているグループのネット・サービス名、データベースSID
およびネットワーク名が正しいかどうかをチェックします。情報が不適切であると、仮想サーバーの構成でエラーが生じることがあります。同じデータベースSID
が、複数のリスナーに含まれていないことを確認してください。複数のOracleホームを伴ったシステムでは、すべてのlistener.ora
ファイルをチェックします。
FS-10436: Windowsサービス
name
の起動に失敗しました。
リスナーの定義変更や新規リスナーの定義作成後、Oracle Fail Safeではリスナーが起動されます。
多くの場合、このエラーは、別のリスナーがすでにアドレスをリスニングしていることが原因で発生します。システム上で1つのリスナーにかぎり、特定のアドレスまたはデータベースSID
のリスニングが可能です。たとえば、LISTENER_A
が次のような定義の場合、システム上のその他のリスナーでは、IPCプロトコルを使用したキーORCL
のリスニング、TCPプロトコルを使用したホストserver_Aでのポート1521のリスニング、またはORCL SID
名のリスニングができません。
LISTENER = (ADDRESS_LIST= (ADDRESS= (PROTOCOL=IPC) (KEY=ORCL) ) (ADDRESS= (PROTOCOL=TCP) (Host=server_A) (Port=1521) ) )
他のリスナーでLISTENER_A
と同じアドレスまたはデータベースSIDを使用しようとすると、起動に失敗します。
リスナーを起動できない一般的な原因のもう1つは、ネットワーク名です。リスナーが使用するネットワーク名は、Oracle Fail Safeがリスナーを起動しようとしているノード上でアクティブである必要があります。
ネットワーク構成の問題のトラブルシューティングに関する詳細は、Oracle Netのマニュアル(ログ・ディレクトリの情報を含む)を参照してください。
ほとんどの認証の問題は、クラスタ・ノード間でのデータベース・パスワード・ファイルのコピーの不整合が原因です。Fail Safeが、あるノードのデータベースにはアクセスでき、別ノードのデータベースにはアクセスできない場合、パスワード・ファイルは同期しなくなります。この問題はいくつかの方法で解決できます。
動作しているノードから動作していないノードにパスワード・ファイルをコピーします。
Oracle Fail Safe Managerを使用してクラスタからデータベースを削除します。コマンドを削除し、「リソースの追加」コマンドを使用して再度追加します。
ORAPWDユーティリティを使用して、障害のあるノードでSYSパスワードを手動で更新します。
オペレーティング・システム認証が使用されている場合は、Oracle認証ローカル・ユーザー・グループに不整合がある場合があります。ユーザー・グループを検証するには、Oracle Fail Safe Managerを実行し、クラスタの「検証」コマンドを選択します。Oracle Fail Safeは、クラスタのすべてのノード上のすべてのOracle認証ローカル・ユーザー・グループのコンテンツを比較し、見つかった不整合をレポートします。
Oracle Fail Safeにより、データベースがルート・コンテナであることが認識され、コンテナ・データベースが所有する個別のプラガブル・データベースが起動および停止されます。データベースがフェイルオーバーされるかクラスタ内の別のノードに移動されると、最後のSQL ALTER PLUGGABLE DATABASE ALL SAVE STATE
コマンドで保存された状態を使用して、Oracle Fail Safeによって各プラガブル・データベースが起動されます。プラガブル・データベースの状態を保存するには、Oracle Database 12cパッチ・セット1 (12.1.0.2)が必要です。
Oracle Fail Safe Managerを使用して、コンテナ・データベース内の個々のプラガブル・データベースをオープンおよびクローズします。コンテナ・データベースの名前の横にある展開アイコンをクリックして、コンテナ・データベースが所有するプラガブル・データベースをリストします。プラガブル・データベースをオープンまたはクローズするには、リスト内の目的のデータベースをクリックしてから、「アクション」リストでオープンまたはクローズ・アクションを選択します。
注意:
Oracle Fail Safe Managerで、コンテナ・データベースが所有するプラガブル・データベースに関する情報を表示するには、その前にコンテナ・データベース・クラスタ・リソースがオンラインになっている必要があります。Oracle Fail Safeでは、プラガブル・データベースのオープンまたはクローズにトリガーの使用をサポートしていません。たとえば、次のようなトリガーは、フェイルオーバー・クラスタ内のデータベースに使用しないでください。
CREATE OR REPLACE TRIGGER sys.after_startup AFTER STARTUP ON DATABASE BEGIN EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN'; END after_startup;