年に 1 回など定期的に、いくつかの基準に基づいて DB2 9.7 データベースから一連のテーブル行をアーカイブしたいと考えています。たとえば、1 年に 1 回、作成日が 1 年以上前のすべての EMPLOYEE 行をアーカイブしますか?
アーカイブとは、データが DB スキーマから移動され、別の場所に取得可能な形式で保存されることを意味します。これは可能ですか?
プログラムでアーカイブされたデータにアクセスする必要がない場合は、次のことをお勧めします。
echo '===================== export started '; values current time; -- maybe ixf format would be better? export to tablename.del of del select * from tablename where creation_date < (current date - 1 year) ; echo '===================== export finished ';
echo '===================== delete started '; values current time; delete from tablename.del of del where creation_date < (current date - 1 year) ; commit; echo '===================== delete finished ';
db2 connect to db user xx using xxx db2 -s -vtf export.sql 7z a safe-location-<date-time>.7z tablename.del if no errors till now: db2 -s -vtf delete.sql
繰り返しますが、削除は非常に機密性の高い操作であるため、データが失われないように複数のバックアップ メカニズムを用意することをお勧めします(たとえば、削除して別の期間を設定する - たとえば、1.5 年以上前のものを削除する)。
システムがアーカイブされたデータにアクセスする必要がある場合は、次のいずれかの方法をお勧めします。
もちろん?かなり単純な方法の 1 つは、基本的に次のようなストアド プロシージャを作成することです。
列のサブセットのみをアーカイブに入れたい場合は、一時ファイルで主キーを取得している限り、それらの列のみを含むビューから抽出できます。