デバッグ・トレース

すべてのODP.NETプロバイダはデバッグ・トレースをサポートしており、これにより、ODP.NETのすべてのアクティビティをトレース・ファイルに記録できます。複数のレベルのトレースを使用できます。

トレースでは、次の情報などを記録できます。

  • ODP.NETパブリック・メソッドの開始および終了情報

  • ユーザー指定のSQL文およびプロバイダにより変更されたSQL文

  • 登録および登録解除などの接続プーリング統計情報

  • スレッドID(開始および終了)

  • HAイベントおよびロード・バランシングの情報

  • 分散トランザクション

  • 自動チューニング情報

  • 非管理例外におけるユーザーモード・ダンプ

次のプロパティは、すべてのODP.NETプロバイダのトレースを有効にし、構成します。

  • TraceLevel - トレース・ファイルに書き込むODP.NET詳細を指定します

  • TraceFileLocation - トレースの書込み先となるディレクトリを指定します

  • TraceFileMaxSize – 各トレース・ファイルの最大ファイル・サイズを指定します

  • TraceOption – スレッドごとに個別のトレース・ファイルを使用するかどうかを指定します

デフォルトでは、トレースは無効(TraceLevel = 0)になっています。トレースを有効にするには、TraceLevelを目的のトレース・レベルに設定します。

管理対象ODP.NETおよびODP.NET Coreには、次のトレース・レベルがあります。

  • 1 = パブリックAPI

  • 2 = プライベートAPI

  • 4 = ネットワークAPI/データ

これらの値はビット単位ORedにできます。すべてのトレースを有効にするには、TraceLevelを7に設定します。

管理対象外ODP.NETには、次のトレース・レベルがあります。

  • 1 = 開始、終了およびSQL実行の情報

  • 2 = 接続プーリング統計情報

  • 4 = 分散トランザクション(登録および登録解除)

  • 8 = 非管理例外におけるユーザーモード・ダンプの作成

  • 16 = HAイベント情報

  • 32 = ロード・バランシング情報

  • 64 = 自動チューニング情報

これらの値はビット単位ORedにできます。すべてのトレースを有効にするには、TraceLevelを127に設定します。

TraceFileLocationは、値が設定されていない場合、一時オペレーティング・システム・フォルダに書き込みます。

  • ODP.NET Core

    • Windows: <Windows user temporary folder>\ODP.NET\core\trace

    • Linux: <current user temporary folder>/ODP.NET/core/trace

    • macOS: <macOS temporary folder>\ODP.NET\core\trace

  • ODP.NET管理対象ドライバ: <Windows user temporary folder>\ODP.NET\managed\trace

  • ODP.NET管理対象外ドライバ: <Windows user temporary folder>\ODP.NET\unmanaged\trace

Windowsユーザーの一時フォルダは、Windows TMPまたはTEMP環境変数など、ローカルのWindows設定で定義されています。通常、C:\tempまたはC:\Users\<user name>\AppData\Local\Tempです。

TraceFileMaxSizeは、値が設定されていない場合、100 MBにデフォルト設定されます。管理者は、この設定を使用してトレース・ファイルを管理可能なサイズに抑えることができます。

TraceOptionは、デフォルトで一度にすべてのスレッドを単一のトレース・ファイルに書き込みます(TraceOption=0)。

ODP.NETは、新しいトレース・ファイルを作成するたびにトレースが作成されたWindowsイベント・ログにエントリを作成します。イベント・ログ・エントリは、TraceFileLocationの変更、トレース・ファイルのサイズによるTraceFileMaxSizeの超過、TraceLevelの変更およびTraceOptionの変更が発生するたびに追加されます。いずれの場合も、ODP.NETは新しいファイルを作成し、新しく作成されたファイルへのトレースの書込みを開始します。ODP.NET Coreでは、Windowsイベント・ログへの書込みがサポートされていません。

ODP.NETトレースを有効にするには、OracleConfigurationクラス(すべてのプロバイダ)、.NET構成ファイル(管理対象ODP.NETおよび管理対象外ODP.NET)またはWindowsレジストリ(管理対象外ODP.NET)のいずれかで、これらのトレース・プロパティを適切に設定する必要があります。

ODP.NETは、OracleConnection.Open()コールが発生した後にのみトレース・ファイルへの書込みを開始します。

動的トレース

ODAC 19c以降、アプリケーションはODP.NET OracleConfigurationクラスのトレース設定を実行時に変更できます。通常、この機能は、アプリケーションの実行を継続しながらトレースを動的に有効および無効にできます。動的トレースは、アプリケーションが長時間実行された後に発生するエラーに役立ちます。顧客は非常に大きなトレース・ファイルの収集を回避でき、Oracle Supportでは、よりターゲットが絞られたトレース・ファイルからの問題の診断が容易になります。

ODP.NET Core、管理対象および管理対象外はいずれも動的トレースをサポートしています。

実行時にトレースを有効にするには、OracleConfiguration.TraceLevelを目的のトレース・レベルに設定します。トレースを動的に無効にするには、OracleConfiguration.TraceLevelをゼロに設定します。

実行時トレースの動作を変更できるのは、OracleConfigurationトレース・プロパティのみです。Windowsレジストリおよび.NET構成ファイルの設定は、アプリケーションの起動時にのみ読み取られます。

一般的に、トレース・ファイルへの書込みはパフォーマンスに影響するため、本番での使用にはトレースをお薦めしません。ただし、本番中にのみ問題が発生する場合は、動的トレースを使用して問題の期間中のトレースを有効および無効にし、根本原因を特定するために診断を取得します。