プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebLogic Server診断フレームワークの構成と使用
12c (12.2.1.3.0)
E90355-03
目次へ移動
目次

前
次

18 デバッグ・パッチの使用

WebLogic診断フレームワーク(WLDF)はデバッグ・パッチを動的に適用する機能をサポートするため、パッチを使用して診断情報をキャプチャできます。パッチはサーバーを再起動せずにアクティブ化および非アクティブ化できます。

デバッグ・パッチの動的適用

デバッグ・パッチの動的適用によって、サーバーの再起動を回避しながら、インストゥルメントされたデバッグ・パッチを適用してエラーに関する追加情報を収集できます。

JARファイルとしてパッケージ化されるデバッグ・パッチは、My Oracle Support (https://support.oracle.com/)を通じて生成され、本番環境で発生したエラーの追加情報を収集するために使用されます。通常、デバッグ・パッチのJARファイルは、クラスパスに追加され、これらのJARファイルを有効にするには、すべてのサーバー・インスタンスを再起動する必要があります。これは、スケジュールなどの制約によって本番環境でサーバー・インスタンスを再起動できない可能性があるため、問題があります。また、サーバー・インスタンスを再起動すると、メモリー内の状態が失われるため、問題が消失したり、再現されるまでに時間がかかる可能性があります。さらに、これらのデバッグ・パッチが必要なくなったときは、サーバーの再起動をせずに非アクティブ化できます。

デバッグ・パッチが動的に適用されると、WebLogic Serverは、Javaホットスワップを使用して、ロード済のクラスをデバッグ・パッチのJARファイルに付属するバージョンに置き換えます。「Javaホットスワップの有効化」を参照してください

デバッグ・パッチ・ディレクトリの指定

デバッグ・パッチのJARファイルは、デバッグ・パッチ・ディレクトリという特定のディレクトリから取得されます。

このディレクトリは、DebugPatchesMBeanDebugPatchDirectory属性を使用してドメイン全体から指定されます。デフォルトでは、DOMAIN_HOMEディレクトリ内のdebug_patchesディレクトリがデバッグ・パッチ・ディレクトリとして使用されます。

この機能は、ドメインの管理権限を持つユーザーのみが使用できます。デバッグ・パッチのJARファイルをデバッグ・パッチ・ディレクトリに配置できるのは、権限のあるユーザーのみです。このディレクトリは、ファイル・システム権限で適切に保護する必要があります。

WLDFデバッグ・パッチ・エージェントの構成

デバッグ・パッチを動的に適用するには、WLDFデバッグ・パッチ・エージェントを指定したコマンドラインでターゲットWebLogic Serverインスタンスを起動する必要があります。

WLDFデバッグ・パッチ・エージェントは、次の処理を行います。

  • ロード済のクラスを、デバッグ・パッチJARからインストゥルメントされたクラスに置き換えます。

  • デバッグ・パッチJARの置換クラスに元のクラスと同じ形状が含まれることを確認します。いずれかのクラスがこの要件を満たさない場合、デバッグ・パッチJARのすべてのクラスがスワップ・インされず、エラー・メッセージが記録されます。

  • デバッグ・パッチのアクティブ化または非アクティブ化の開始および完了を示す情報メッセージを記録します。

  • 管理権限を持つ適切に認証されたユーザーのみに、デバッグ・パッチの適用を許可します。

コマンドラインでWLDFデバッグ・パッチ・エージェントを指定するには、次の内容を含めるように起動スクリプトを更新します。

-javaagent:$WL_HOME/server/lib/debugpatch-agent.jar

ノート:

disableDebugPatchesオプションが起動スクリプトのコマンドラインに指定されていない場合、新しい起動スクリプトのコマンドラインに自動的にdebug-agent.jarが含まれます。

デバッグ・パッチのWLSTコマンド

WLDFに用意されたWLSTコマンドを使用して、動的デバッグ・パッチのリスト、アクティブ化、非アクティブ化が可能です。

表18-1に、デバッグ・パッチに使用されるWLSTコマンドのリストを示します。

表18-1 デバッグ・パッチに使用するWLSTコマンド

コマンド サマリー
activateDebugPatch

指定したターゲットでデバッグ・パッチをアクティブ化します。

deactivateAllDebugPatches

指定したターゲットですべてのデバッグ・パッチを非アクティブ化します。

deactivateDebugPatches

指定したターゲットでデバッグ・パッチを非アクティブ化します。

listDebugPatches

指定したターゲットでアクティブであり使用可能なデバッグ・パッチをリストします。

listDebugPatchTasks

指定したターゲットのデバッグ・パッチ(アクティブ化または非アクティブ化)・タスクをリストします。

purgeDebugPatchTasks

指定したターゲットのデバッグ・パッチ(アクティブ化または非アクティブ化)・タスクをパージします。

showDebugPatchInfo

指定したターゲットのデバッグ・パッチの詳細を表示します。

デバッグ・パッチの動的なアクティブ化

例18-1例18-2および例18-3では、activateDebugPatchコマンドを使用して、指定したターゲットでデバッグ・パッチをアクティブ化する方法について示します。指定したデバッグ・パッチがターゲットのデバッグ・パッチ・ディレクトリで使用できない場合、警告が発行され、WebLogic Serverは、処理を継続し、残りのターゲットでデバッグ・パッチをアクティブ化しようと試みます。デバッグ・パッチのクラスの1つがターゲットの元のクラスを置き換えることに失敗した場合、デバッグ・パッチのJARファイル全体がそのターゲットで拒否され、WebLogic Serverは、残りのターゲットでデバッグ・パッチをアクティブ化しようと試みます。また、時間経過に伴って複数のデバッグ・パッチがアクティブ化されることがあり、各デバッグ・パッチは、元のクラスと以前アクティブ化されたデバッグ・パッチに重なります。アクティブ化された複数のデバッグ・パッチにクラスが含まれる場合、最後にアクティブ化されたデバッグ・パッチのクラスが優先します。activateDebugPatchコマンドは、タスクの配列を返します(各要素は、関連するターゲット・サーバー・インスタンスのアクティブ化アクティビティに対応します)。

例18-1 2つの管理対象サーバーでのデバッグ・パッチのアクティブ化

# Connected to admin server: Activate debug-patch-01.jar on managed servers
# MS1 and MS2
tasks=activateDebugPatch(Patch='debug-patch-01.jar', Target='MS1,MS2')

例18-2 サーバー・インスタンスおよびクラスタでのデバッグ・パッチのアクティブ化

# Connected to admin server: Activate debug-patch-01.jar on myserver and all
# members of cluster Cluster-0
tasks=activateDebugPatch(Patch='debug-patch-01.jar', Target='myserver,Cluster-0')

例18-3 クラスタをターゲットとするアプリケーションでのデバッグ・パッチのアクティブ化

# Connected to admin server: Activate debug-patch-03.jar on application 'medrec'
# targeted to cluster Cluster-1
tasks=activateDebugPatch(Patch='debug-patch-03.jar', Target='Cluster-1',
     Application='medrec')

デバッグ・パッチの動的な非アクティブ化

例18-4例18-5および例18-6では、deactivateDebugPatchesコマンドを使用して、デバッグ・パッチを非アクティブ化する方法について説明します。複数のデバッグ・パッチを指定するには、カンマ区切りのリストを使用します。指定したデバッグ・パッチがターゲットでアクティブではない場合、警告が発行されてコマンドは続行されます。デバッグ・パッチを指定しない場合、指定したターゲットでアクティブなすべてのパッチが非アクティブ化され、元のクラスがアクティブ化されます。非アクティブ化に成功した後、すべてのターゲットの状態は、このコマンドの実行前と同じです。deactivateDebugPatchesコマンドは、タスクの配列を返します。

例18-4 管理対象サーバーでのデバッグ・パッチの非アクティブ化

# Connected to MS1: deactivate debug-patch-01.jar
tasks=deactivateDebugPatches(Patches='debug-patch-01.jar')

例18-5 クラスタのすべてのメンバーでのデバッグ・パッチの非アクティブ化

# Connected to admin server: de-activate debug-patch-01.jar
# and debug-patch-02.jar on all members of cluster Cluster-0
tasks=deactivateDebugPatches(Patches='debug-patch-01.jar,debug-patch-02.jar',
     Target='Cluster-0')

例18-6 クラスタをターゲットとするアプリケーションでのデバッグ・パッチの非アクティブ化

# Connected to admin server: de-activate debug-patch-03.jar on application
# 'medrec' targeted to cluster Cluster-1
tasks=deactivateDebugPatches(Patches='debug-patch-03.jar', Target='Cluster-1',
     Application='medrec')