Oracle データベースがリモートクライアント接続に対応する場合、Oracle データベースサーバに加えて、Oracle Listener を保護することができます。Oracle ネットワーク設定ユーティリティを使用して Oracle ネットワーク設定ファイル(例えば、listener.ora 、tnsnames.ora など)を作成する方法については、Oracle ドキュメンテーションを参照してください。
注記: 複数のリソースに対しての共有 Oracle Listener の作成方法については、このドキュメントの付録の「複数のリソースに対する共有 Oracle Listener の作成」 を参照してください。
Listener の設定
- クライアントが接続するための切り替え可能 IP アドレスを選択する必要があります。このアドレスは DNS に登録すると良いでしょう。(IP のリソース階層を作成する方法の詳細については、 LifeKeeper IP Recovery Kit ドキュメンテーション を参照してください。リソース依存関係を作成する方法の詳細については、「GUI Administration Tasks」のリソース依存関係の作成 トピックを参照してください。)
- listener.oraファイルで、データベースサービス名の HOST にこの切り替え可能な IP アドレスを指定してください。(listener.ora ファイルの詳細については、Oracle ドキュメンテーションを参照してください。)データベースサービス名の HOST には、切り替え可能な IP アドレスの代わりに DNS 名を使用できますが、LifeKeeper のベストプラクティスとしては推奨されません。切り替え可能な IP アドレスを使用することにより、DNS ルックアップの問題の影響によって quickCheck や restore または remove 処理中に LifeKeeper がリスナーの実行ステータスを決定できなくなることを防止できます。また、リスナーが 1 つしか定義されていない場合でも SID_LIST_LISTENER stanza を定義する必要があります。
listener.ora のサンプルフォーマット:
. . . SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = <SID Name>) ) ) . . . <listener name>= (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = <vip>)(PORT = <port number>)) ) ) . . .tnsnames.ora ファイルまたは Oracle Names の HOST に切り替え可能な IP アドレスを指定してください。(tnsnames.ora ファイルの詳細については、Oracle ドキュメンテーションを参照してください。)データベースサービス名の HOST には、切り替え可能な IP アドレスの代わりに DNS 名を使用できますが、LifeKeeper のベストプラクティスとしては推奨されません。切り替え可能な IP アドレスを使用することにより、DNS ルックアップの問題の影響によって quickCheck や restore または remove 処理中に LifeKeeper がリスナーの実行ステータスを決定できなくなることを防止できます。
. . . <SID Name>= (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = <vip>)(PORT = <port number>)) ) (CONNECT_DATA = (SID = <SID Name>) ) )
これらのサンプルファイルは、Oracle 10g および 11g の両方で正常に動作します。
listener.ora
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = ORA11A) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.0.2.0)(PORT = 1521)) ) )
tnsnames.ora
ORA01 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.0.2.0)(PORT = 1521)) ) (CONNECT_DATA = (SID = ORA01) ) )
通常の listener.ora の場所は $ORACLE_HOME/network/admin になります。最も一般的なポート番号は 1521 です。データベースのグローバル名は、作成時に定義されます。 $ORACLE_HOME ディレクトリが非共有ストレージ上にインストールされている場合は、listener.ora のコピーは両システム上に必要となるので注意してください。
注記: Oracle Net は、サービスのリスナーに障害が発生した場合に、クライアント接続を自動的に他のリスナーにフェイルオーバするオプションを提供しています。この機能を利用するには、tnsnames.ora ファイルで FAILOVER パラメータを 「ON」 に設定します。こうしておけば、LifeKeeper によって保護された Oracle SID のリスナーに障害が発生しても、LifeKeeper が保護下にあるリスナーを回復するまで、クライアント接続は別のリスナーを通じて継続されます。
エラー
下記エラーが発生した場合は、以下に記載の解決策を確認してください。
Oracle listener fails with TNS-00511: No Listener Linux Error:111: Connection refused
listener.ora ファイルを下記の例のように設定した場合、LifeKeeper はリスナーを起動することができません。
(ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=<hostname>)(PORT=1521)) (ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)) (ADDRESS=(PROTOCOL=tcp)(HOST=<vip>)(PORT=1521)) )
<hostname> は、ホストのホスト名で、 <vip> は仮想 IP アドレスです。
エラーメッセージをスクロールしていくと下記エラーが表示されます。
TNS-12542: TNS:address already in use
TNS-12560: TNS:protocol adapter error
解決策
listener.ora を下記のように変更してください。
(ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=<ip>)(PORT=1521)) (ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)) (ADDRESS=(PROTOCOL=tcp)(HOST=<vip>)(PORT=1521)) )
<ip> はホストの IP アドレスで、 <vip> は、仮想 IP アドレスです。
注記: セキュリティ上の問題がある場合は、 vipname が仮想 IP の DNS 名でも設定可能です。
(ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=<vipname>)(PORT=1521)) )
これは tnsnames.ora ファイルの変更にも適用されます。
このトピックへフィードバック