Oracle データベースがリモートクライアント接続に対応する場合、Oracle データベースサーバに加えて、Oracle Listener を保護することができます。Oracle ネットワーク設定ユーティリティを使用して Oracle ネットワーク設定ファイル(例えば、listener.ora 、tnsnames.ora など)を作成する方法については、Oracle ドキュメンテーションを参照してください。

注記: 複数のリソースに対しての共有 Oracle Listener の作成方法については、このドキュメントの付録の「複数のリソースに対する共有 Oracle Listener の作成」 を参照してください。

Listener の設定

  1. クライアントが接続するための切り替え可能 IP アドレスを選択する必要があります。このアドレスは DNS に登録すると良いでしょう。(IP のリソース階層を作成する方法の詳細については、 LifeKeeper IP Recovery Kit ドキュメンテーション を参照してください。リソース依存関係を作成する方法の詳細については、「GUI Administration Tasks」のリソース依存関係の作成 トピックを参照してください。)
  1. listener.oraファイルで、データベースサービス名の HOST にこの切り替え可能な IP アドレスを指定してください。(listener.ora ファイルの詳細については、Oracle ドキュメンテーションを参照してください。)データベースサービス名の HOST には、切り替え可能な IP アドレスの代わりに DNS 名を使用できますが、LifeKeeper のベストプラクティスとしては推奨されません。切り替え可能な IP アドレスを使用することにより、DNS ルックアップの問題の影響によって quickCheck や restore または remove 処理中に LifeKeeper がリスナーの実行ステータスを決定できなくなることを防止できます。また、リスナーが 1 つしか定義されていない場合でも SID_LIST_LISTENER を定義する必要があります。

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 ファイルの変更にも適用されます。

フィードバック

フィードバックありがとうございました

このトピックへフィードバック

送信