Skip to Main Content

Japanese

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

マテリアライズドビューを高速リフレッシュする場合の制約について

user9260455Oct 28 2013 — edited Oct 28 2013

Oracle11g Release1 を使用しています。

マテビューを高速リフレッシュ可能にする場合、いくつかの決まりごとがありますが、なかなか高速更新が

可能な状態に出来なくて困っています。

1.元のテーブルにビュー・ログが必要

 これは作成しました。

2.集計関数を使用している場合は、マテビュー内に「COUNT(*)」や「COUNT(AMOUNT)」などが必要

 SUM関数だけの時は問題ないのですが、MAX関数があるとダメのようです。

3.UNION結合は使用できない

 諦めました

4.副問合せは使用できない

 WHERE句で別テーブルの値と同じものだけを抽出したいのですが、これもダメのようです。

5.複合問合せは使用できない

 マテビュー内で元テーブルのコードとマスタの名称を持たせたいのですが、FROM句で2つ以上を

 指定するとダメのようです。

いずれも「REFRESH FAST」とするとCREATEできない、或いは「dbms_mview.refresh」の

パラメータで「'f'」を指定して実行すると実行エラー(ORA-12004、ORA-06512)が発生します。

なお「REFRESH FORCE or COMPLETE」だとCREATEも実行も全く問題ありません。

上記の制約を外すだけ外したら何とか高速リフレッシュできるようにはなったのですが、

意図する構造を大きく断念せざるを得ない状況です。

データ量が数十万件もあって時間がかかるために高速リフレッシュに切替えたいのですが・・・

実際、データの変更部分はかなり少ないはずですので。

制約があって無理ならそれで諦めるしかないですが、詳しい情報が記載されているサイトなど

ありましたら教えていただけませんでしょうか。

宜しくお願いします。

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Nov 25 2013
Added on Oct 28 2013
2 comments
3,878 views