Oracleにおいて、あるDBの「A」というテーブルと別DBにあるAのマテリアライズドビュー(スナップショットテーブル)「A’」とがあり、日々完全リフレッシュを行っている。
サーバの切替テストやらで、「A」の存在するDBを丸ごと移行した仮想サーバをたて、テストで「A」から「A’」(A’は本番環境)に完全リフレッシュした際、
「ORA-04062: timestamp(xxxxx “yyyyy”について)が変更されました。」
というエラーが発生した。
はじめに
何が起こったのか・・・と想像してみた。
日常「A」から「A’」には日々完全リフレッシュを行っており、実際には前日リフレッシュを行っていた。テストの際は「A」は1カ月前のデータで仮想サーバを立てており、そこから「A’」にリフレッシュしようとした。
どうやら、「A’」側には、データの取得先である「A」がいつ時点のデータベースだったのかということを記録しているようで、その時点から遡った時間を持っているデータベースからリフレッシュを行う際、「本当に大丈夫か」という意味で(と、私は思っているが・・・)、一度エラーにするようになっているみたい。
エラーの「timestampが変更されました」は、「A’」側に保存されている取得先テーブルの時間情報を更新したというエラーで、再度リフレッシュ
すると正常終了となる。
そもそもこんなテストをすることはあまりないのだが、備忘録として残しておこう。
【参考】Oracle Technology Network (OTN) Japan スレッド: ORA-04062に関して
コメント