Forum Stats

  • 3,837,210 Users
  • 2,262,237 Discussions
  • 7,900,223 Comments

Discussions

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

atoz01
atoz01 Member Posts: 7
[環境]
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

Answers

  • Takashi Matsuoka
    Takashi Matsuoka Member Posts: 43
    edited Jan 22, 2012 6:25PM
    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
  • Blueloco
    Blueloco Member Posts: 118
    最初に何も設定しなくても 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';
  • atoz01
    atoz01 Member Posts: 7
    皆様ありがとうございました。

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

    助かりました。
This discussion has been closed.