1

EntityFramework に Oracle ODAC を使用しています。entityframework を使用してサンプル Silverlight アプリケーションを開発しようとしています。エンティティを公開するドメイン サービスを追加しました。私は UI の分離コード ファイルです。次のコードを書きました。

var threemonthsold = DateTime.Now.AddMonths(-3);
var query = serverContext.GetSR_MERGED_DATAQuery().Where(t => t.SR_DATE_RECD > threemonthsold);

var regionLoadOp = serverContext.Load(query);
dataGrid.ItemsSource = regionLoadOp.Entities; 

オラクルに送信されたクエリを知りたいです。操作がタイムアウトになると、アプリケーションがクラッシュします。クエリに時間がかかっているようです。クエリを見つけることができれば、それをオラクルで直接実行して、そこにかかる時間を調べることができます。

どんな助けでも大歓迎です。

ありがとう

4

2 に答える 2

1

ネットワーク経由でクエリを送信している場合、Wiresharkは、転送されている実際のパケットを表示する優れた方法です。TNSパケット フィルタ (キャプチャ フィルタではなく、メイン ページにあり、無効/有効な入力で赤/緑に変わるフィルタ) に入力すると、Oracle パケットが表示されます。

<code>tns</code> フィルタを使用して検出された Wireshark の Oracle パケットのスクリーンショットと、パケットのバイト内の文字列「select」を検索するパケットの検索。

パケットのさまざまな部分を表示するために維持されているパケット ディセクタはないようですが、データ バイトを見て、SQL ステートメントを示す ASCII テキストを確認できます。(セッションのオープン/クローズのジャンクも多数表示されます。)

于 2013-07-08T19:18:52.717 に答える
0

この質問に対する回答は、次のフォーラムで見つかりました。:

cshay Dec 3, 2011 9:58 AM (in response to 900653)
You can turn on ODP.NET tracing. See the ODP.NET doc for more details:

1) Close VS
2) In windows registry, change registry value 
    \\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ODP.NET\4..........\TraceLevel
    to 1
3) Relaunch VS
4) Reproduce the problem
5) Close VS2010
6) Look for the odpnet trace file in the root of C I believe.
7) Undo the registry value (set it back to 0) so you don't impact performance
于 2012-02-05T23:44:31.780 に答える