6

sqlserver に保存されているテーブルとデータ (約 5 年間のデータ、6200 テーブル) をコピーする必要があります。datastage と odbc 接続を使用して接続し、datstage はデータを含むテーブルを自動的に作成しますが、テーブルとしてテーブルごとに 2 ~ 3 時間かかります。非常に大きい (0.5 ギガ、300 以上の列、約 40 万行)。

このレートでは 1 日に 5 つのテーブルしかコピーできませんが、30 日以内にこれらの 6000 のテーブルを移動する必要があるため、これをどのように達成できますか。

4

3 に答える 3

6

それぞれが 0.5 Gb の 6000 個のテーブルは、約 3 テラバイトになります。プラスインデックス。私はおそらく ODBC 接続には向かないでしょうが、問題はボトルネックがどこにあるかということです。

SQL Server からの抽出ステージがあります。SQL Server ボックスから Oracle ボックスへのトランスポートがあります。あなたには負荷があります。

ネットワークが機能を制限している場合は、ファイルを抽出して圧縮し、圧縮ファイルを転送して解凍し、ロードするのが最善の方法です。Oracle の外部テーブルは、フラット ファイル (区切り文字または固定長) からデータをロードする最速の方法であり、できれば複数の物理ディスクに分散して負荷を分散し、ログを記録しません。

大きな変革が起こらない限り、datastage のことは忘れてしまいます。抽出またはロードしていないものはすべて、最小限に抑えるには過剰です。

于 2010-04-28T01:25:35.963 に答える
2

別々のテーブルを同時に並行して転送できますか?

私たちは定期的に大きなフラットファイルをSQLServerに転送し、それらを並行して実行します。ネットワークとSQL Serverでより多くの帯域幅を使用しますが、それらは直列よりも速く一緒に完了します。

于 2010-04-28T00:40:49.317 に答える
2

テーブル スキーマをスクリプト化して Oracle で作成し、SSIS を使用してデータを Oracle に一括コピーすることを考えたことはありますか? もう 1 つの方法は、リンク サーバーと一連の "Select * INTO xxx" ステートメントを使用して、スキーマとデータ (キー制約を除く) をコピーすることですが、6000 テーブルではパフォーマンスが非常に悪くなると思います。

于 2010-04-28T10:46:18.580 に答える