COL: CSS:



Oracle Net Listener (リスナー)

listener.ora ファイル

リスナーは,クライアントからの接続要求をリスニングし,ユーザ・プロセスとサーバ・プロセス間の接続の橋渡しをするプロセスで,デフォルトのリスナー構成ファイルのファイル名は listener.ora

listener.ora には,データベースを識別するプロトコル・アドレスが含まれている。このアドレスにより,リスナーがリスニングするプロトコル,およびその他のプロトコル固有の情報が定義される。

/* Code050201: listener.ora ファイルで,リスナーの情報が記述されている箇所 */
  :
(DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=my-srv) (PORT=1521)))
  :             ↑
           TCP/IPプロトコルによる,ホスト名:my-srv / port 番号:1521 のリスナー
/* cf.: ローカル・ネーミングで使用する tnsnames.ora での接続要求 */
  :
(DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=my-srv) (PORT=1521)))
    (CONNECT_DATA=
        (SERVICE_NAME=foo.bar.com)))
  :             ↑
           クライアントからリスナーへ foo.bar.com というデータベース・サービスへ接続要求

コマンドラインからのリスナーの起動 / 停止

Oracle リスナーは,サーバを再起動すると自動的に起動するように設定されているが,システムで予想外の状況が発生した場合や,手動でリスナーを停止した場合,コマンドラインで再起動する必要があり,次の文字列を入力する。※ リスナー名がデフォルトのまま (LISTENER) ならば,手動起動時にリスナー名を省略できる。下記の例では,リスナー "L1" を起動している。

/* Code050202: リスナーの起動/停止 (1) */

$lsnrctl                  ← リスナー制御ユーティリティの起動
 :
LSNRCTL> start L1         ← リスナー "L1" を手動起動
LSNRCTL> exit             ← リスナー制御ユーティリティの停止
$
/* Code050203: リスナーの起動/停止 (2) */

$lsnrctl start L1         ← リスナー制御ユーティリティからリスナー "L1" の起動

リスナーの状態を確認したいときは,Enterprise Manager から確認するか,またはコマンドラインで次の文字列を入力することでも確認可能。

/* Code050204: リスナーの状態確認 */

$lsnrctl status           ← リスナー制御ユーティリティからリスナーの状態確認

リスナーを終了したい場合,Enterprise Manager 上から行うか,またはコマンドラインで次の文字列を入力すれば停止可能。

/* Code050205: リスナーの停止 */

$lsnrctl stop L1          ← リスナー制御ユーティリティからリスナー "L1" の停止

静的 / 動的サービス登録

接続要求を受けたリスナーは Oracle サーバへの接続を仲介する働きをするが,リスナーが Oracle サーバの場所を把握していなくては仲介することができない。Oracle サーバをリスナーに認識させる手段として,以下のものが存在する。

静的サービス登録
リスナー構成ファイル listener.ora に Oracle サーバの情報を予め記載しておき,リスナーが Oracle サーバの場所を認識する方法。
動的サービス登録
Oracle サーバ起動時に,Oracle サーバがリスナーに認識させる方法。
初期化パラメータファイルの SERVICE_NAMESINSTANCE_NAME パラメータ (Oracle サーバ情報) を,初期化パラメータファイルの LOCAL_LISTENER パラメータで指定した特定のリスナーに対して登録することで認識させる。