oracle – 物化视图创建速度快但刷新需要数小时
我正在使用物化视图,我无法将其设置为快速刷新,因为某些表来自远程数据库,它没有物化视图日志. 当我创建物化视图时,花费了大约20 30秒.但是当我试图刷新它时. 有没有人知道它会如何发生? 谢谢 代码如下所示 create materialized view MY_MV1 refresh force on demand start with to_date('20-02-2013 22:00:00','dd-mm-yyyy hh24:mi:ss') next trunc(sysdate)+1+22/24 as ( SELECT Nvl(Cr.Sol_Chng_Num,' ') AS Change_Request_Nbr,Nvl(Sr.Sr_Num,' ') AS Service_Request_Nbr,Nvl(Sr.w_Org_Id,0) AS Org_Id,Fcr.rowid,Cr.rowid,Bsr.rowid,Sr.rowid,SYSDATE FROM Dwadmin.f_S_Change@DateWarehouse.World Fcr INNER JOIN Dwadmin.d_S_Change@DateWarehouse.World Cr ON Fcr.w_Sol_Chng_Id = Cr.w_Sol_Chng_Id INNER JOIN Dwadmin.b_S_Change_Obl@DateWarehouse.World Bsr ON Fcr.w_Sol_Chng_Id = Bsr.w_Sol_Chng_Id INNER JOIN Dwadmin.d_S_Rec@DateWarehouse.World Sr ON Sr.w_Srv_Rec_Id = Bsr.w_Srv_Rec_Id WHERE Sr.Sr_Num <> 'NS' ); 我试过使用dbms_mview.refresh(‘MY_MATVIEW’,’C’,atomic_refresh => false) 解决方法我个人不会使用内置于mat视图CREATE语句中的调度程序(以…开头的子句).主要原因(对我而言)是你不能以这种方式声明刷新非ATOMIC(至少我在CREATE时没有找到这个的语法).根据您的刷新要求和大小,这可以节省大量时间. 我会使用dbms_mview.refresh(‘MY_MATVIEW’,atomic_refresh => false).这个会: >截断MY_MATVIEW快照表 如果在create语句中使用next子句,它将设置一个原子刷新,这意味着它将: >从MY_MATVIEW中删除* 这将更慢(有时慢得多),但其他人仍然可以在刷新过程中从MY_MATVIEW查询.所以,取决于你的情况和需求. (编辑:海南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |