9 Oracle Net Listenerの構成と管理

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

ノート:

Oracle Database 12cリリース2 (12.2)では、リスナーのパスワード機能はサポートされなくなりました。認証はローカル・オペレーティング・システムの認証機能によって実施されるため、セキュリティが失われることはありません。

関連項目:

9.1 Oracle Net Listenerの概要

ノート:

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

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

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

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

リスナーはクライアント要求をサポートされているサービスに転送します。これらのサービスは、リスナーに動的に登録されます。この動的登録機能は、サービス登録と呼ばれます。登録は、リスナー登録(LREG)プロセスによって実行されます。動的サービス登録では、listener.oraファイルでの手動による構成は不要です。

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

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

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

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

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

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

9.2 動的なサービス登録の構成

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

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

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

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

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

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

  • インスタンス名のINSTANCE_NAME

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

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

  • フォワード・リスナーのFORWARD_LISTENER

たとえば:

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

SERVICE_NAMESパラメータのデフォルト値には、初期化パラメータ・ファイルのDB_NAMEとDB_DOMAINパラメータからなるグローバル・データベース名が設定されています。INSTANCE_NAMEパラメータのデフォルト値は、Oracleシステム識別子(SID)です。

ノート:

Oracle Database 19c以降、SERVICE_NAMESパラメータをお客様が使用することは非推奨になりました。サービスを管理するには、SRVCTLまたはGDSCTLコマンドライン・ユーティリティ、またはDBMS_SERVICEパッケージを使用することをお薦めします。

関連項目:

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

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

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

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

共有サーバー環境では、初期化パラメータ・ファイルのDISPATCHERSパラメータのLISTENER属性を使用して、ディスパッチャを非デフォルトのローカル・リスナーに登録できます。LREGでは、ディスパッチャ情報のリスナーへの登録に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-1では、データベースがホストsales1-serverにあります。このホスト上のリスナーはlistener_sales1という名前で、ポート1521ではなくポート1421でリスニングするように構成されています。

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

  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セクションなしでプロトコル・アドレス用に作成できます。

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

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

専用サーバー環境では、LREGバックグラウンド・プロセスを有効にしてリモート・リスナーに登録する必要があります。このためには、初期化パラメータ・ファイルで、カンマ区切りリスト・パラメータである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初期化パラメータに優先されます。LREGでは、ディスパッチャ情報のリスナーへの登録に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-2は、専用サーバー環境でリモート・リスナーを登録する方法を示しています。この例では、リモート・リスナーはsales2-serverです。

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

  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ファイルを介して、リモート・リスナーのリスナー名の別名を解決します。たとえば:

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

関連項目:

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

ネットワークには複数のローカル・リスナーとリモート・リスナーを含めることができます。デフォルトでは、すべてのリスナーが相互に登録されます。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-3 サブネットでの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-4 複数のリスナーの構成

複数のリスナーが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))))
    

関連項目:

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

LOCAL_LISTENERまたはREMOTE_LISTENER初期化パラメータ、またはLISTENER属性に指定したリスナー名の別名は、tnsnames.oraファイルにより解決できます。たとえば、リスナーがinit.oraファイルで次のように定義されるとします。

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

リスナーの別名を使用するには、init.oraおよびtnsnames.oraファイルに次のように定義します。

  • init.oraファイル:

    LOCAL_LISTENER = listener_sales1 
    
  • tnsnames.oraファイル:

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

CONNECT_DATA情報は、tnsnames.oraファイルのネットワーク・サービス・エントリに含めません。ただし、CONNECT_DATA情報がないと、Oracle Enterprise Manager Cloud ControlおよびOracle Net Managerはtnsnames.oraファイルを構成できません。リスナー名の別名を使用するには、テキスト・エディタを使用してtnsnames.oraファイルを変更することをお薦めします。

ノート:

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

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

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

関連項目:

複数のアドレス構成の詳細は、「Oracle Net Servicesの拡張機能の使用」を参照してください

9.3 インストール中の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.4 Oracle Net Listener構成のカスタマイズ

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

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

Oracle Enterprise Manager Cloud ControlおよびOracle Net Managerは、リスナーのプロトコル・サポートの構成に使用できます。

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

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

Oracle Enterprise Manager Cloud ControlのNet Services管理ページからリスナーのプロトコル・アドレスを構成します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

リスナーによる同時接続要求の大量処理が予想される場合は、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 Server Enterprise Edition: 200

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

デフォルトでは、Oracle Net Listenerではセキュリティ上の理由からローカル管理のみが可能です。ポリシーとして、リスナーは起動したユーザーのみが管理できます。これはローカル・オペレーティング・システム認証によって適用されます。


たとえば、user1がリスナーを起動した場合、user1のみがリスナーを管理できます。リスナーの管理を試みるその他のユーザーはエラーを受け取ります。例外となるのはスーパーユーザーのみです。

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

ファイアウォール機能が有効化されているIP (TCP、TCPS、およびSDP)ベースのエンドポイント上のリスナーに向かう接続は、サービスACLの検証を受けます。リスナーは、サービス名の受信後にACLリストで接続IPを検証します。

エンドポイントには、ファイアウォール機能を有効化するための新しい属性FIREWALLが追加されています。

(ADDRESS=(PROTOCOL=TCP)(HOST=)(PORT=1521)(FIREWALL=ON))

FIREWALLパラメータを次のように構成できます。

  • エンドポイントで(FIREWALL=ON)が明示的に設定されている場合: このエンドポイントに到着したすべての接続に対して、厳密なACL検証が有効になります。あるサービスに対応するACLが構成されていない場合、そのサービスの接続はすべて拒否されます。

  • エンドポイントでFIREWALLが設定されていない場合: 緩い検証を意味します。あるサービスに対応するACLが構成されいる場合、そのサービスに対応する検証が実行されます。ACLが存在しない場合、検証は実行されず、そのサービスの接続はすべて受け入れられます。

  • エンドポイントで(FIREWALL=OFF)が設定されている場合: 検証は実行されず、このエンドポイントからの接続はすべて受け入れられます。

サーバーもACLを強制適用します。

DBMS_SFW_ACL_ADMINパッケージは、アクセス制御ポリシーを管理するためのインタフェースを提供します。

9.4.3.1 有効なノードおよびサブネットの指定

リスナーの登録は、有効なノードおよびサブネットに制限するようにしてください。登録に指定できるのは有効なノードおよびサブネットですが、除外されたノードも登録に指定できます。デフォルトでは、リスナーでの登録のすべての着信接続でIPベースのフィルタリングが実行されます。接続が許可されるのは、発信元がローカル・マシンの場合のみです。もう一方のノードおよびサブネットが登録に指定されると、ローカル・マシンおよび指定されたマシンが許可されます。次のパラメータをlistener.oraファイルに指定して、有効なノードおよびサブネットと、制限されたノードおよびサブネットを指定できます。

  • REGISTRATION_INVITED_NODES_listener_name: リスナーに登録可能なノードを指定します。リストは、ホスト名、またはIPv4およびIPv6アドレスのCIDR表記が可能です。リストにホスト名が存在する場合は、すべてのIPアドレスが招待の状態にマップされます。

  • REGISTRATION_EXCLUDED_NODES_listener_name: リスナーに登録できないノードを指定します。リストに指定されていないノードでもリスナーに登録できます。

両方のパラメータが設定されている場合、REGISTRATION_EXCLUDED_NODES_listener_nameは無視されます。

デフォルトでは、SCANリスナー・エージェントはREMOTE_ADDRESS_REGISTRATION_listener_nameをプライベートIPエンドポイントに設定します。SCANリスナーは、プライベート・ネットワークからの登録要求のみを受け入れます。SCANリスナーのプライベート・ネットワークにアクセスできないリモート・ノードは、listener.oraファイルのregistration_invited_nodes_aliasパラメータを使用して、またはコマンドライン・インタフェースのSRVCTLを使用してSCANリスナーを変更して、有効なノードのリストに含める必要があります。

ノート:

Oracle Grid Infrastructure 12c以降、SCANリスナーについて、VALID_NODE_CHECKING_REGISTRATION_listener_nameおよびREGISTRATION_INVITED_NODES_listener_nameパラメータがlistener.oraファイルに設定されている場合、リスナー・エージェントはこれらのパラメータを上書きします。

SRVCTLユーティリティを使用してinvitednodes値とinvitedsubnets値を設定すると、リスナー・エージェントは自動的にVALID_NODE_CHECKING_REGISTRATION_listener_nameをSUBNETに設定し、REGISTRATION_INVITED_NODES_listener_namelistener.oraファイルで指定されたリストに設定します。

CRSによって管理されるその他のリスナーの場合、リスナー・エージェントは、listener.oraファイルでまだ設定されていない場合にのみ、listener.oraファイルでVALID_NODE_CHECKING_REGISTRATION_listener_nameをSUBNETに設定します。SRVCTLユーティリティでは、SCAN以外のリスナーについてinvitednodes値とinvitedsubnets値の設定はサポートされていません。リスナー・エージェントは、SCAN以外のリスナーについてlistener.oraファイルのREGISTRATION_INVITED_NODES_listener_nameを更新しません。

関連項目:

VALID_NODE_CHECKING_REGISTRATION_listener_nameREGISTRATION_INVITED_NODES_listener_nameおよびREGISTRATION_EXCLUDED_NODES_listener_nameパラメータの詳細は、Oracle Database Net Servicesリファレンスを参照してください

9.5 リスナーの管理

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

関連項目:

9.5.1 リスナーの起動と停止

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

ノート:

リスナーは、コンピュータの実行や再起動に応じて自動的に起動するよう構成できます。詳細は、「Oracle Restart構成のリスナーの管理」を参照してください。

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

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

lsnrctl START [listener_name]

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

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

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

lsnrctl STOP [listener_name]

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

ノート:

Oracleホーム・ユーザーを使用する場合、Microsoft Windowsシステムでリスナー制御ユーティリティからパスワードを要求されます。このパスワードは、Oracleホーム・ユーザーのオペレーティング・システム・パスワードです。パスワード・プロンプトが表示されるのは、リスナー・サービスが存在せず、リスナーの起動の一部として作成する必要がある場合のみです。

関連項目:

Oracleホーム・ユーザーの詳細は、『Oracle Databaseプラットフォーム・ガイド for Microsoft Windows』を参照してください。

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

次の手順では、Oracle Enterprise Manager Cloud Controlからリスナーを起動または停止する方法について説明します。

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

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

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

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

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

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

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

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

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

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

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

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

9.5.2.1 SRVCTLユーティリティを使用した構成済のリスナーの表示

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

% srvctl config listener

関連項目:

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

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

リスナーをエントリとしてグリッド・インフラストラクチャに追加すると、エージェントでリスナーを監視できます。同様に、リスナーをエントリとして削除できます。次のように、オペレーティング・システムのコマンドラインでsrvctlコマンドを使用します。

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

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

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

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

    % srvctl remove listener -listener listener_sales1
9.5.2.3 SRVCTLユーティリティを使用したリスナーの起動または停止

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

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

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

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

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

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

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

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

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

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

lsnrctl STATUS [listener_name]

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

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

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=net)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 18.0.0.0.0
Start Date                15-MAY-2017 20:22:00
Uptime                    65 days 10 hr. 5 min. 22 sec
Trace Level               support
Security                  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-1で説明しているセクションが含まれます。

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

出力セクション 説明

リスナーのステータス

リスナーのステータスは次のとおりです。

  • リスナーの別名

  • リスナーのバージョン

  • 開始時刻と終了時刻

  • トレース・レベル

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

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

Listening Endpoints Summary (リスニング・エンドポイントのサマリー)

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

Services Summary (サービスのサマリー)

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

Service (サービス)

登録されたサービス。

Instance (インスタンス)

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

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

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

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

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

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

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

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

次の手順では、Oracle Enterprise Manager Cloud Controlを使用してリスナーのステータスを表示する方法について説明します。

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

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

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

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

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

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

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

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

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

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

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

lsnrctl SERVICES [listener_name]

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

例9-6 リスナー制御ユーティリティの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-2で説明している次の情報が出力されます。

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

出力セクション 説明

Services (サービス)

登録されたサービス。

Instance (インスタンス)

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

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

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

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

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

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

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

Handlers (ハンドラ)

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

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

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

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

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

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

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

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

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

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

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

  • 長期接続の回数

  • 接続障害と接続拒否

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

9.6 リスナーのリダイレクトの理解

Oracle Database 12cリリース2 (12.2)から、リスナー・リダイレクト機能により、プラガブル・データベース(PDB)がOracle Public Cloud内の新しい場所に移行された後でも、クライアントは未変更の接続記述子を使用してPDBに接続できるようになっています。

リスナー登録(LREG)プロセスが、新しいハンドラをPDBのローカル・リスナーまたは移行のプロセス内にあるサービスに登録します。このハンドラには、PDBまたはサービスが移行されたデータベースの新しいリスナー・アドレスが入っています。新しいリスナー・アドレスは、Oracle RACデータベースの場合は単一クライアント・アクセス名(SCAN)リスナーのアドレスに、また単一インスタンス・データベースの場合はローカル・リスナーのアドレスにできます。これで、リスナーがクライアントを新しいアドレスにリダイレクトできます。

ローカル・リスナーがOracle RAC構成内のSCANリスナーにリダイレクトした場合、このリスナーは、クライアントの接続要求をさらに別のクラスタ・ノードにリダイレクトする必要がある場合があります。このような複数リダイレクトは、Oracle Netリスナーではデフォルトでサポートされません。SCANリスナーがすでにリダイレクトされたクライアント接続要求を転送できるようにするには、ALLOW_MULTIPLE_REDIRECTS_listener_nameパラメータをそのlistener.oraファイルに追加します。パラメータをTRUEに設定します。このパラメータをノード・リスナー用に設定することはしないでください。特定のネットワーク構成内で無限リダイレクト・ループが生じる可能性があります。