9 Oracle Net Listenerの構成と管理
Oracle Net Listenerは、データベース・サーバーで実行される独立したプロセスです。着信中のクライアント接続要求を受信し、データベース・サーバーに対する要求の通信量を管理します。クライアント接続を受け入れるようにリスナーを構成する方法について説明します。
ノート:
Oracle Database 12cリリース2 (12.2)では、リスナーのパスワード機能はサポートされなくなりました。認証はローカル・オペレーティング・システムの認証機能によって実施されるため、セキュリティが失われることはありません。
- Oracle Net Listenerの概要
- 動的なサービス登録の構成
- インストール中のOracle Net Listenerの構成
- Oracle Net Listener構成のカスタマイズ
- リスナーの管理
- リスナーのリダイレクトの理解
関連項目:
-
初期の接続要求時のリスナーの使用方法は、「データベースの識別とアクセス」を参照してください
-
リスナーの概要は、「通信レイヤーの理解」を参照してください
親トピック: Oracle Net Servicesの構成と管理
9.1 Oracle Net Listenerの概要
ノート:
リスナーのリリースは、そのリスナーを介してサービスの提供を受けるすべてのOracle Databaseの最新のリリースと同等以上である必要があります。
リスナーは、1つ以上のリスニング・プロトコル・アドレス、サポートされるサービスについての情報および実行時の動作を制御するパラメータから構成されます。リスナーの構成は、listener.ora
とネーミングされた構成ファイルに格納されます。
構成パラメータにはデフォルト値が設定されているため、構成前のリスナーを起動して使用できます。デフォルトのリスナーはLISTENER
とネーミングされ、起動時はサービスがサポートされていないため次のTCP/IPプロトコル・アドレスのリスニングを行います。
(ADDRESS=(PROTOCOL=tcp)(HOST=host_name
)(PORT=1521))
リスナーはクライアント要求をサポートされているサービスに転送します。これらのサービスは、リスナーに動的に登録されます。この動的登録機能は、サービス登録と呼ばれます。登録は、リスナー登録(LREG)プロセスによって実行されます。動的サービス登録では、listener.ora
ファイルでの手動による構成は不要です。
9.2 動的なサービス登録の構成
サービス登録によって、Oracle Databaseなどのプロセスはリスナーに対して使用できるサービスを識別できます。サービス登録は、これらのサービスのポート・マッパーとなります。リスナーは、サービス登録から受信したデータベースやインスタンスの動的なサービス情報を使用します。
動的なサービス登録は、データベース初期化ファイルで構成されています。listener.ora
ファイルでの構成は必要ありません。ただし、データベース初期化ファイルで指定したポートでリスニングするようにリスナー構成を設定する必要があります。COSTパラメータなどの自動登録を妨げるパラメータは設定しないでください。
この項で説明する、サービス登録に関連する構成に関する項目は、次のとおりです。
親トピック: Oracle Net Listenerの構成と管理
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
と入力された場合、ab
とcd
の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 専用サーバー環境でのローカル・リスナーの登録
-
ローカル・リスナーのあるホストで、Oracle Net Managerを使用してリスナーのプロトコル・アドレスを備えた
listener.ora
ファイルを構成します。 -
データベースで、データベース初期化パラメータ・ファイルのLOCAL_LISTENERパラメータをローカル・リスナーの別名に設定します。たとえば:
ALTER SYSTEM SET LOCAL_LISTENER=listener_sales1;
データベースが共有サーバー接続用に構成されている場合、
LISTENER
属性を次のように設定できます。ALTER SYSTEM SET DISPATCHERS="(PROTOCOL=tcp)(LISTENER=listener_sales1)";
-
テキスト・エディタを使用して、データベース・ホストの
tnsnames.ora
ファイルでLOCAL_LISTENER
設定のリスナー名の別名を次のように解決します。listener_sales1= (DESCRIPTION = (ADDRESS = (PROTOCOL=tcp)(HOST=sales-server)(PORT=1421)))
ノート:
-
ローカル・リスナーを登録する場合で、Oracle Connection Managerを使用する場合は、
(DESCRIPTION =
や閉じかっこを含めないでください。 -
ネットワーク・サービス名のエントリは、接続記述子のCONNECT_DATAセクションなしでプロトコル・アドレス用に作成できます。
-
関連項目:
-
ALTER SYSTEM
文の詳細は、『Oracle Database SQL リファレンス』を参照してください。
親トピック: 動的なサービス登録の構成
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にこのシナリオを示します。
関連項目:
ALTER SYSTEM SET
文の詳細は、『Oracle Database SQLリファレンス』を参照してください。
例9-2は、専用サーバー環境でリモート・リスナーを登録する方法を示しています。この例では、リモート・リスナーはsales2-server
です。
例9-2 専用サーバー環境でのリモート・リスナーの登録
-
リモート・リスナーのあるホストで、Oracle Net Managerを使用してリモート・リスナーのプロトコル・アドレスを備えた
listener.ora
ファイルを構成します。 -
リクエストをリダイレクトさせたいデータベースで、データベース初期化パラメータ・ファイルのREMOTE_LISTENERパラメータを、たとえば次のようなリモート・リスナーの別名に設定します。
ALTER SYSTEM SET REMOTE_LISTENER=listener_sales2;
共有サーバー接続の場合は、ホスト
sales1-server
上のデータベースの初期化ファイルのDISPATCHERパラメータを次のように設定します。ALTER SYSTEM SET DISPATCHERS="(PROTOCOL=tcp)(LISTENER=listeners_sales2)";
ノート:
REMOTE_LISTENER初期化パラメータを静的に更新するには、テキスト・エディタを使用して、以前に情報を登録したリモート・リスナーから情報の登録を解除します。
-
データベース・ホストの
tnsnames.ora
ファイルを介して、リモート・リスナーのリスナー名の別名を解決します。たとえば:listener_sales2= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-server)(PORT=1521)))
関連項目:
-
REMOTE_LISTENER初期化パラメータについて学習するには、『Oracle Databaseリファレンス』を参照してください。
-
Oracle RAC環境でリモート・リスナー(SCANリスナーとも呼ばれます)を構成する方法を学習するには、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。
親トピック: 動的なサービス登録の構成
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つのネットワークの使用
network1
とnetwork2
という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))'
前述の例で、local1
はremote1
にのみ登録され、remote1
は接続をlocal1
にのみリダイレクトします。local2
はremote2
にのみ登録され、remote2
は接続をlocal2
にのみリダイレクトします。
例9-4 複数のリスナーの構成
複数のリスナーがsales-network
というネットワークでリスニングしているとします。次の条件が真になります。
-
専用サーバーの接続用に構成されたデータベースがホスト
sales1-server
にあります。これはネットワーク上にある唯一のデータベースです。 -
ローカル・リスナーが
sales1-server
にあり、非デフォルトのポート1421でリスニングします。 -
リモート・リスナーがホスト
sales2-server
にあり、ポート1521でリスニングします。 -
別のリモート・リスナーがホスト
sales3-server
にあり、ポート1521でリスニングします。
次の手順では、専用サーバー環境のすべてのリスナーに情報を登録する方法について説明します。
-
リモート・リスナーが存在するホスト(この例では
sales2-server
およびsales3-server
)で、リモート・リスナーのプロトコル・アドレスを使用してlistener.ora
ファイルを構成します。 -
リクエストをリダイレクトさせたいデータベースで、データベース初期化パラメータ・ファイルのREMOTE_LISTENERパラメータをリモート・リスナーの別名に設定し、LOCAL_LISTENERパラメータをローカル・リスナーの別名に設定します。
ホスト
sales1-server
上のデータベースの初期化ファイルのパラメータを次のように設定します。REMOTE_LISTENER="listener_sales2,listener_sales3" LOCAL_LISTENER=listener_sales1
-
データベース・ホストの
tnsnames.ora
ファイルを介して、LOCAL_LISTENERおよびREMOTE_LISTENER設定のリスナー名の別名を解決します。sales1-server
上のtnsnames.ora
で、ローカル・リスナー・エイリアスおよびリモート・リスナー・エイリアスlistener_sales1
、listener_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))))
関連項目:
-
REMOTE_LISTENER初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。
親トピック: 動的なサービス登録の構成
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接続要求の最大数を、必要な接続要求数と一致するように指定することで、パフォーマンスを向上できます。
親トピック: Oracle Net Listenerの構成と管理
9.4 Oracle Net Listener構成のカスタマイズ
デフォルトの構成またはインストールした構成が特定の環境に対して適切でない場合は、Oracle Net Managerを使用してlistener.ora
の構成をカスタマイズできます。
- リスニング用プロトコル・アドレスの構成
- 多数の同時接続要求の処理
- Oracle Net Listenerのセキュリティの管理
デフォルトでは、Oracle Net Listenerはセキュリティ上の理由からローカル管理のみを許可しています。ポリシーとして、リスナーは起動したユーザーのみが管理できます。これはローカル・オペレーティング・システム認証によって適用されます。
親トピック: Oracle Net Listenerの構成と管理
9.4.1 リスニング用プロトコル・アドレスの構成
Oracle Enterprise Manager Cloud ControlおよびOracle Net Managerは、リスナーのプロトコル・サポートの構成に使用できます。
「IPv6インタフェースとアドレス構成」で説明したように、Oracle Net Listenerのエンドポイント・アドレス構成は、IPv6アドレスとIPv6アドレスに解決されるホスト名の両方を受け入れます。これにより、IPv6クライアントを処理するリスニング・エンドポイントが作成されます。
- Oracle Enterprise Manager Cloud Controlを使用したリスニング用プロトコル・アドレスの構成
Oracle Enterprise Manager Cloud ControlのNet Services管理ページからリスナーのプロトコル・アドレスを構成します。 - Oracle Net Managerを使用したリスニング用プロトコル・アドレスの構成
親トピック: Oracle Net Listener構成のカスタマイズ
9.4.1.1 Oracle Enterprise Manager Cloud Controlを使用したリスニング用プロトコル・アドレスの構成
Oracle Enterprise Manager Cloud ControlのNet Services管理ページからリスナーのプロトコル・アドレスを構成します。
-
Oracle Enterprise Manager Cloud Controlの「Net Services管理」ページにアクセスします。
-
「編集」をクリックします。データベース・サーバーへのログインを求められる場合があります。
リスナーの編集ページが表示されます。
-
アドレス・セクションで次のようにプロトコル・サポートを設定します。
-
「追加」をクリックします。
「アドレスの追加」ページが表示されます。
-
「プロトコル」リストからリスナーがリスニングするように構成されているプロトコルを選択します。
TCP/IPの場合、使用しているコンピュータに複数のIPアドレスがあり、使用可能なすべてのIPアドレスでリスナーがリスニングするためには、「TCP/IP」またはTLS付きTCP/IPを選択し、「ホスト」フィールドにコンピュータのホスト名を入力します。
-
「ポート」にポート番号を入力します。
TCP/IP上でリスニングするためにリスナーを構成する場合は、デフォルトのポートとして1521を入力します。それ以外の場合は、初期化パラメータ・ファイルにLOCAL_LISTENERパラメータを構成し、任意のネーミング・メソッドで使用するためのデフォルト以外のポート番号を指定する必要があります。
-
「ホスト」にホスト・アドレスを入力します。
-
(オプション)「拡張パラメータ」セクションを使用して、このセッションにおける送受信操作に必要なI/Oバッファ・スペース制限を「合計送信バッファ・サイズ」および「合計受信バッファ・サイズ」フィールドに指定します。
-
「OK」をクリックします。
プロトコル・アドレスは、アドレス・セクションに追加されます。
-
-
その他のプロトコルについてもステップ3を繰り返します。
9.4.1.2 Oracle Net Managerを使用したリスニング用プロトコル・アドレスの構成
次の手順では、Oracle Net Managerを使用してリスナーのプロトコル・アドレスを構成する方法について説明します。
-
Oracle Net Managerを起動します。
-
ナビゲータ・ペインで、「ローカル」を展開し、次に「リスナー」を選択します。
-
リスナーを選択します。
-
右ペインのリストから、リスナーの位置を選択します。
-
「プロトコル」リストからプロトコルを選択します。
-
「ホスト」フィールドにリスナーのホスト名を入力します。
-
「ポート」フィールドにポート番号を入力します。
-
送信および受信バッファのサイズを設定する場合は、「詳細の表示」をクリックし、適切なフィールドにサイズを入力します。
-
「ファイル」メニューから「ネットワーク構成の保存」を選択して変更を保存します。
親トピック: リスニング用プロトコル・アドレスの構成
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
-
親トピック: Oracle Net Listener構成のカスタマイズ
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
パッケージは、アクセス制御ポリシーを管理するためのインタフェースを提供します。
親トピック: Oracle Net Listener構成のカスタマイズ
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_name
をlistener.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_name
、REGISTRATION_INVITED_NODES_listener_name
およびREGISTRATION_EXCLUDED_NODES_listener_name
パラメータの詳細は、Oracle Database Net Servicesリファレンスを参照してください
9.5 リスナーの管理
リスナーを構成後、リスナー制御ユーティリティ、Oracle Enterprise Manager Cloud Controlおよびサーバー制御ユーティリティ(SRVCTL)を使用して、リスナーを管理できます。この項では、リスナーの管理タスクの一部について説明します。次の項目が含まれます。
関連項目:
-
リスナー制御ユーティリティのコマンドの完全なリストは、『Oracle Database Net Servicesリファレンス』を参照してください。
-
Oracle Enterprise Manager Cloud Controlのオンライン・ヘルプ
親トピック: Oracle Net Listenerの構成と管理
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からリスナーを起動または停止する方法について説明します。
-
Oracle Enterprise Manager Cloud Controlの「Net Services管理」ページにアクセスします。
-
「管理」リストから「リスナー」を選択し、構成ファイルの場所を含むOracleホームを選択します。
-
「実行」をクリックします。
「リスナー」ページが表示されます。
-
リスナーを選択します。
-
「アクション」リストから「開始/停止」を選択します。
-
「実行」をクリックします。
「開始/停止」ページが表示されます。
-
選択したリスナーの現行ステータスに応じて、「停止」または「起動」を選択し、「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管理者ガイド』を参照してください。
親トピック: Oracle Restart構成のリスナーの管理
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
親トピック: Oracle Restart構成のリスナーの管理
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
親トピック: Oracle Restart構成のリスナーの管理
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コマンド
出力セクション | 説明 |
---|---|
リスナーのステータス |
リスナーのステータスは次のとおりです。
|
Listening Endpoints Summary (リスニング・エンドポイントのサマリー) |
リスナーがリスニングするように構成されているプロトコル・アドレス。 |
Services Summary (サービスのサマリー) |
リスナーに登録されたサービスおよび各サービスに割り当てられたサービス・ハンドラのサマリー。 |
Service (サービス) |
登録されたサービス。 |
Instance (インスタンス) |
サービスに関連付けられたインスタンスの名前。 ステータス・フィールドは、インスタンスが接続を受け入れられるかどうかを示します。
|
親トピック: リスナーの現在のステータスの確定
9.5.3.2 Oracle Enterprise Manager Cloud Controlを使用したステータスの表示
次の手順では、Oracle Enterprise Manager Cloud Controlを使用してリスナーのステータスを表示する方法について説明します。
-
Oracle Enterprise Manager Cloud Controlの「Net Services管理」ページにアクセスします。
-
「管理」リストから「リスナー」を選択し、構成ファイルの場所を含むOracleホームを選択します。
-
「実行」をクリックします。データベース・サーバーへのログインを求められる場合があります。
「リスナー」ページが表示されます。
-
リスナーを選択します。
-
「アクション」リストから「リスナー制御ステータスの表示」を選択します。
-
「実行」をクリックします。
「リスナー制御ステータス」ページが表示されます。
-
内容を確認した後、ページの一番上にあるリスナーのリンクをクリックします。
親トピック: リスナーの現在のステータスの確定
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 (インスタンス) |
サービスに関連付けられたインスタンスの名前。 ステータス・フィールドは、インスタンスが接続を受け入れられるかどうかを示します。
|
Handlers (ハンドラ) |
サービス・ハンドラの名前。ディスパッチャは、 このセクションでは、サービス・ハンドラの次の項目も識別されます。
|
親トピック: リスナーの管理
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
に設定します。このパラメータをノード・リスナー用に設定することはしないでください。特定のネットワーク構成内で無限リダイレクト・ループが生じる可能性があります。
親トピック: Oracle Net Listenerの構成と管理