2012-01-25 5 views
5

2つのOracleデータベースDB_AとDB_Bがあるとします。マテリアライズド・ビュー・ログとDB_AでTAB1という名前の表があり、そしてOracleでのマテリアライズド・ビューの高速リフレッシュによる変更を問い合せる方法はありますか?

CREATE SNAPSHOT SNAP_TAB1 
REFRESH FAST 
AS SELECT * FROM [email protected]_A; 

で作成したDB_BでSNAP_TAB1という名前のマテリアライズド・ビューは、各呼び出しが急速した後DB_BにSNAP_TAB1に行われた変更を照会する方法はありますマテリアライズド・ビューをリフレッシュする

DBMS_SNAPSHOT.REFRESH('SNAP_TAB1', 'F'); 

はDB_Aでは、前のリフレッシュに、あなたは行がTAB1に変更されたかを確認するために、マテリアライズド・ビュー・ログ表、MLOG $ _TAB1を照会することができます。私はDB_Bで照会する方法を探しています。各リフレッシュ後、SNAP_TAB1でどの行がリフレッシュされましたか。

ありがとうございます!

あなたがテーブルSNAP_TAB1に列を追加することができます。

答えて

1

私は事前作成表と作業下の行は思います。

インサートの場合インサートのタイムスタンプを持つすべてのインサートに対して、default sysdate =>上に置くことができます。

アップデートの場合は、トリガーを使用できます。列はマテリアライズド・ビューには含まれていないため、トリガーで列を更新することは問題にはなりません。 Probaly

あなたはすべての新しいリフレッシュする前にインクリメントその列に格納するための一意のIDを、使用することができますトリガと、より良い。(一意のIDを取得するには、異なるaproachesを有していてもよい。)

明らかに、あなたは「できますtトラックはこのアイデアを削除します。