16.6.9 リスナー・ログの分析

リスナー・ログ・ファイルには、監査証跡、サービス登録関連イベント、ダイレクト・ハンドオフ・イベント、Oracle Notification Service (ONS)ノードダウン・イベントのサブスクリプションおよびOracle Clusterware通知に関する情報が記録されます。

16.6.9.1 リスナー・ログ監査証跡

リスナー・ログ・ファイル内の監査証跡情報を使用すると、ネットワーク使用状況統計、クライアント接続リクエスト、リスナー制御ユーティリティによって発行されたコマンドなどを分析できます。

16.6.9.1.1 リスナー・ログ監査証跡情報

監査証跡情報は、ネットワーク使用状況、クライアント接続リクエストおよびリスナー制御ユーティリティによって発行されるコマンド(RELOADSTARTSTOPSTATUSSERVICESなど)に関する統計で構成されます。

監査証跡情報を表に保存した後、それをレポート形式に書式設定することで、傾向とユーザー・アクティビティを確認できます。データを表にインポートするには、SQL*Loaderなどのインポート・ユーティリティを使用します。

16.6.9.1.2 リスナーのログ監査証跡の書式

これは、リスナー・ログ・ファイルに取得される監査証跡テキスト・フィールドの書式です。

Timestamp * Connect Data [* Protocol Info] * Event [* SID | Service] * Return Code

監査証跡のプロパティは、次のとおりです。

  • 各フィールドはアスタリスク(*)で区切られます。

  • プロトコル・アドレス情報、およびサービス名またはSID情報は、接続が試行された場合のみ記録されます。

  • 成功した接続またはコマンドには、コード0(ゼロ)が戻ります。

  • 失敗した場合は、エラー・メッセージに対応するコードが生成されます。

例16-5に、RELOADコマンド要求のログ・ファイルの出力例を示します。

例16-5 正常なRELOAD要求に対するリスナー・ログ・イベント

14-OCT-2022 00:29:54 *
(connect_data=(cid=(program=)(host=sales-server)(user=jdoe))(command=reload)
(arguments=64)(service=listener)(version=135290880))
* reload * 0

例16-6に、正常な接続要求のログ・ファイルの出力例を示します。

例16-6 正常な接続要求に対するリスナー・ログ・イベント

14-OCT-2022 15:28:58 * 
(connect_data=(service_name=sales.us.example.com)(cid=(program=)(host=sales-server)
(user=jdoe))(CONNECTION_ID=abcdefgtx42abCde6V/aB602xAbCDe==))(TARGET_INSTANCE=sales)  
* (address=(protocol=tcp)(host=192.0.2.35)(port=41349)) * establish 
* sales.us.example.com * 0 

例16-7は、ホストsales-serverによるSTATUSコマンドが正常に実行された場合のログ・ファイルの抜粋を示しています。この後、IPアドレス192.0.2.35のクライアントによる接続試行が失敗しています。この接続試行の結果、ORA-12525: 「TNS: リスナーは、クライアントのリクエストを許容時間内に受信しませんでした」エラー・メッセージが表示されます。このエラーは、クライアントがlistener.oraファイルのINBOUND_CONNECT_TIMEOUT_listener_nameパラメータで指定された時間内に接続要求を完了するのに失敗すると発生します。このクライアントはリスナーにサービス拒否攻撃をしようとした可能性があります。

例16-7 失敗した接続要求に対するリスナー・ログ・イベント

03-OCT-2022 16:41:57 * 
(CONNECT_DATA=(CID=(PROGRAM=)(HOST=sales-server)(USER=jdoe))(COMMAND=status)
(ARGUMENTS=64)(SERVICE=LISTENER)(VERSION=153092352)) * status * 0
03-OCT-2022 16:42:35 * <unknown connect data> *
(ADDRESS=(PROTOCOL=tcp)(HOST=192.0.2.35)(PORT=53208)) * establish * 
<unknown sid> * 12525
TNS-12525: TNS:listener has not received client's request in time allowed
TNS-12604: TNS: Application timeout occurred

16.6.9.2 リスナーのサービス登録イベント

リスナー・ログ・ファイル内のサービス登録イベント情報を使用すると、インスタンスのサービス名、インスタンス名、サービス・ハンドラ、ロード情報、動的リスニング・エンドポイントなどの登録関連の統計を分析できます。

16.6.9.2.1 リスナーのサービス登録イベント情報

サービス登録情報は、service_registerservice_updateservice_diedなどのデータベース・サービス登録イベントに関連する統計で構成されています。

サービス登録時に、リスナー登録(LREG)プロセスは、次の項目に関する情報をリスナーに提供します。

  • データベースにおける稼働中の各インスタンスのサービス名

  • データベースのインスタンス名

  • 各インスタンスで使用可能なサービス・ハンドラ(ディスパッチャまたは専用サーバー)

  • ディスパッチャ、インスタンスおよびノードのロード情報

  • 動的リスニング・エンドポイント

表16-15 サービス登録イベントのログ情報

イベント 説明

service_register

リスナーがインスタンスについて受信する登録情報。

service_update

特定インスタンスについてリスナーが受信する更新された登録情報(ディスパッチャやインスタンスのロード情報など)。

これらのメッセージには、このservice_updateの間に実行されたすべての更新操作も表示されます。

service_died

リスナーがLREGで確立できない接続の接続切断情報。インスタンスの登録情報はすべて廃棄されます。LREGによって再度登録されるまで、クライアントはそのインスタンスには接続できません。

16.6.9.2.2 リスナーのサービス登録情報の書式

これは、リスナー・ログ・ファイルに取得されたサービス登録イベント・メッセージごとの書式です。

表16-16 サービス登録イベントの書式

イベント 書式

service_register

Timestamp * Address * Event *  Instance Name * Return Code

service_update

Timestamp * Event * Registration Update Operation * Instance Name * Return Code

service_died

Timestamp * Event *  Instance Name * Return Code

サービス登録フィールドのプロパティは次のとおりです。

  • 各フィールドはアスタリスク(*)で区切られます。

  • 通常は、1つのインスタンスのイベントが複数回連続して記録されます。

  • 正常に登録されると、コード0(ゼロ)が戻ります。これは、クライアントがインスタンスに接続できたことを示します。

  • 失敗した場合は、エラー・メッセージに対応するコードが生成されます。

例16-8は、サービス登録イベントが記録されたログ・ファイルを示しています。リスナーは正常なservice_registerイベントの後はクライアント要求を受信できますが、service_diedイベントの後はクライアント要求を受信できません。

例16-8 サービス登録イベントが記録されたリスナー・ログ

------------------------------- 
01-OCT-2022 11:40:06 * (ADDRESS=(PROTOCOL=tcp)(HOST=192.0.2.35)(PORT=46750)) * service_register * sales * 0
01-OCT-2022 11:40:26 * (connect_data=(service_name=sales.us.example.com)(cid=(program=)(host=sales-server)(user=jdoe)))
* (address=(protocol=tcp)(host=192.0.2.35)(port=41349)) * establish * sales.us.example.com * 0
01-OCT-2022 11:41:51 * service_update * inst_upd=1 handler_upd=2 * sales * 0
01-OCT-2022 11:41:57 * service_update * inst_upd=1 handler_upd=2 * sales * 0
01-OCT-2022 11:42:06 * service_update * inst_upd=1 handler_upd=2 * sales * 0
01-OCT-2022 11:42:08 * (connect_data=(service_name=sales.us.example.com)(cid=(program=)(host=sales-server)(user=jdoe)))
* (address=(protocol=tcp)(host=192.0.2.35)(port=41365)) * establish * sales.us.example.com * 0
01-OCT-2022 11:57:02 * service_died * sales * 12537
01-OCT-2022 11:57:10 * (connect_data=(service_name=sales.us.example.com)(cid=(program=)(host=sales-server)(user=jdoe)))
* (address=(protocol=tcp)(host=192.0.2.35)(port=41406)) * establish * sales.us.example.com * 12514
TNS-12514: TNS:Cannot connect to database. Service sales.us.example.com is not registered with the listener at host 192.0.2.35 port 41365. 
(CONNECTION_ID=4VIdFEpcSe3gU+FoRmR0aA==)
--------------------------------

16.6.9.3 リスナー・ハンドラ・ブロック情報

リスナー・ログ・ファイルのリスナー・ハンドラ・ブロック情報によって、ブロックされたハンドラとブロック解除されたハンドラに関するイベントを分析できます。

サービス・ハンドラがデータベース・インスタンスまたはリスナーによってブロックまたはブロック解除されると、次の形式で、ブロックまたはブロック解除されたハンドラの詳細がロード情報とともに表示されます。

Timestamp * Handler Blocked or Unblocked by Instance or Listener: Load Information * Instance Name 

例16-9 ハンドラ・ブロック・イベントのリスナー・ログ

19-OCT-2022 06:13:51 * dedicated handler blocked by instance : load = 79 * sales
19-OCT-2022 06:13:51 * dedicated handler blocked by listener : load = 79 * sales
19-OCT-2022 06:15:05 * dedicated handler unblocked: load = 74 * sales
19-OCT-2022 07:51:13 * dedicated handler blocked by instance * sales
19-OCT-2022 07:51:13 * dedicated handler unblocked by instance * sales

16.6.9.4 リスナーのダイレクト・ハンドオフ情報

リスナー・ログ・ファイル内のダイレクト・ハンドオフ情報を使用すると、ディスパッチャへのダイレクト・ハンドオフ・イベントを分析できます。

これらのイベントは次のフィールドで構成されます。

Timestamp * Presentation * Handoff  * Error Code

ダイレクト・ハンドオフ・フィールドのプロパティは次のとおりです。

  • 各フィールドはアスタリスク(*)で区切られます。

  • 成功した接続またはコマンドには、コード0(ゼロ)が戻ります。

  • 失敗した場合は、エラー・メッセージに対応するコードが生成されます。

次の例では、ログ・ファイル内のダイレクト・ハンドオフ・イベントを示します。

例16-10 ダイレクト・ハンドオフのリスナー・ログ・イベント

21-MAY-2012 10:54:55 * oracle.aurora.net.SALESHttp2 * handoff * 0

16.6.9.5 ONSノード停止イベント情報のリスナー・サブスクリプション

ONS構成ファイルを使用できる場合、リスナーは、起動時にOracle Notification Service (ONS)にノード停止イベントをサブスクライブします。リスナー・ログ・ファイル内のONSノード停止イベント情報を使用すると、これらのメッセージを分析できます。

このサブスクリプションにより、ノード停止イベント通知をONSから受信した場合、リスナーは、影響を受けたサービスを削除できます。リスナーは、イベント通知に非同期サブスクリプションを使用します。

ONSデーモンがホストで実行されていない場合など、サブスクリプションが完了しなかった場合、次の警告メッセージがSTATUSコマンドごとにリスナー・ログ・ファイルに記録されます。

WARNING: Subscription for node down event still pending 

サブスクリプションの保留中は、リスナーはONSイベントを受信できません。それ以外の場合、他のリスナー機能が影響を受けることはありません。

16.6.9.6 リスナーのOracle Clusterware通知情報

必要なOracle Clusterwareライブラリがインストールされていて、ホストでOracle Clusterwareが起動されている場合、リスナーは起動プロセスおよび停止プロセスでOracle Clusterwareのステータスを通知します。リスナー・ログ・ファイル内のOracle Clusterware通知情報を使用すると、これらのメッセージを分析できます。

Oracle Clusterware (次のログ・メッセージにCRSとして表示)への通知に成功すると、リスナーはイベントをログに記録します。通知が失敗した場合は、メッセージは記録されません。

Listener completed notification to CRS on start
Listener completed notification to CRS on stop