2016-06-27 13 views
0

私は、挿入操作のみを許可するマスターサイトにテーブルを持っています。私は最近挿入された行を複製したいので、ローカルサイトに複製された最後のレコードを追跡し、後で複製を実行できるものが必要です。Oracleでのデータ複製

私はOracleマテリアライズド・ビューを試しましたが、高速リフレッシュまたは完全リフレッシュのどちらを使用するのかを混乱させます。私は1つのトランザクションで複製されたすべての新しく挿入された行を必要とします。

これを実行する方法はありますか?どんな助けも高く評価されます。

ありがとうございました。

+0

これは、1つのテーブルまたはテーブル全体で行いますか。レプリケートされた行を1つのトランザクションに挿入する場合は、正確には何を意味しますか。特定の間隔で挿入しますか?また、後で複製を実行したいと言っている場合は、ほぼリアルタイムのデータ複製を望まないことを意味します。また、このレプリケーションの正確な目的は何ですか(DRサイトを構築していますか?)。ユーザーがアクセス目的のためにアクセス・データを照会しますか? –

答えて

1

高速リフレッシュでは、増分変更はネットワーク経由でコピーされますが、ソース表のマスター・サイトにマテリアライズド・ビュー・ログを作成する必要があります。これにより、マスターテーブルで発生する挿入に若干のオーバーヘッドが追加されますが、一般的にリフレッシュがより効率的になります。

完全リフレッシュは、マテリアライズド・ビューがリフレッシュされるたびに、ネットワークを介してすべての行をコピーします。これは、リフレッシュの観点から効率が低下する可能性がありますが、ソース表に挿入するオーバーヘッドはなく、マテリアライズド・ビューではマテリアライズド・ビュー・ログを作成する必要はありません。

Oracleには、データ複製テクノロジのホストが用意されています。マテリアライズド・ビューは、最も古く、おそらく最も効率的ではありませんが、セットアップは比較的簡単です。 Streamsはオーバーヘッドがはるかに低いが、セットアップはかなり複雑な新しいテクノロジーです。ゴールデンゲートは、今日好まれている複製技術ですが、それには追加のライセンスコストがあります。

+0

マテリアライズド・ビューはマスター・データベースの別のビューから作成され、ビューは複数のテーブルの組み合わせで作成されていますので、各テーブルのログを作成する必要はありません 完全なリフレッシュは効率的ではありません。 (L_FOO.ID、L_FOO.BARからL_FOO.BARを選択します。L_FOO.ID>(SELECT NVL(MAX(ID)、0)FROM ARIX_FOO)); ' それを効率的に行う方法はありますか? –

+1

@UmairAnsari - それはunlで動作する可能性は低いですソースデータベースにデータを挿入するシングルスレッドプロセスがあります。 'id'値2が' id'値1の直前でコミットされるとどうなりますか? 2が表示され、1が表示されないことがあります。これは、GoldenGateのいずれかのストリームの複雑さを増やすことができるように思えます。 –

関連する問題