2009-09-25 9 views
5

私はオラクルについて話しています。いくつかのマテリアライズド・ビューがあり、時々更新されています(スケジュールされたタスクで実行されます)。 USER_MVIEW_REFRESH_TIMESを照会するだけで、最新の更新日を簡単に知ることができます。 現在の瞬間にいくつかのビューが更新されているかどうかを知る方法はありますか?MATERIALIZED VIEW更新プログラムが実行されているかどうかを確認する方法?

答えて

4

プロセスがロックを取得しているかどうかを調べて、マテリアライズド・ビューがリフレッシュされているかどうかを間接的に確認することができます。

この問合せは、マテリアライズド・ビューがリフレッシュされている行だけ返す必要があります:「... NEXT ...で始まるとスケジュールにリフレッシュされるように定義されている

SELECT sid 
    FROM v$lock 
WHERE type = 'TX' 
    AND id1 = (SELECT object_id 
       FROM all_objects 
       WHERE owner = :owner 
       AND object_name = :object_name) 
4

マテリアライズドビューを... "DDLの一部としてDBMS_JOB制御下で実行されます。これらのMVのリフレッシュが進行中の場合、対応するジョブのUSER_JOBS(またはDBA_JOBS)ビューおよび/またはDBA_JOBS_RUNNINGの行にTHIS_DATEおよびTHIS_SECの値が表示されます。

MVが要求に応じてリフレッシュされるように定義し、外部からリフレッシュを開始する場合は、Vincentの回答が状態を判断する方法の1つです。

+0

ありがとうございます。しかし、ビューは外部javaタスクで更新されます。 –

5

あなたは試みることができる:

SELECT CURRMVOWNER, CURRMVNAME FROM V$MVREFRESH

は今、さわやかなビューのリストを取得します。

関連する問題