web-dev-qa-db-ja.com

OracleからSQL ServerへのETLに関するアドバイス

私はSQL Serverでデータマートを構築しています。これは、Oracleデータベースから毎月抽出する必要があります。現在、これはフラットファイルにエクスポートし、SQL Serverですべての挿入/更新を実行することで行われます...

更新を開始する前にエクスポートして挿入する約10のフラットファイルがあります。各ファイルには、ファイルあたり約350万行と5〜10列が含まれます。

現在、すべてが厳密にストアドプロシージャを介して行われています。今週、アクセス許可が適切に付与されていると想定して、SSISを調査しています。 Rhino ETLにも出会いました。

OracleからSQL Serverへの効率的でありながら比較的痛みのないETLに関するアドバイスはありますか?

ヘルプに感謝します!

1
sm1

SSISは、OracleからSQL Serverへのデータのエクスポートを適切に処理します。 SQL Serverでステージングテーブルを作成し、SSISを使用して10個のOracleテーブルのデータを抽出することをお勧めします。次に、SQL Serverでストアドプロシージャを使用し、SSISを使用してストアドプロシージャを実行するか、Merge構文を使用して、制御フローで挿入と更新の両方を実行してみます。非常に多数の行に対してOledbコマンドを使用するSSISのデータフロータスクでは、更新が遅くなる傾向があります。

このリンクにアクセスしてください SSISを使用してOracleからデータを取得する:大きな驚き! これは、短時間で大量のデータをロードする際のSSISのパフォーマンスを説明しています。

OracleからSQL ServerへのETLプロセスを開始するには、 this のドキュメントを参照してください。

4
praveen

トランザクションOracleデータベースから「ステージング」データベース(Microsoft SQL Server 2012/2014)にデータを「プル」するときの個人的な経験から得られた、いくつかの適用しやすいアドバイスがあります。

  1. SSISパッケージでは、Oracle独自のOLE DBプロバイダーを使用するよう努めています。
  2. 同様に、Microsoftの最新のOLE DB Provider for the ADO Destination。
  3. Microsoftのパケットサイズを8000から4000(特にWindows 7デスクトップで開発する場合は、かなり大きなデータテーブルで不思議に思った任意の値)まで削減します(そうです、正しく読みます)。
  4. ソース接続からの「プルダウン」テーブル/ビューリストを使用するのではなく、DML SQLクエリを使用してみてください。それは転送をスピードアップします。
  5. (オプション)上記のクエリを修正し、宛先データベースで使用できない列、特にソースからプルできるデータに「フラグを立てる」列を削除します。この最後の一口は、多くの場合、予想以上に見落とされがちです。これらのアドバイスが転送時間の改善に役立つことを願っています!
1
alejandrob

IBMのData Managerを使用しましたが、面倒でした。そこで、代わりに簡単なJava移行を行うプログラムを作成しましたが、これは魅力のように機能しました。

0
CodingInCircles

リンクサーバーを使用してOLE DB。を介してOracleに接続しています。openqueryコマンドを使用して、データをSQLサーバーにプルダウンしています。

これは役立ちます

0
Sip Xayaxang