プライマリ・コンテンツに移動
Oracle® Database Net Services管理者ガイド
11gリリース2 (11.2)
B56288-05
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

9 Oracle Net Listenerの構成と管理

Oracle Net Listenerとは、データベース・サーバー・コンピュータで実行される独立したプロセスです。着信中のクライアント接続要求を受信し、データベース・サーバーに対する要求の通信量を管理します。この章では、クライアント接続を受信するようにリスナーを構成する方法について説明します。

この章の内容は、次のとおりです。


注意:

Oracle Database 11gリリース2(11.2)では、パスワード機能が非推奨になっています。認証はローカル・オペレーティング・システムの認証機能によって実施されるため、セキュリティが失われることはありません。詳細は、『Oracle Database Net Servicesリファレンス』を参照してください。


関連項目:


Oracle Net Listenerの概要


注意:

リスナーのリリースは、そのリスナーを介してサービスの提供を受けるすべてのOracle Databaseの最新のリリースと同等以上である必要があります。

リスナーは、1つ以上のリスニング用プロトコル・アドレス、サポートされるサービスの情報および実行時の動作を制御するパラメータで構成されます。リスナーの構成は、listener.oraとネーミングされた構成ファイルに格納されます。

すべての構成パラメータにはデフォルト値が設定されているため、構成前のリスナーを起動して使用できます。デフォルトのリスナーはLISTENERとネーミングされ、起動時はサービスがサポートされていないため次のTCP/IPプロトコル・アドレスのリスニングを行います。

(ADDRESS=(PROTOCOL=tcp)(HOST=host_name)(PORT=1521))

リスナーはクライアント要求をサポートされているサービスに転送します。これらのサービスは、listener.oraファイルで静的に構成するか、動的にリスナーに登録できます。この動的登録機能は、サービス登録と呼ばれます。この登録は、データベースの初期化パラメータ・ファイルで構成されている各データベース・インスタンスのPMONプロセス(インスタンス・バックグラウンド・プロセス)によって実行されます。動的サービス登録では、listener.oraファイルでの手動による構成は不要です。

サービス登録には次の利点があります。

  • 構成の簡素化

    サービス登録によってSID_LIST_listener_nameパラメータ設定の必要性が削減されます。サービス登録では、listener.oraファイルにリスナーが提供するデータベース情報を指定します。


    注意:

    データベースの管理にOracle Enterprise Managerを使用している場合は、SID_LIST_listener_nameパラメータは必須です。

  • 接続時フェイルオーバー

    リスナーはインスタンスの状態を常時監視しているため、サービス登録では、あるインスタンスがダウンした場合に、別のインスタンスに対するクライアントの接続要求の自動フェイルオーバーが利用できます。


    注意:

    サービスが静的に構成されている場合、リスナーはクライアントの要求を受信したときに、専用サーバーを起動します。インスタンスが起動していない場合、サーバーは「Oracleは使用できません。」というエラー・メッセージを返します。

  • 接続ロード・バランシング

    サービス登録を利用すると、リスナーはクライアント接続要求をロード量の最も少ないインスタンスとディスパッチャ、または専用サーバーに転送します。サービス登録によって、サービス・ハンドラおよびノード全体の負荷がバランスされます。

  • Oracle Real Application ClustersおよびOracle Data Guardの高い可用性

インストール中のOracle Net Listenerの構成

Oracle Universal Installerは、インストール時にOracle Net Configuration Assistantを起動します。Oracle Net Configuration Assistantを使用して、Oracle Databaseのリスニング用プロトコル・アドレスおよびサービス情報を構成します。

Enterprise EditionまたはStandard Editionをデータベース・サーバーへインストールする際、Oracle Net Configuration Assistantは、自動的にリスナーを構成して、Oracle DatabaseのTCP/IPリスニング用プロトコル・アドレスを所有するLISTENERという名前を設定します。Customインストールでは、Oracle Net Configuration Assistantにより、リスナー名およびプロトコル・アドレスを入力するように求められます。

外部プロシージャ・コールのリスニングIPCプロトコル・アドレスは、インストレーション・タイプにかかわらず自動的に構成されます。Oracle Net Configuration Assistantでは、外部プロシージャのサービス情報もlistener.oraファイルに自動的に構成されます。

IPCプロトコルを使用している場合は、同時IPC接続要求の最大数を、必要な接続要求数と一致するように指定することで、パフォーマンスを向上できます。

例9-1では、listener.oraファイルの例を示します。LISTENERエントリでは、LISTENERという名前のリスナーのリスニング用プロトコル・アドレスが定義され、SID_LIST_LISTENERエントリでは、リスナーLISTENERが静的にサポートする外部サービス情報が提供されます。

例9-1 listener.oraファイルの例

LISTENER=
  (DESCRIPTION=
    (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))
      (ADDRESS=(PROTOCOL=ipc)(KEY=extproc) (queuesize=50))))
SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
      (SID_NAME=plsextproc)
      (ORACLE_HOME=/oracle11g)
      (PROGRAM=extproc)))

関連項目:

一意の名前によるリスナーの識別およびlistener.oraファイルでの複数のリスナー・エントリの作成については、『Oracle Database Net Servicesリファレンス』を参照してください。

Oracle Net Listener構成のカスタマイズ

デフォルトの構成またはインストールした構成が特定の環境に対して適切でない場合は、Oracle Net Managerを使用してlistener.oraの構成をカスタマイズできます。

この項で説明する構成に関する項目は、次のとおりです。

リスニング用プロトコル・アドレスの構成

Oracle Enterprise ManagerとOracle Net Managerを使用して、リスナーに対するプロトコル・サポートを構成できます。

「IPv6インタフェースとアドレス構成」で説明したように、Oracle Net Listenerのエンドポイント・アドレス構成は、IPv6アドレスとIPv6アドレスに解決されるホスト名の両方を受け入れます。これにより、IPv6クライアントを処理するリスニング・エンドポイントが作成されます。

Oracle Enterprise Managerを使用したリスニング・プロトコル・アドレスの構成

Oracle Enterprise Managerを使用してリスナー用のプロトコル・アドレスを構成するには、次の手順に従います。

  1. データベース・ホーム・ページの一般セクションで、「リスナー」の隣のリンクをクリックします。

    「リスナー」ページが表示されます。

  2. 「編集」をクリックします。

    リスナーの編集ページが表示されます。データベース・サーバーへのログインを求められる場合があります。

  3. アドレス・セクションで次のようにプロトコル・サポートを設定します。

    1. 「追加」をクリックします。

      「アドレスの追加」ページが表示されます。

    2. 「プロトコル」リストからリスナーがリスニングするように構成されているプロトコルを選択します。

      TCP/IPの場合、使用しているコンピュータに複数のIPアドレスがあり、リスナーに使用可能なすべてのIPアドレスをリスニングさせるには、「TCP/IP」または「SSL付きTCP/IP」を選択し、「ホスト」フィールドにコンピュータのホスト名を入力します。

    3. 「ポート」にポート番号を入力します。

      TCP/IP上でリスニングするためにリスナーを構成する場合は、デフォルトのポートとして1521を入力します。このポートを入力しない場合は、初期化パラメータ・ファイルにLOCAL_LISTENERパラメータを構成し、任意のネーミング・メソッドで使用するためのデフォルト以外のポート番号を指定する必要があります。

    4. 「ホスト」にホスト・アドレスを入力します。

    5. オプションで、拡張パラメータ・セクションを使用して、このセッションにおける送受信操作に必要なI/Oバッファ・スペース制限を「合計送信バッファ・サイズ」および「合計受信バッファ・サイズ」フィールドに指定します。

    6. 「OK」をクリックします。

      プロトコル・アドレスは、アドレス・セクションに追加されます。

  4. その他のプロトコルについてもステップ3を繰り返します。


関連項目:

  • プロトコル・アドレスおよびTCP/IP特権ポートの詳細は、『Oracle Database Net Servicesリファレンス』を参照してください。

  • 詳細は、「I/Oバッファ・スペースの構成」を参照してください。


Oracle Net Managerを使用したリスニング・プロトコル・アドレスの構成

Oracle Net Managerを使用してリスナー用のプロトコル・アドレスを構成するには、次の手順に従います。

  1. Oracle Net Managerを起動します。

  2. ナビゲータ・ペインで、「ローカル」を展開し、次に「リスナー」を選択します。

  3. リスナーを選択します。

  4. 右ペインのリストから、リスナーの位置を選択します。

  5. 「プロトコル」リストからプロトコルを選択します。

  6. 「ホスト」フィールドにリスナーのホスト名を入力します。

  7. 「ポート」フィールドにポート番号を入力します。

  8. 送信および受信バッファのサイズを設定する場合は、「詳細の表示」をクリックし、適切なフィールドにサイズを入力します。

  9. 「ファイル」メニューから「ネットワーク構成の保存」を選択して変更を保存します。

多数の同時接続要求の処理

リスナーによる同時接続要求の大量処理が予想される場合は、TCP/IPまたはIPCリスニング・エンドポイントに対してリスナー・キュー・サイズを指定できます。

リスナー・キュー・サイズを指定するには、次の手順に従います。

  • プロトコル・アドレスの終端にあるQUEUESIZEパラメータに、予想される同時要求数を指定します。

    次の例は、キュー・サイズを20に設定します。

    LISTENER=
     (DESCRIPTION=
      (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521)(QUEUESIZE=20)))
    

    注意:

    デフォルトの同時接続要求数は、オペレーティング・システムによって異なります。Linuxオペレーティング・システムとMicrosoft WindowsのTCP/IPのデフォルト値は、次のとおりです。
    • Linuxオペレーティング・システム: 128

    • Microsoft Windows XP Professional SP2: 10

    • Microsoft Windows 2003 Server Enterprise Edition: 200


静的サービス情報の構成

リスナーはlistener.oraファイルの静的な構成情報を使用する前に、データベースやインスタンスの動的なサービス情報を使用します。Oracle Enterprise Manager以外のツールからリモート・データベースを起動する必要がある場合、またはOracle8iより前のOracle Databaseを使用している場合は、静的なサービス情報の構成が必要です。

表9-1では、listener.oraファイルの静的なサービス設定を説明します。

表9-1 listener.oraの静的なサービス設定

Oracle Net Managerのフィールド listener.oraファイルのパラメータ 説明

SID

SID_NAME

インスタンスのOracleシステム識別子(SID)。SID値は、初期化パラメータ・ファイルのINSTANCE_NAMEパラメータから取得できます。

サービス名

GLOBAL_DBNAME

データベース・サービス。

クライアントの接続要求を処理中に、リスナーはこのパラメータの値と、クライアント接続記述子のSERVICE_NAMEパラメータの値が一致するか試行します。クライアント接続記述子によってSIDパラメータが使用されている場合は、リスナーは値をマップしません。このパラメータは、主にOracle8データベース(動的なサービス登録が専用サーバーでサポートされていない場合)での構成に適しています。構成によっては、このパラメータは、Oracle8i以上のデータベース・サービスを使用する際に必要となる場合があります。

このパラメータの値は、通常、初期化パラメータ・ファイルのDB_NAMEパラメータおよびDB_DOMAINパラメータ(DB_NAME.DB_DOMAIN)の値の組合せから入手しますが、値にはクライアントがサービスを識別するのに使用する有効な名前を含めることができます。

Oracleホーム・ディレクトリ

ORACLE_HOME

インスタンスのOracleホームの場所。このパラメータを設定しないと、リスナーに指定されているインスタンスのOracleホームが使用されます。

LinuxおよびUNIXでは、この設定はオプションです。

Microsoft Windowsでは、この設定は無視されます。Microsoft WindowsレジストリのHKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEIDにあるORACLE_HOMEパラメータで指定されているOracleホームが使用されます。



重要:

Oracle Real Application Clusters環境などで、接続時フェイルオーバーまたは透過的アプリケーション・フェイルオーバー(TAF)を使用している場合、GLOBAL_DBNAMEパラメータを設定しないでください。

リスナーを静的に構成するには、次の手順に従います。

  1. Oracle Enterprise Managerの「Net Services管理」ページにアクセスします。

  2. 「管理」リストから「リスナー」を選択し、構成ファイルを含むOracleホームを選択します。

  3. 「実行」をクリックします。データベース・サーバーへのログインを求められる場合があります。

    「リスナー」ページが表示されます。

  4. リスナーを選択し、「編集」をクリックします。

    リスナーの編集ページが表示されます。

  5. 「静的データベース登録」タブをクリックし、続いて「追加」をクリックします。

    「データベース・サービスを追加」ページが表示されます。必要な情報をフィールドに入力します。

  6. 「OK」をクリックします。


    注意:

    Oracle Net Managerを使用すると、静的なサービス情報の設定も行うことができます。詳細は、オンライン・ヘルプの「Statically Configure Database Service Information」を参照してください。

    次の例は、sales.us.example.comというデータベース・サービスに対して静的に構成されたlistener.oraファイルからの抜粋です。

    SID_LIST_listener=
    (SID_LIST=
     (SID_DESC=
      (GLOBAL_DBNAME=sales.us.example.com)
      (SID_NAME=sales)
      (ORACLE_HOME=/u01/app/oracle/11g)))
    

関連項目:

  • Oracle Databaseの動的なサービス登録の構成の詳細は、「サービス登録の構成」を参照してください。

  • 外部プロシージャおよび異機種間サービスのリスナーを静的に構成する方法の詳細は、第13章「Oracle Net Servicesの拡張機能の使用」を参照してください。

  • Oracle Enterprise Managerの詳細は、『Oracle Enterprise Manager構成ガイド』を参照してください。


Oracle Net Listenerのセキュリティの管理

デフォルトでは、Oracle Net Listenerではセキュリティ上の理由からローカル管理のみが可能です。ポリシーとして、リスナーは起動したユーザーのみが管理できます。これはローカル・オペレーティング・システム認証によって適用されます。たとえば、user1がリスナーを起動した場合、user1のみがリスナーを管理できます。リスナーの管理を試みるその他のユーザーはエラーを受け取ります。例外となるのはスーパーユーザーのみです。

リスナーの管理はデフォルト・モード(ローカル・オペレーティング・システムの認証機能による保護)で実行し、リモート・ログインを使用してシステムにリモート・アクセスすることをお薦めします。Oracle Enterprise Managerをリモート管理に使用することもできます。

Oracle Net Listenerパスワードの構成および変更

リスナーのローカル管理はローカル・オペレーティング・システムによりデフォルトで安全です。したがって、安全なローカル管理のためにはパスワードの設定は不要であり、推奨もされていません。ただし、リスナーに対してパスワードを設定し、リスナーの起動または停止、サポートされるサービスのリストの表示またはリスナー制御構成に対する変更内容の保存など、管理操作にセキュリティを確保できます。


注意:

PASSWORDS_listener_nameパラメータの設定が非暗号化パスワードである場合は、パスワードを変更する前にlistener.oraファイルからそのパスワードを削除する必要があります。非暗号化パスワードが削除されていない場合は、暗号化パスワードを設定できません。

リスナー制御ユーティリティ(lsnrctl)またはOracle Enterprise Managerを使用してOracle Net Listenerパスワードを構成または変更できます。

  • lsnrctlを使用して新しい暗号化パスワードを設定するには、次のコマンドを使用します。

    LSNRCTL> SET PASSWORD
    Password: password
    The command completed successfully
    
  • lsnrctlを使用して暗号化パスワードを変更するには、次のコマンドを使用します。

    LSNRCTL> CHANGE_PASSWORD
    Old password: old_password
    New password: new_secure_password
    Reenter new password: new_secure_password
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=tpc)(HOST=sales-server)(PORT=1521)))
    Password changed for LISTENER
    The command completed successfully
    
    LSNRCTL> SAVE_CONFIG
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=sales-server)(PORT=1521)))
    Saved LISTENER configuration parameters.
    Listener Parameter File   /oracle/network/admin/listener.ora
    Old Parameter File   /oracle/network/admin/listener.bak
    The command completed successfully
    
  • Oracle Enterprise Managerによる暗号化パスワードの設定と変更は次の手順に従います。

    1. Oracle Enterprise Managerの「Net Services管理」ページにアクセスします。

    2. 「管理」リストから「リスナー」を選択し、構成ファイルの場所を含むOracleホームを選択します。

    3. 「実行」をクリックします。データベース・サーバーへのログインを求められる場合があります。

      「リスナー」ページが表示されます。

    4. リスナーを選択し、「編集」をクリックします。

      リスナーの編集ページが表示されます。

    5. 「認証」タブをクリックします。

    6. 「リスナー操作にパスワードが必要」をクリックします。

    7. 「OK」をクリックします。

    8. リスナーを再起動します。


関連項目:

  • パスワードの最低要件の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

  • CHANGE_PASSWORDコマンドの詳細は、『Oracle Database Net Servicesリファレンス』を参照してください。

  • 詳細は、オンライン・ヘルプでリスナーのパスワード認証の構成に関するトピックを参照してください。


サービス登録の構成

サービス登録によって、Oracle Databaseなどのプロセスはリスナーに対して使用できるサービスを識別できます。サービス登録は、これらのサービスのポート・マッパーとなります。リスナーはlistener.oraファイルの静的な構成情報を使用する前に、サービス登録から受信したデータベースやインスタンスの動的なサービス情報を使用します。

動的なサービス登録は、データベース初期化ファイルで構成されています。listener.oraファイルでの構成は必要ありません。ただし、データベース初期化ファイルで指定したポートでリスニングするようにリスナー構成を設定する必要があります。COSTパラメータなどの自動登録を妨げるパラメータは設定しないでください。

この項で説明する、サービス登録に関連する構成に関する項目は、次のとおりです。

サービス登録の初期化パラメータの設定

サービス登録を正しく機能させるには、初期化パラメータ・ファイルに必ず次のパラメータが含まれている必要があります。

  • データベース・サービス名のSERVICE_NAMES

  • インスタンス名のINSTANCE_NAME

  • ローカル・リスナーのLOCAL_LISTENER

  • リモート・リスナーのREMOTE_LISTENER(ある場合)

たとえば、次のように指定します。

SERVICE_NAMES=sales.us.example.com
INSTANCE_NAME=sales

SERVICE_NAMESパラメータにはデフォルト値は、初期化パラメータ・ファイルのDB_NAMEDB_DOMAINパラメータからなるグローバル・データベース名が設定されています。INSTANCE_NAMEパラメータのデフォルト値にはSID値が設定されています。


関連項目:

SERVICE_NAMESパラメータおよびINSTANCE_NAMEパラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。

ローカル・リスナーへの情報の登録

デフォルトのPMONプロセスでは、TCP/IP、ポート1521のローカル・アドレス上のローカル・リスナーにサービス情報が登録されます。リスナー構成がデータベース構成と同期している場合、PMONでは、別のノード上の非デフォルトであるローカル・リスナーまたはリモート・リスナーにサービス情報を登録できます。同期が行われるのは、listener.oraファイルでリスナーのプロトコル・アドレスが指定され、初期化パラメータ・ファイルでリスナーの場所が指定されている場合です。

TCP/IPまたはポート1521を使用しないローカル・リスナーへPMONによって登録する必要がある場合は、初期化ファイルのLOCAL_LISTENERパラメータを構成して、ローカル・リスナーを指定します。

共有サーバー環境では、初期化パラメータ・ファイルのDISPATCHERSパラメータのLISTENER属性を使用して、ディスパッチャを非デフォルトのローカル・リスナーに登録できます。PMONでは、ディスパッチャ情報のリスナーへの登録にLOCAL_LISTENERパラメータとLISTENER属性が使用できるため、リスナーの値が同じ場合は、パラメータと属性の両方の指定は不要です。

LOCAL_LISTENERは、カンマ区切りのリスト・パラメータです。文字列にカンマがある場合、文字列全体を二重引用符で囲む必要があります。LOCAL_LISTENERパラメータを次のように設定します。

ALTER SYSTEM SET LOCAL LISTENER=["]listener_address["][,...];

たとえば、リスナー・アドレス"ab,cd"が入力された場合、1つのリスナー・アドレスに解決されます。アドレスがab,cdと入力された場合、abcdの2つのリスナー・アドレスに解決されます。

共有サーバー接続の場合は、LISTENER属性を次のように設定します。

ALTER SYSTEM SET DISPATCHERS="(PROTOCOL=tcp)(LISTENER=listener_address)";

前述のコマンドで、listener_addressは、データベース・サーバー上にあるtnsnames.oraファイルなどのネーミング・メソッドによってリスナー・プロトコル・アドレスに解決されます。


注意:

  • LOCAL_LISTENERパラメータの動的な更新には、次のようにSQL文のALTER SYSTEMを使用します。

    ALTER SYSTEM SET LOCAL_LISTENER=["]listener_address["][,...]
    

    次のような文でパラメータをNULLに設定すると、TCP/IP、ポート1521のデフォルトのローカル・アドレスが使用されます。

    ALTER SYSTEM SET LOCAL_LISTENER=''
    
  • LISTENER属性はLOCAL_LISTENERパラメータに優先されます。その結果、SQL文のALTER SYSTEM SET LOCAL_LISTENERはこの属性の設定値に影響を与えません。


例9-2では、データベースがホストsales1-serverにあります。このホスト上のリスナーはlistener_sales1という名前で、ポート1521ではなくポート1421でリスニングするように構成されています。

例9-2 専用サーバー環境でのローカル・リスナーの登録

  1. ローカル・リスナーのあるホストで、Oracle Net Managerを使用してリスナーのプロトコル・アドレスを備えたlistener.oraファイルを構成します。

  2. データベースで、データベース初期化パラメータ・ファイルのLOCAL_LISTENERパラメータをローカル・リスナーの別名に設定します。たとえば、次のように指定します。

    ALTER SYSTEM SET LOCAL_LISTENER=listener_sales1;
    

    データベースが共有サーバー接続用に構成されている場合、LISTENER属性を次のように設定できます。

    ALTER SYSTEM SET DISPATCHERS="(PROTOCOL=tcp)(LISTENER=listener_sales1)";
    
  3. テキスト・エディタを使用して、データベース・ホストのtnsnames.oraファイルでLOCAL_LISTENER設定のリスナー名の別名を次のように解決します。

    listener_sales1= 
     (DESCRIPTION = 
      (ADDRESS = (PROTOCOL=tcp)(HOST=sales-server)(PORT=1421)))
    

    注意:

    • ローカル・リスナーを登録する場合で、Oracle Connection Managerを使用する場合は、(DESCRIPTION =や閉じかっこを含めないでください。

    • ネット・サービス名のエントリは、接続記述子のCONNECT_DATAセクションなしでプロトコル・アドレス用に作成できます。



関連項目:


リモート・リスナーへの情報の登録

リモート・リスナーとは、あるコンピュータ上にあるリスナーのことで、別のコンピュータ上にあるデータベース・インスタンスに接続をリダイレクトします。リモート・リスナーは通常、Oracle Real Application Clusters(Oracle RAC)環境で使用されます。Oracle RACなどでは、リモート・リスナーへの登録は、共有サーバーまたは専用サーバーの環境用に構成できます。

専用サーバー環境では、PMONバックグラウンド・プロセスを有効にしてリモート・リスナーに登録する必要があります。このためには、初期化パラメータ・ファイルで、カンマ区切りリスト・パラメータであるREMOTE_LISTENERパラメータを構成します。REMOTE_LISTENERの構文は次のとおりです。

ALTER SYSTEM SET REMOTE_LISTENER=["]listener_address["][,...];

前述のコマンドで、listener_addressは、データベース・ホスト上にあるtnsnames.oraファイルなどのネーミング・メソッドによってリスナー・プロトコル・アドレスに解決されます。リスナー・アドレスにカンマがある場合、文字列全体を引用符で囲む必要があります。

共有サーバー環境では、専用サーバー環境に対するものと同じ登録テクニックを使用できます。あるいは、任意のリスナーにディスパッチャを登録するように初期化パラメータ・ファイルのDISPATCHERSパラメータのLISTENER属性を設定することもできます。LISTENER属性の構文は次のとおりです。

ALTER SYSTEM SET DISPATCHERS="(PROTOCOL=tcp)(LISTENER=listener_address)";

注意:

LISTENER属性はREMOTE_LISTENER初期化パラメータに優先されます。PMONでは、ディスパッチャ情報のリスナーへの登録にREMOTE_LISTENER初期化パラメータとLISTENER属性が使用できるため、リスナーの値が同じ場合は、パラメータと属性の両方を指定する必要がありません。

たとえば、listener-sales2というリモート・リスナーがホストsales2-serverのポート1521でリスニングし、データベースがホストsales1-server上にあるとします。sales2-server上のリスナーで、このデータベースに接続要求をリダイレクトするとします。図9-1にこのシナリオを示します。

図9-1 リモート・リスナー

図9-1の説明が続きます。
「図9-1 リモート・リスナー」の説明


関連項目:

ALTER SYSTEM SET文の詳細は、『Oracle Database SQLリファレンス』を参照してください。

例9-3は、専用サーバー環境でリモート・リスナーを登録する方法を示しています。この例では、リモート・リスナーはsales2-serverです。

例9-3 専用サーバー環境でのリモート・リスナーの登録

  1. リモート・リスナーのあるホストで、Oracle Net Managerを使用してリモート・リスナーのプロトコル・アドレスを備えたlistener.oraファイルを構成します。

  2. リクエストをリダイレクトさせたいデータベースで、データベース初期化パラメータ・ファイルのREMOTE_LISTENERパラメータを、たとえば次のようなリモート・リスナーの別名に設定します。

    ALTER SYSTEM SET REMOTE_LISTENER=listener_sales2;
    

    共有サーバー接続の場合は、ホストsales1-server上のデータベースの初期化ファイルのDISPATCHERパラメータを次のように設定します。

    ALTER SYSTEM SET DISPATCHERS="(PROTOCOL=tcp)(LISTENER=listeners_sales2)";
    

    注意:

    REMOTE_LISTENER初期化パラメータを静的に更新するには、テキスト・エディタを使用して、以前に情報を登録したリモート・リスナーから情報の登録を解除します。

  3. データベース・ホストのtnsnames.oraファイルを介して、REMOTE_LISTENER設定のリスナー名の別名を解決します。たとえば、次のように指定します。

    listener_sales2= 
     (DESCRIPTION= 
       (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-server)(PORT=1521)))
    

関連項目:


ネットワーク内の全リスナーへの情報の登録

ネットワークには複数のローカル・リスナーとリモート・リスナーを含めることができます。デフォルトでは、すべてのリスナーが相互に登録されます。LISTENER_NETWORKS初期化パラメータに一連のリスナーを指定することで、リモート・リスナーのサブセットとともにローカル・リスナーのサブセットを指定できます。LISTENER_NETWORKSパラメータで指定されているリスナーを、LOCAL_LISTENERパラメータおよびREMOTE_LISTENERパラメータで指定しないでください。

LISTENER_NETWORKSの構文は次のとおりです。

LISTENER_NETWORKS = '((NAME=network_name)
                      (LOCAL_LISTENER=["]listener_address[,...]["])
                      [(REMOTE_LISTENER=["]listener_address[,...]["])])'

前述の構文で、listener_addressは、LOCAL_LISTENERおよびREMOTE_LISTENERのルールに従って解決されます。

例9-4 サブネットでの2つのネットワークの使用

network1network2という2つの個別のネットワークがあるとします。network1には、local1というローカル・リスナーとremote1というリモート・リスナーが存在します。network2には、local2というローカル・リスナーとremote2というリモート・リスナーが存在します。次の構文により、リスナーが同じネットワーク上のリスナーにのみ接続をリダイレクトするように登録が設定されます。

LISTENER_NETWORKS = 
           '((NAME=network1) (LOCAL_LISTENER=local1) (REMOTE_LISTENER=remote1))',
           '((NAME=network2) (LOCAL_LISTENER=local2) (REMOTE_LISTENER=remote2))'

前述の例で、local1remote1にのみ登録され、remote1は接続をlocal1にのみリダイレクトします。local2remote2にのみ登録され、remote2は接続をlocal2にのみリダイレクトします。

例9-5 複数のリスナーの構成

複数のリスナーがsales-networkというネットワークでリスニングしているとします。次の条件が真になります。

  • 専用サーバーの接続用に構成されたデータベースがホストsales1-serverにあります。これはネットワーク上にある唯一のデータベースです。

  • ローカル・リスナーがsales1-serverにあり、非デフォルトのポート1421でリスニングします。

  • リモート・リスナーがホストsales2-serverにあり、ポート1521でリスニングします。

  • 別のリモート・リスナーがホストsales3-serverにあり、ポート1521でリスニングします。

専用サーバー環境のすべてのリスナーに情報を登録するには、次の手順に従います。

  1. リモート・リスナーが存在するホスト(この例ではsales2-serverおよびsales3-server)で、リモート・リスナーのプロトコル・アドレスを使用してlistener.oraファイルを構成します。

  2. リクエストをリダイレクトさせたいデータベースで、データベース初期化パラメータ・ファイルのREMOTE_LISTENERパラメータをリモート・リスナーの別名に設定し、LOCAL_LISTENERパラメータをローカル・リスナーの別名に設定します。

    ホストsales1-server上のデータベースの初期化ファイルのパラメータを次のように設定します。

    REMOTE_LISTENER="listener_sales2,listener_sales3"
    LOCAL_LISTENER=listener_sales1
    
  3. データベース・ホストのtnsnames.oraファイルを介して、LOCAL_LISTENERおよびREMOTE_LISTENER設定のリスナー名の別名を解決します。

    sales1-server上のtnsnames.oraで、リモート・リスナーの別名listener_sales1listener_sales2およびlistener_sales3を次のように解決します。

    listener_sales1=
     (DESCRIPTION=
      (ADDRESS=(PROTOCOL=TCP)(HOST=sales1-server)(PORT=1421)))
    
    listener_sales2=
     (DESCRIPTION=
      (ADDRESS=(PROTOCOL=TCP)(HOST=sales2-server)(PORT=1521)))
    
    listener_sales3=
     (DESCRIPTION=
      (ADDRESS=(PROTOCOL=TCP)(HOST=sales3-server)(PORT=1521)))
    
    listener_sales_local= 
     (DESCRIPTION= 
      (ADDRESS=(PROTOCOL=tcp)(HOST=salesl-server)(PORT=1421)))
    
    listener_sales_remote= 
    (DESCRIPTION_LIST=
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sales2-server)(PORT=1521))) 
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sales3-server)(PORT=1521))))
    

関連項目:


ネーミング・メソッドの構成

LOCAL_LISTENER初期化パラメータ、REMOTE_LISTENER初期化パラメータまたはLISTENER属性に指定したリスナー名の別名は、tnsnames.oraにより解決します。ネット・サービス名のエントリは、接続記述子のCONNECT_DATAセクションなしでプロトコル・アドレス用に作成できます。Oracle Enterprise ManagerとOracle Net Managerでは、CONNECT_DATA情報なしでtnsnames.oraファイルを構成できません。リスナー名の別名を使用するには、テキスト・エディタを使用してtnsnames.oraファイルを変更することをお薦めします。

たとえば、LOCAL_LISTENERlistener_sales1に設定され、listener_sales1でポート1421上のTCP/IPが使用される場合、tnsnames.oraファイルのエントリを次のように表します。

listener_sales1= 
  (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1421))

注意:

  • 複数のアドレスがサポートされていますが、接続時フェイルオーバー機能とクライアント・ロード・バランシング機能はサポートされていません。

  • LOCAL_LISTENERパラメータで指定したリスナーの別名が無効であるか解決されない場合、PMONプロセスはデータベースの起動を許可しません。次のエラーが発生します。

    ORA-00119: invalid specification for system parameter 
               LOCAL_LISTENER
    ORA-00132: syntax error or unresolved network name '%s'
    


関連項目:

複数のアドレス構成については、第13章「Oracle Net Servicesの拡張機能の使用」を参照してください。

リスナーの管理

リスナーを構成後、リスナー制御ユーティリティ、Oracle Enterprise Managerおよびサーバー制御ユーティリティ(SRVCTL)を使用して、リスナーを管理できます。この項では、次に示すように、リスナーの管理タスクの一部について説明します。内容は次のとおりです。


関連項目:

  • リスナー制御ユーティリティのコマンドの完全なリストは、『Oracle Database Net Servicesリファレンス』を参照してください。

  • Oracle Enterprise Managerオンライン・ヘルプ


リスナーの起動と停止

リスナーを停止または起動するには、次のいずれかの方法を使用します。


注意:

リスナーは、作動中のコンピュータを再起動するたびに自動的に起動するよう構成できます。自動再起動を確立する方法については、オペレーティング・システムのマニュアルを参照してください。

リスナー制御ユーティリティを使用したリスナーの起動または停止

コマンドラインからリスナーを起動するには、次のように入力します。

lsnrctl START [listener_name]

前述のコマンドで、listener_nameは、listener.oraファイルに定義されているリスナーの名前です。デフォルトのLISTENERという名前のリスナーを使用している場合、リスナーを指定する必要はありません。

リスナー制御ユーティリティは、リスナーの起動に加えリスナーへの接続性を検証します。

コマンドラインからリスナーを停止するには、次のように入力します。

lsnrctl STOP [listener_name]

前述のコマンドで、listener_nameは、listener.oraファイルに定義されているリスナーの名前です。デフォルトのLISTENERという名前のリスナーを使用している場合、リスナーを指定する必要はありません。

Oracle Enterprise Managerを使用したリスナーの起動または停止

Oracle Enterprise Managerからリスナーを起動または停止するには、次の手順に従います。

  1. Oracle Enterprise Managerの「Net Services管理」ページにアクセスします。

  2. 「管理」リストから「リスナー」を選択し、構成ファイルの場所を含むOracleホームを選択します。

  3. 「実行」をクリックします。

    「リスナー」ページが表示されます。

  4. リスナーを選択します。

  5. 「アクション」リストから「開始/停止」を選択します。

    「開始/停止」ページが表示されます。

  6. 選択したリスナーの現行ステータスに応じて、「停止」または「起動」を選択し、「OK」をクリックします。

Oracle Restart構成のリスナーの管理

Oracle Restart機能は、シングル・インスタンス・データベース環境でプロセスおよびアプリケーションの可用性を強化します。選択したコンポーネントをOracle Restart構成に追加できます。Oracle Restartエージェントは、チェック操作を定期的に実行し、必要に応じてコンポーネントを再起動することで、追加されたコンポーネントの状態を監視します。

リスナーをコンポーネントとしてOracle Restart構成に追加できます。リスナーは、障害が発生した場合、または動作していない場合にOracle Restartによって自動的に起動されます。たとえば、コンピュータを予定どおりに再起動した後にデータベース・インスタンスを再起動すると、Oracle Restartによりリスナーが再起動されます。サーバー制御(SRVCTL)は、Oracle Restart構成でリスナーを管理するために使用できるコマンドライン・インタフェースです。

構成されたすべてのリスナーを表示するには、次のコマンドを使用します。

srvctl config listener

関連項目:

Oracle Restartの構成方法、およびSRVCTLの構文とセマンティクスの詳細は、『Oracle Database管理者ガイド』を参照してください。

SRVCTLを使用したリスナーの追加または削除

リスナーを追加することは、リスナーのエントリをグリッド・インフラストラクチャに追加して、エージェントがこのコンポーネントを監視できるようにすることを意味します。同様に、リスナーを削除することは、リスナーのエントリを削除することを意味します。どちらの場合も、オペレーティング・システムのコマンドラインでコマンドsrvctlを入力します。

  • リスナーを追加するには、「srvctl add listener」と入力します。

    たとえば、次のコマンドは、listener_sales1のエントリをグリッド・インフラストラクチャに追加します。

    % srvctl add listener -l listener_sales1
    
  • リスナーを削除するには、「srvctl remove listener」と入力します。

    たとえば、次のコマンドは、listener_sales1のエントリをグリッド・インフラストラクチャから削除します。

    % srvctl remove listener -l listener_sales1
    

SRVCTLを使用したリスナーの起動または停止

SRVCTLユーティリティでは、リスナーを停止および起動できます。-lパラメータを指定しない場合、デフォルトのリスナーが起動および停止されます。

  • リスナーを起動するには、「srvctl start listener」と入力します。

    たとえば、最初のコマンドではデフォルトのリスナーが起動され、2番目のコマンドではlistener1およびlistener2が起動されます。

    % srvctl start listener
    % srvctl start listener -l listener1,listener2
    
  • リスナーを停止するには、「srvctl stop listener」と入力します。

    たとえば、最初のコマンドではデフォルトのリスナーが停止され、2番目のコマンドではlistener1およびlistener2が停止されます。

    % srvctl stop listener
    % srvctl stop listener -l listener1,listener2
    

リスナーの現在のステータスの確定

リスナーの現在のステータスを表示するには、リスナー制御ユーティリティのSTATUSコマンドかOracle Enterprise Managerを使用します。ステータス出力により、リスナーの基本的なステータス情報、リスナー構成の設定の概要、リスニング用プロトコル・アドレスおよびリスナーに登録されたサービスの概要が提供されます。

リスナー制御を使用したステータスの表示

コマンドラインからリスナーのステータスを表示するには、次のように入力します。

lsnrctl STATUS [listener_name]

前述のコマンドで、listener_nameは、listener.oraファイルに定義されているリスナーの名前です。デフォルトのLISTENERという名前のリスナーを使用している場合、リスナーを指定する必要はありません。

例9-6では、STATUSコマンドの出力例を示しています。

例9-6 リスナー制御ユーティリティのSTATUSコマンドの出力

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=net)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.0.2
Start Date                15-NOV-2009 20:22:00
Uptime                    0 days 0 hr. 5 min. 22 sec
Trace Level               support
Security                  OFF
SNMP                      OFF
Listener Parameter File   /oracle/admin/listener.ora
Listener Log File         /oracle/network/log/listener.log
Listener Trace File       /oracle/network/trace/listener.trc
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=net)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=sales-server)(PORT=2484)))
 
Services Summary...
Service "sales.us.example.com" has 1 instance(s).
  Instance "sales", status READY, has 3 handler(s) for this service...
Service "hr.us.example.com" has 1 instance(s).
  Instance "hr", status READY, has 2 handler(s) for this service...
The command completed successfully

STATUSコマンドにより表9-2で説明しているセクションが出力されます。

表9-2 リスナー制御ユーティリティのSTATUSコマンド

出力セクション 説明

リスナーのステータス

リスナーのステータスは次のいずれかです。

  • リスナーの別名

  • リスナーのバージョン

  • 開始時刻と終了時刻

  • トレース・レベル

  • リスナーが、SNMPベースのネットワーク管理システムからの問合せに応答できるかどうか

  • 使用しているlistener.oraファイル

  • 構成の設定のロギングとトレース

  • listener.oraファイルにパスワードが設定されているか

リスニングのエンドポイント・サマリー

リスナーがリスニングするように構成されているプロトコル・アドレス

サービスのサマリー

リスナーに登録されたサービスおよび各サービスに割り当てられたサービス・ハンドラのサマリー

サービス

登録されたサービス

インスタンス

サービスと関連付けられたインスタンスの名前とステータス、およびサービスと関連付けられたサービス・ハンドラの数

ステータスは次のいずれかです。

  • READYステータスは、インスタンスが接続を受け入れられることを意味します。

  • BLOCKEDステータスは、インスタンスが接続を受け入れられないことを意味します。

  • READY/SECONDARYステータスは、これがOracle Real Application Clustersのプライマリ/セカンダリ構成のセカンダリ・インスタンスであり、接続を受け入れられることを意味しています。

  • UNKNOWNステータスは、インスタンスが、サービス登録を使用して動的に登録されているのではなく、listener.oraファイルに静的に登録されていることを意味します。このため、ステータスは不明です。


Oracle Enterprise Managerを使用したステータスの表示

Oracle Enterprise Managerからリスナーのステータスを表示するには、次の手順に従います。

  1. Oracle Enterprise Managerの「Net Services管理」ページにアクセスします。

  2. 「管理」リストから「リスナー」を選択し、構成ファイルの場所を含むOracleホームを選択します。

  3. 「実行」をクリックします。データベース・サーバーへのログインを求められる場合があります。

    「リスナー」ページが表示されます。

  4. リスナーを選択します。

  5. 「アクション」リストから「リスナー制御ステータスの表示」を選択します。

  6. 「実行」をクリックします。

    「リスナー制御ステータス」ページが表示されます。

  7. 内容を確認した後、ページの一番上にあるリスナーのリンクをクリックします。

リスナーのサービスの監視

リスナー制御ユーティリティのSERVICESコマンドにより、リスナーに登録されたサービスやインスタンス、および各インスタンスに割り当てられたサービス・ハンドラの詳細情報が提供されます。コマンドラインからサービスやインスタンスについての情報を表示するには、次のように入力します。

lsnrctl SERVICES [listener_name]

例9-7では、SERVICESコマンドの出力例を示しています。

例9-7 リスナー制御ユーティリティのSERVICESコマンドの出力

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=net)))
Services Summary...
Service "sales.us.example.com" has 1 instance(s).
  Instance "sales", status READY, has 3 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0 state:ready
         LOCAL SERVER
      "D000" established:0 refused:0 current:0 max:10000 state:ready
         DISPATCHER <machine: sales-server, pid: 1689>
         (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=52414))
      "D001" established:0 refused:0 current:0 max:10000 state:ready
         DISPATCHER <machine: sales-server, pid: 1691>
         (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=52415))
Service "hr.us.example.com" has 1 instance(s).
  Instance "hr", status READY, has 2 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0 state:ready
         LOCAL SERVER
      "D000" established:0 refused:0 current:0 max:10000 state:ready
         DISPATCHER <machine: sales-server, pid: 11326>
         (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=58361))
The command completed successfully

この出力では、2つのデータベース・サービス、sales.us.example.comおよびhr.us.example.comがリスナーに登録されていることが示されています。

sales.us.example.comへのクライアントの接続要求は、D000およびD001とネーミングされた2つのディスパッチャと1つの専用サーバーにより処理されます。すべてのハンドラは、readyのステータスを所有していて、接続を受け取れることを示しています。

hr.us.example.comへのクライアントの接続要求は、D001とネーミングされた1つのディスパッチャと1つの専用サーバーにより処理されます。

SERVICESコマンドにより表9-3で説明している次の情報が出力されます。

表9-3 リスナー制御ユーティリティのSERVICESコマンド

出力セクション 説明

サービス

登録されたサービス。

インスタンス

サービスに関連付けられたインスタンスの名前。

ステータス・フィールドは、インスタンスが接続を受け入れられるかどうかを示します。

  • READYステータスは、インスタンスが接続を受け入れられることを意味します。

  • BLOCKEDステータスは、インスタンスが接続を受け入れられないことを意味します。

  • READY/SECONDARYステータスは、これがOracle Real Application Clustersのプライマリ/セカンダリ構成のセカンダリ・インスタンスであり、接続を受け入れられることを意味しています。

  • RESTRICTEDステータスは、そのインスタンスが制約のあるモードであることを示しています。リスナーは、このインスタンスへの接続をすべて阻止します。

  • UNKNOWNステータスは、インスタンスが、サービス登録を使用して動的に登録されているのではなく、listener.oraファイルに静的に登録されていることを意味します。このため、ステータスは不明です。

ハンドラ

サービス・ハンドラの名前。ディスパッチャは、D000からD999までネーミングされます。専用サーバーの名前は、DEDICATEDです。

このセクションでは、サービス・ハンドラの次の項目も識別されます。

  • established: このサービス・ハンドラが確立したクライアントの接続数。

  • refused: このサービス・ハンドラが拒否したクライアントの接続数。

  • current: 処理中のクライアントの接続数(すなわち、現在のロード)。

  • max: サービス・ハンドラが扱う最大接続数(すなわち、最大ロード)。

  • state: 次に示すハンドラの状態

    - READY状態は、サービス・ハンドラが新しい接続を受け入れられることを意味します。

    - BLOCKED状態は、サービス・ハンドラが新しい接続を受け入れられないことを意味します。


リスナー・ログ・ファイルの監視

次の状況が認められた場合は、次のリスナー・ログ・ファイルでエラー情報を確認します。

  • 長期接続の回数

  • 接続障害と接続拒否

  • DoS攻撃を示唆するようなリスナーの予測外のシャットダウン