0

Oracle 10G データベース テーブルから定期的に 1 億のデータ行 (平均行長 ~ 100 バイト) を SQL サーバー (6M ビット/秒の容量を持つ WAN/VLAN 経由) にエクスポートする必要があります。これまでのところ、これらは私が試したオプションと簡単な要約です. 誰もこれを試したことがありますか?他のより良いオプションはありますか?パフォーマンスと信頼性の観点から、どのオプションが最適でしょうか? 所要時間は、少量のデータでのテストを使用して計算され、それを外挿して必要な時間を見積もっています。

  1. SQL サーバーまたは SSIS パッケージのデータ インポート ウィザードを使用してデータをインポートします。このタスクを完了するには、約 150 時間かかります。
  2. Oracle バッチ ジョブを使用して、データをコンマ区切りのフラット ファイルにスプールします。次に、SSIS パッケージを使用してこのファイルを SQL サーバーに FTP 送信し、フラット ファイルから直接ロードします。ここでの問題は、GB 単位で実行されると予想されるフラット ファイルのサイズです。
  3. このオプションは大幅に異なりますが、Linked Server を使用して実行時に Oracle データを直接クエリし、データの取り込みを回避するオプションも検討しています。パフォーマンスは大きな問題であり、テーブル インデックスの作成に関しては、Oracle データベースの制御が制限されています。

よろしく、

ユニボール

4

2 に答える 2

1

私は常に 50 GB のファイルをロードしています。これが私がしていることです。リンク サーバーがある場合は、SSIS を使用してテーブルをロードします。FAST LOAD を選択しTable Lock、sute テーブル ロックがオンになっていることを確認してください。それ以外の場合は、真に最小限のログが記録された操作にはなりません。DB も含まれている必要があります。SimpleまたはBulk復旧モデル

画像を見る

代替テキスト

できれば、BCP アウトしてから BCP インまたは BULK INSERT を選択します

于 2010-06-10T20:28:40.553 に答える
0

プロセスをチャンクに分割して、多くのことを並行して実行できるようにすることを検討してください。たとえば、100,000 レコードを Oracle からフラット ファイルにエクスポートする時間が、ファイルをコピーする時間と同じである場合、ファイルを SQL にインポートする時間と同じである場合、次のすべてを実行するシステムを構築できると考えられます。これらは組立ラインのように同時に行われます。この方法でも、1 つのピースが失敗した場合、最初からやり直す必要はありません。明らかに、これにはいくつかの実験が必要です。システムの負荷はトレードオフの 1 つにすぎず、設計を多少左右する可能性のある「通常の基準」を定義しません。

乾杯、ブライアン

于 2010-06-10T20:32:38.797 に答える