3 Replies Latest reply: Jan 23, 2012 8:14 AM by atoz01 RSS

    1つのインスタンスに対し、複数のリスナーから接続できない

    atoz01
      [環境]
      Windows
      Oracle10.2

      [質問]
      1つのインスタンスに対し、複数のリスナーから接続したいのですが、
      片方のリスナーからしか接続できません。
      対処について教えてもらえないでしょうか。

      -----------------
      ■listener.ora
      -----------------
      LISTENER =
      (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = host1)(PORT = 1520))
      )

      AAA =
      (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = host1)(PORT = 1521))
      )

      -----------------
      ■tnsnames.ora
      -----------------
      BBB =
      (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = host1)(PORT = 1520))
      (CONNECT_DATA = (SERVICE_NAME = TEST.AAA.JP))
      )

      CCC =
      (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = host1)(PORT = 1521))
      (CONNECT_DATA = (SERVICE_NAME = TEST.AAA.JP))
      )

      -----------------
      ■操作手順
      -----------------
      ①初期化パラメータ local_listener にリスナー・エイリアス「BBB」を設定
      ②2つのリスナーを起動
      ③コマンドプロンプトから「> sqlplus system/pass @BBB」を実行
       ⇒ 接続可能
      ④コマンドプロンプトから「> sqlplus system/pass @CCC」を実行
       ⇒ 「ORA-12514 TNS:リスナーは接続記述子でリクエストされたサービスを現在認識していません」が表示
      ⑤コマンドプロンプトから「> lsnrctl status AAA」を実行 
       ⇒ 「リスナーはサービスをサポートしていません」が表示

      よろしくお願い致します。

      Edited by: user10990199 on 2012/01/22 11:51
        • 1. Re: 1つのインスタンスに対し、複数のリスナーから接続できない
          Takashi Matsuoka
          SERVICE_NAME = TEST.AAA.JPのインスタンスが、
          リスナーLISTENERにしか登録されていないからでは?

          下記コマンドで、登録状況をご確認ください。
          ・”lsnrctl status LISTENER”コマンド実行結果
          ・”lsnrctl status AAA”コマンド実行結果
          ・”local_listener”初期化パラメータ

          リスナーに静的サービス登録か、”local_listener”初期化パラメータに複数登録してください。

          http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/network.102/B19209-01/listener.htm#sthref793
          http://www.oracle.co.jp/forum/thread.jspa?threadID=8008092
          • 2. Re: 1つのインスタンスに対し、複数のリスナーから接続できない
            Blueloco
            最初に何も設定しなくても PORT=1521 のリスナーに接続できるのは、LOCAL_LISTENERパラメータのデフォルト値が「(ADDRESS = (PROTOCOL = TCP)(HOST = host1)(PORT = 1521)」になっているからです。
            それを、「BBB」で上書きしてしまったので、BBBで指定しているPORT=1520でしか接続できなくなっています。
            両方を定義した、DDDのようなものをつくって、これを LOCAL_LISTENER に設定してやればできるかと思います。

            ・tnsnames.ora に以下を追加
            DDD =
            (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = host1)(PORT = 1520))
            (ADDRESS = (PROTOCOL = TCP)(HOST = host1)(PORT = 1521))
            )

            ・local_lilstenerを変更
            alter system set local_listener = 'DDD';
            • 3. Re: 1つのインスタンスに対し、複数のリスナーから接続できない
              atoz01
              皆様ありがとうございました。

              静的サービス登録でも、”local_listener”初期化パラメータに複数登録でも、
              2つのリスナーに同時接続できることが確認できました。

              助かりました。