私は、Oracle Loaderと正確に違うツール/テクニックを探しています。できるだけ早くジオメトリを使ってテーブル全体を読む必要があります。アプリケーションは、Oracleがインストールされているのと同じマシン上で実行されているため、何らかの「直接」アクセスが可能です。この表には約3百万のレコードがあり、この量のデータを通常のクライアント(11ベータ - > .NET DevArt OCIモードのOracle dotConnectドライバ)にフェッチするのに約6時間かかります。クエリを実行する必要はなく、テーブルには計算フィールドや参照が含まれていません。Oracleからデータを「一括ダウンロード」するにはどうすればよいですか?
可能ですか?
Gbのテーブルのサイズはどれくらいですか? OCIで一度に1つの行または配列モードでフェッチしていますか?複数行のフェッチでは6時間が非常に長い時間のように聞こえます。 – Plasmer
それはそれほど大きくはありません - 1.5Gbです。一度に1つの行、私はあなたが配列モードでデータを得ることができるか分からなかった - これはOracleにデータをプッシュするためだけだと思った。 dotConnectドライバをチェックします。おそらく、この機能は既にそこに公開されています。私はまた、何らかの正当な理由がなくても100万回の記録が大幅に遅くなったため、クライアント自体に何か問題があると考えています(11gベータ版以降)。 –
Oracle Clientライブラリに起因するものではなく、結果を格納する際のコードが遅いことが原因です。特定の時点からクライアントの速度が低下している場合、データを保存しているバッファが初期容量に達している可能性があります。新しいデータを保持するためにアプリが強制的にメモリを再割り当てしていますか?あなたのローカルデータ構造がNバイトで始まり、それを超えて成長する能力を持っているならば、あなたの構造が新しく割り当てられたより大きなブロックに古いデータをコピーするので、CPUを燃やす可能性があります。それは私の前に起こった。 –