こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

マテリアライズドビューを利用した差分実体の取得

こんにちは。

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

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

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

投稿日時 - 2010-04-17 22:50:25

QNo.5833221

困ってます

このQ&Aは役に立ちましたか?

23人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

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

参考(10G R2例) :http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19220-02/rarmanmv.htm#i19724

投稿日時 - 2010-04-20 16:09:18

お礼

bindooさん

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

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

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

投稿日時 - 2010-05-03 10:20:41

あなたにオススメの質問