2017-02-08 20 views
3

アドホック・ベースで、Oracleの4つの本番表の内容をQA/UAT環境にコピーします。 これは直接コピーではなく、フィルタリングのための入力条件に基づいてデータをコピーする必要があります。Oracleデータベース間にBLOB列を含む表のコピー

以前はSybaseデータベースを使用していましたので、BCPユーティリティはそこで魅力的でした。しかし、最近Oracleに移行し、同様のデータコピー要件が必要です。

今までの分析に基づき、私はオプションの下に分析している -

  • RMAN(Recovery Managerの) - それは私たちがデータを選択したテーブルやフィルタリングをコピーすることはできませんとして使用することはできません。
  • SQLLDR(SQL Loader) - BLOB列を持っているため、このBLOBSのCSVファイルを作成する方法がわからないため、これを使用できません。任意の誓い?
  • Oracle Data Pump(Expdp/Imbdp) - 選択したテーブルをコピーすることができますが、これを使用できません。これは、ジョインでいくつかのクエリを使用してデータをフィルタリングすることはできません(クエリを追加できますが、表)。回避策は、EXPDPとIMPDPを使用して、必要なデータセットとtempを使用してtempテーブルを作成してdmpにすることです。私がこのアプローチで何かを見逃してしまった場合は、どんな魅力がありますか?
  • データベースリンク - これはこのユースケースで可能な最良のアプローチです。しかし、DBAがPRDデータベースとのリンクを作成できるかどうかを確認する必要があります。
  • SQL PLUS COPY - これはBLOBフィールドでは機能しないため、使用できません。

誰かが最善のアプローチw.r.tのパフォーマンスであるべきかアドバイスできますか?

+0

こんにちは私がこの問題を提起したのは、データをソースからターゲットにコピーする前に、BLOBをコピーしなければならないという私の要件のひねりと、フィルタリングの種類のためです。上記のすべてのアプローチに賛否両論があるので、私は誰もが前にそのような状況に直面していて、これに対する解決策があるかどうかを知りたいと思っています。親切に質問を開いたり、私に知らせてください。 –

答えて

2

おそらく、DATAPUMP形式の外部表を使用します。

insert /*+ APPEND */ into my_tab 
select * from my_ext_tab 
:だから、あなたは、その後、あなたの他のデータベースにまたがったファイルをコピーし、外部表を作成し、挿入を経由して、新しいテーブルに挿入することができます

create table my_ext_tab 
organization external 
(
     type oracle_datapump 
     default directory UNLOAD 
     location('my_ext_tab.dmp') 
) 
as 
<my query> 

のようなもの、のようなものになるだろう

並列処理を使用してファイルを読み書きすることもできます

+0

上記のアプローチでは、ターゲットデータベースの外部テーブルがステージングテーブルとして機能する必要があります。次に、ステージングテーブルから最終テーブルにデータを移動して、Webアプリケーションがそれらの最終テーブルでクエリを実行できるようにする必要があります。私は、アプリケーションが外部テーブルで直接クエリできるかどうかは疑問です。どう思いますか? –

+0

@SwapnilJaju。技術的には、外部テーブルに対してクエリを実行できます。実際には、最終的なテーブルをロードするときに実行していることです。私たちはINSERT ... AS SELECTをやっています。しかし、私が協力しているほとんどのアプリケーションは、まさにそれを行います。外部テーブルから最終テーブルに読み込まれ、アプリケーションによって使用されます。 – BobC

1

すべての制約を考慮すると、データベースリンクが最適なオプションです。 PROD環境では、結合およびフィルターを使用して照会のビューを作成し、これらのビューからdbリンクを選択することができます。このようにして、フィルタリングは、ターゲット側ではなく、ネットワークを介した転送の前に行われます。

+0

dblinksの問題は、それらがシリアル化することです。 – BobC

+0

はい、本当にありがとうございます。それがオンデマンドバッチ転送の場合、問題はないかもしれません。しかし、あなたの答えはより良いパフォーマンス賢明です、私はその解決策を考えていませんでした。 – JeromeFr

+0

@BobC:BLOBをDBLink経由でターゲットDBに送ることができますか?私はどこかでそれができないことを読む。親切にも、その周りの魅力を共有してください。ありがとう –

関連する問題