2017-08-07 5 views
0

マテリアライズド・ビューの更新方法がわかりません。マテリアライズド・ビューを作成し、毎分更新しました。マテリアライズド・ビューの更新時刻が正しくない

create materialized view vmat 
refresh force on demand 
start with to_date('07-08-2017 10:00:00', 'dd-mm-yyyy hh24:mi:ss') 
next sysdate+(1/(24*60)) 
as 
select * from mat where id>3;` 

しかし、それはuser_mview_refresh_timesで2017年8月7日16時21分07秒で更新。それは2017/8/7 16:21:00に更新する必要があります。だから私は非常に混乱しています。

+0

あなたはそれを意図した後に更新された7秒と言っていますか? – Shahzaib

+0

私はそれが7秒を更新することは不可能だと思う。テーブルの10行だけ。私は07-08-2017 10:00:00に開始し、毎分のテーブルを更新します。それは毎分の始めに更新する必要があります。私はちょうどテストをして、私の仕事にそれを適用します。 –

+0

私は少し変更を加えて、マテリアライズド・ビューを毎時更新します。非常に奇妙です。'07 -08-2017 10:15:24にマテリアライズド・ビューを作成すると、次の更新時間は'07 -08-2017 11:15:24 '。これは「start with」節がうまくいかないようです。 –

答えて

0

nextパラメータには、リフレッシュ時間を日付時間として指定します。この時間は、データベースが一定の時間間隔に変わります。私は、問題はstartnextを別々に定義していると思います。特に、生のsysdateを使用しています。これには、正確な秒までのtime要素が含まれています。そのため、LAST_REFRESHの奇妙な値が得られたのです。

は、(元の回を使用して)代わりに、この製剤を試してみてください:

... 
, Start => trunc(sysdate)+(10/24) 
, Next => trunc(sysdate)+(1/1440) 

をので、初期の開始時間は午前10時00分00秒となり、最初のリフレッシュが10時01分〇〇秒となります。

+0

あなたが示したコードは正しくありません。マテリアライズド・ビューを作成すると、最初にビューが更新されます.DBMSは、ビューを更新する次の日付を計算します。そうです。ありがとうございます。次は=> trunc(sysdate、 'mi')+ 1/1440 –

関連する問題