0

外部ユーザーによって更新されたテーブルがある Oracle 11g にデータベースがあります。これらの変更を別のデータベースのテーブルに反映させるために、このテーブルの挿入/更新/削除をキャッチしたいと考えており、さまざまな調査方法を試しています。ポーリング(テーブルに更新、挿入、または削除があるかどうかを毎分チェックするジョブ)とトリガー(テーブルの更新、挿入、または削除時に起動)をまだテストしましたが、代替方法はありますか?

AOQ (Oracle Advanced Queuing)、DBMS_PIPE、Oracle SNMP Agent Integrator Polling Activity を見つけましたが、このケースに適しているかどうかはわかりません...

4

1 に答える 1

3

場合によります。

関連するデータの量、および挿入/更新/削除の頻度に応じて、ポーリングまたはトリガーだけで十分な場合がよくあります。

たとえば、ポーリング方法は、デフォルトで 1 に設定され、行がレプリケーション コードによって「消費」されると NULL に更新される列を追加するのと同じくらい簡単かもしれません。行が更新された場合、テーブルのトリガーはそれを 1 に戻します。この列のインデックスは軽量であり (インデックスには、列が 1 である行のエントリのみが含まれます)、クエリが高速になります。ただし、削除を処理するには別のテーブルが必要です。

トリガー メソッドは、行の挿入/更新/削除を何らかの種類のログ テーブルに書き込むだけで、ジョブによって定期的に削除されます。

大量のソリューションには、Oracle GoldenGate および Oracle Streams が含まれます: http://www.oracle.com/technetwork/database/focus-areas/data-integration/index.html

于 2013-07-23T07:46:00.827 に答える