Data GuardまたはGoldenGateを使用して、マスターが削除クエリをスレーブデータベースに伝播しないスレーブデータベースを作成するにはどうすればよいですか?
マスターのすべてのレコードを保持するレプリケーション/スレーブデータベースが必要ですが、マスターデータベースで削除クエリを実行するときに、スレーブデータベースに伝播してはなりません。
Oracle12cを使用しています
この要件をどのように達成できますか?
フィジカルスタンバイではこれを行うことはできません。何らかの論理レプリケーションが必要になります。
論理スタンバイを使用すると、DMLをスキップできますが、それではすべてのDMLがスキップされます。
Oracle Goldengateでは、IGNOREDELETES
オプションを指定できるため、削除を簡単にスキップできます。 [〜#〜] ignoredeletes [〜#〜]
では、削除を無視するようにシステムを構成したとしましょう。次の状況を想像してみてください。
insert into mytable (unique_column, other_column) values (1, 1);
commit;
delete from mytable where unique_column = 1;
commit;
insert into mytable (unique_column, other_column) values (1, 2);
commit;
上記は、固有の制約違反のためにレプリケーションを中断します。エラーを無視すると、宛先データベースに新しいデータがありません。
履歴テーブルを作成したいように思えますが、削除操作を無視するだけではありません。以下のサポートノートをご覧ください。