「これはヤバかったな」という遅刻エピソード

こんにちは。

Oralceで差分(新規・更新)があった場合に差分データ(実体)のみ取得を
行おうと下記の手順を行ったのですがうまく行きません。

・マテリアライズドビューログを作成(デフォルト)
・読み込み専用マテリアライズドビューを作成(デフォルト)
・完全リフレッシュ(初回のみ)
(反映後マテビューをTruncate)
・高速リフレッシュ(ここでエラー:ORA-32320)
 以降、高速リフレッシュ間隔で差分データを取り出したい

パラメータがおかしい等ご指摘お願い致します。

A 回答 (1件)

こんにちは。


高速リフレッシュはMVログ情報を元に差分リフレッシュを実行しますが、TRUNCATEを行うと、対象レコードの情報がMVログ、MVに登録されないため、差分のリフレッシュの元ネタが見つからなくMVに反映されません。回避案としては、強制オプションを指定して高速リフレッシュNG時に完全リフレッシュさせればいかがでしょうか。
  DBMS_MVIEW.REFRESH( 'xxxx', '?' );
この場合、TRUNCATE後の1回目のみ完全リフレッシュ、以降はTRUNCATEするまで高速リフレッシュになるはずです。

参考(10G R2例) :http://otndnld.oracle.co.jp/document/products/or …
    • good
    • 0
この回答へのお礼

bindooさん

お礼が遅れ申し訳ございません。
ご回答ありがとうございます。

こちらでも色々と調査をしたのですが、
使用目的として高速リフレッシュを利用した差分は難しいみたいですね。
なのでデータ・キャプチャで対応しようと思います。

ありがとうございました。

お礼日時:2010/05/03 10:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


おすすめ情報