Oracle® Fusion Middleware Oracle WebLogic Server診断フレームワークの構成と使用 12c (12.2.1) E69998-01 |
|
![]() 前 |
![]() 次 |
この章では、デバッグ・パッチを動的に適用して、サーバーの再起動をせずにアクティブ化および非アクティブ化されるパッチを使用して診断情報を取得する方法について説明します。
この章の内容は次のとおりです。
JARファイルとしてパッケージ化されるデバッグ・パッチは、My Oracle Support (https://support.oracle.com/
)を通じて生成され、本番環境で発生したエラーの追加情報を収集するために使用されます。通常、デバッグ・パッチのJARファイルは、クラスパスに追加され、これらのJARファイルを有効にするには、すべてのサーバー・インスタンスを再起動する必要があります。これは、スケジュールなどの制約によって本番環境でサーバー・インスタンスを再起動できない可能性があるため、問題があります。また、サーバー・インスタンスを再起動すると、メモリー内の状態が失われるため、問題が消失したり、再現されるまでに時間がかかる可能性があります。デバッグ・パッチの動的適用によって、これらのサーバーの再起動を回避しながら、インストゥルメントされたデバッグ・パッチを適用してこの追加情報を収集できます。さらに、これらのデバッグ・パッチが必要なくなったときは、サーバーの再起動をせずに非アクティブ化できます。
デバッグ・パッチが動的に適用されると、WebLogic Serverは、Javaホットスワップを使用して、ロード済のクラスをデバッグ・パッチのJARファイルに付属するバージョンに置き換えます。Javaホットスワップの詳細は、「Javaホットスワップの有効化」を参照してください。
デバッグ・パッチのJARファイルは、デバッグ・パッチ・ディレクトリという特定のディレクトリから取得されます。このディレクトリは、DebugPatchesMBean
のDebugPatchDirectory
属性を使用してドメイン全体から指定されます。デフォルトでは、DOMAIN_HOME
ディレクトリ内のdebug_patches
ディレクトリがデバッグ・パッチ・ディレクトリとして使用されます。
この機能は、ドメインの管理権限を持つユーザーのみが使用できます。デバッグ・パッチのJARファイルをデバッグ・パッチ・ディレクトリに配置できるのは、権限のあるユーザーのみです。このディレクトリは、ファイル・システム権限で適切に保護する必要があります。
デバッグ・パッチを動的に適用するには、WLDFデバッグ・パッチ・エージェントを指定したコマンドラインでターゲットWebLogic Serverインスタンスを起動する必要があります。WLDFデバッグ・パッチ・エージェントは、次の処理を行います。
ロード済のクラスを、デバッグ・パッチJARからインストゥルメントされたクラスに置き換えます。
デバッグ・パッチJARの置換クラスに元のクラスと同じ形状が含まれることを確認します。いずれかのクラスがこの要件を満たさない場合、デバッグ・パッチJARのすべてのクラスがスワップ・インされず、エラー・メッセージが記録されます。
デバッグ・パッチのアクティブ化または非アクティブ化の開始および完了を示す情報メッセージを記録します。
管理権限を持つ適切に認証されたユーザーのみに、デバッグ・パッチの適用を許可します。
コマンドラインでWLDFデバッグ・パッチ・エージェントを指定するには、次の内容を含めるように起動スクリプトを更新します。
-javaagent:$WL_HOME/server/lib/debugpatch-agent.jar
注意: disableDebugPatches オプションが起動スクリプトのコマンドラインに指定されていない場合、新しい起動スクリプトのコマンドラインに自動的にdebug-agent.jar が含まれます。 |
表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-4、例18-5および例18-6では、deactivateDebugPatches
コマンドを使用して、デバッグ・パッチを非アクティブ化する方法について説明します。複数のデバッグ・パッチを指定するには、カンマ区切りのリストを使用します。指定したデバッグ・パッチがターゲットでアクティブではない場合、警告が発行されてコマンドは続行されます。デバッグ・パッチを指定しない場合、指定したターゲットでアクティブなすべてのパッチが非アクティブ化され、元のクラスがアクティブ化されます。非アクティブ化に成功した後、すべてのターゲットの状態は、このコマンドの実行前と同じです。deactivateDebugPatches
コマンドは、タスクの配列を返します。
例18-4 管理対象サーバーでのデバッグ・パッチの非アクティブ化
# Connected to MS1: deactivate debug-patch-01.jar tasks=deactivateDebugPatches(Patches='debug-patch-01.jar')