「ODP.net を試してみましたか?」というメッセージを受け取る前に、答え、はい、私はそれを持っており、現在使用しています。
OracleからSQLサーバーにデータを移動しており(重要ではありません)、Oracle接続でデータリーダーを使用しています。大きなテーブルはCRAWLINGです。1 秒あたり 10 レコードの場合もあります。パフォーマンスの問題に気付いたとき、テーブル全体で単純な Reader.Read() 呼び出しを実行するだけにソース コードを減らしました。MS と Oracle ODP .net クライアントの両方を試しました。私は現在、11g Instant Client、64bit on win7 64bit、8 ギガの RAM、およびすべてのグッズを使用しています。私はローカル ネットワークで使用しており、現在は VPN を使用していますが、パフォーマンスは基本的に同じです。プリフェッチ サイズを調整しましたが、結果はありません。
Oracle Sql DEveloper ツールでデータのエクスポート機能を実行し、データベース全体のすべてのデータを、この同じマシン上で、同じネットワークを介して約 100 倍の速度でエクスポートできます。
.net アプリを Oracle サーバーにコピーして、同じパフォーマンス テストを実行すると、1 秒もかからずに完了します。
したがって、ネットワーク自体が遅いのではなく、データの量ではなく (SqlDeveloper エクスポートで示されているように)、.net コード自体でも Oracle db でもありません (サーバー上で実行して示されているように)。任意のネットワークで使用される Datareader の組み合わせである必要があります。
インスタント クライアントのインストールですか? 本格的なクライアントのパフォーマンスは向上しますか? 64 ビットのクライアントが混乱していませんか? 本当に途方に暮れています。
アップデート:
それ以来、32ビット用にコンパイルされた同じアプリを実行し、「完全な」OracleクライアントがインストールされているWindows XPの仮想PCインスタンスで実行しました(明らかに32ビットバージョン)。VM のパフォーマンスが低下しても、ほぼ 10 倍高速に実行されました。したがって、間違いなくインスタント クライアントに何らかの問題があり、特に 64 ビットのインスタント クライアントに問題があると思います。これを確認する最後のテストは、この同じマシンに 32 ビットのインスタント クライアントをインストールして、再度実行することです。時間が合えば…