Chapter 02

リスナー

Me
Me
2021.11.23に更新

リスナーとは

リスナーは、ネットワーク越しにクライアント要求を適切なデータベースに転送する役割をもつ独立したプロセスである. よって、リスナーが起動されていない場合はインスタンスが起動されていたとしてもユーザはセッションを作成することは出来ない. リスナーの設定はテキスト形式のファイルである listener.ora に記載が可能である.

ORACLE_HOME/network/admin/listener.ora
<リスナー名>=
  (DESCRIPTION=
    (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=<プロトコル>)(HOST=<ホスト名>)(PORT=<ポート番号>))
      (ADDRESS=(PROTOCOL=ipc)(KEY=<インスタンス名>))))

デフォルトのリスナーをデフォルトリスナーと呼ぶ.
初期設定の内容は以下の通り.

  • リスナー名 : LISTENER
  • ホスト名 : 稼働サーバのホスト名
  • ポート番号 : 1521
  • プロトコル : TCP/IP

リスナーの起動方法

リスナーの起動には以下のコマンドを用いる.

lsnrctl start <リスナー名>

デフォルトでリスナー名はデフォルトリスナーのLISTENERが指定される. 任意で設定した別リスナーの起動の際は別途指定が必要となる.
尚、lsnrctlコマンドのみを入力した場合、対話モードに入り、startなどのコマンドを入力することができる.


リスナー状態の確認方法

リスナーの稼働時間や登録されているデータベースサービスを確認する際は、以下のコマンドを用いる.

lsnrctl status <リスナー名> 
//リスナーの情報

lsnrctl services <リスナー名> 
//接続先のデータベースの情報

リスナーへのサービス登録方法

リスナーがクライアント要求を適切なデータベースへ転送するには、クライアント要求に含まれるデータベースサービス名を適切なインスタンスにマッピングできる必要がある. このマッピング情報として、サービスの登録にリスナーにデータベースサービス名とその名前に対応したインスタンスSIDの登録を行う.

上記のようなサービス登録を行うには以下のように2つの方法がある.

  1. 動的サービス登録 : インスタンス起動時/終了時にインスタンスのLREGプロセスにより自動にリスナーへのサービス登録/削除が行われる. LREGプロセスは初期化パラメータのLOCAL_LISTENER設定値を参照し、登録先のリスナーアドレスを取得する. 初期値としては、デフォルトリスナーの設定値が記載されており、アドレスは同ホストのポート1521番、プロトコルとしてはTCP/IPが指定されている. よって、デフォルトリスナー以外のリスナーを起動している場合は、LOCAL_LISTENERを明示的に設定する必要がある. インスタンスが動的サービス登録された後に、該当のリスナーのステータスを確認した場合は、インスタンスのステータスとしてはREADYと出力される.

  2. 静的サービス登録 : listener.oraSID_LIST_<リスナー名> にインスタンス SID を直接指定する. よって、インスタンスの起動/終了に関係なく、インスタンスがリスナーにサービス登録された状態が維持される. 同時に、リスナーはインスタンスの起動状態を把握できなくなるため、ステータスはUNKNOWNと出力される.


リスナーの停止方法

リスナーの起動には以下のコマンドを用いる.

lsnrctl stop <リスナー名>