大量のデータを含むテーブル(TMain)があり、アーカイブテーブル(TArchive)にアーカイブされています。レコードは3か月以上前のものです。
TMainは揮発性のテーブルであり、その上の列は一定期間にわたって変更/削除されるため、TMainが変更されたときに、TArchiveが常に同期するように何らかの制御を行いたいと思います。
Oracleでこれを実現するための最良の方法は何ですか?
任意の提案と解決策をいただければ幸いです。
現在のデータが格納されているのと同じ方法で履歴データを保持するための最良のソリューションは、パーティショニングです。
11G では、間隔を設定することもでき、Oracle は自動的に新しいパーティションを作成します。ただし、圧縮を使用したくなる場合は、圧縮されたパーティションがあると DDL を変更できないことを考慮してください。
Oracle の DDL はトランザクション対応ではありません。これは、Oracle で 2 つのオブジェクト間で DDL を複製する自動化されたプロセスには、多少の欠陥があることを意味します。2 番目の DDL ステートメントが失敗した場合はどうなりますか? 最初のものをロールバックすることはできません。
さらに、DDL を検証するための外部の組織プロセスが既に存在している必要があります。たとえば、多くの組織では、開発者は開発データベースにしか変更を加えることができません。これらの変更は、テスト目的でステージング データベースに伝達されます。これらの変更を検証後、本番環境にプッシュできるのは DBA のみです。開発者と DBA が同じ人物であっても、次のガイドラインに従う必要があります。すべての DDL を確認してください。
これらの理由から、DDL レプリケーションを自動化しないことをお勧めします。これは面倒すぎるように見えます。その代わり: