マテリアライズド・ビューの完全リフレッシュで、最新の情報に更新されません
831166Jan 14 2011 — edited Jan 24 2011マテリアライズド・ビューの完全リフレッシュで、最新の情報に更新されません。
下記の環境で、
① DB1のAテーブルのデータを更新(バッチプログラムからSQLPlusでストプロを実行)し、
② DB2のマテビューを完全リフレッシュ(バッチプログラムからSQLPlusで完全リフレッシュを実行)
を実行した場合に、マテリアライズド・ビューの値が更新されないことがあります。
<環境>
データベースのバージョン:10gR2
DB1 : Aスキーマ、Aテーブル(60万件)
DB2 : Bスキーマ、Bテーブル(100万件)、Bマテビュー、AスキーマへのDBリンク
Bマテビュー:BテーブルとAテーブル(AスキーマへのDBリンクを使用)の結合表
いろいろとテストをした結果、①実行前の情報に更新されている事がわかりました。
また、②の完全リフレッシュ実行前にBマテビューで使用されているSELECT文を実行すると、
②のマテビュー完全リフレッシュで正しい値に更新されました。
なぜこのような結果になるのでしょうか?
マテビューの完全リフレッシュでは、DeleteとInsertIntoを行っているだけだとおもっているのですが、
何か特殊なデータの取り方をしているのでしょうか?
どういった事をしらべていけばよいのかも分からない状態です。
調べ方や完全リフレッシュの仕組み等教えて下さい。