• 締切済み

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

こんにちは。 Oralceで差分(新規・更新)があった場合に差分データ(実体)のみ取得を 行おうと下記の手順を行ったのですがうまく行きません。 ・マテリアライズドビューログを作成(デフォルト) ・読み込み専用マテリアライズドビューを作成(デフォルト) ・完全リフレッシュ(初回のみ) (反映後マテビューをTruncate) ・高速リフレッシュ(ここでエラー:ORA-32320)  以降、高速リフレッシュ間隔で差分データを取り出したい パラメータがおかしい等ご指摘お願い致します。

みんなの回答

  • bindoo
  • ベストアンサー率100% (2/2)
回答No.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

keenhead
質問者

お礼

bindooさん お礼が遅れ申し訳ございません。 ご回答ありがとうございます。 こちらでも色々と調査をしたのですが、 使用目的として高速リフレッシュを利用した差分は難しいみたいですね。 なのでデータ・キャプチャで対応しようと思います。 ありがとうございました。