1.可在应用程序(如job或triger)中用手工刷新快照。ORACLE提供了DBMSsnapshot包允许用户手工刷新快照,调用REFRESH过程如下:DBMSSnapshot.Refresh(snapshotname, refreshtype)其中:refreshtype 刷新类型。若对所有快照进行刷新,可用过程:DBMSsnapshot.RefreshALL
2.也可以Alter snapshot snapshotname refresh fast
Start with sysdate+1/1440 next sysdate+1/144;
{此SQL语句的意思为:设定oracle自动在1分钟
(1/24*60)后进行第一次快速刷新,以后每隔10分钟
(10/24*60)快速刷新一次。}

解决方案 »

  1.   

    谢谢楼上关注,不过你并没有回答我的问题我想了一下,第一个问题就不需要了,因为有synonym或者view第二个问题:怎么读取快照日志?
      

  2.   

    使用system或sys用户
    select * from sys.all_snapshot_logs
      

  3.   

    up一下:第一个问题:create 一个select * from tabl的视图与同义词作用完全一样,对不对?
      

  4.   

    ---------------------
    第一个问题:create 一个select * from tabl的视图与同义词作用完全一样,对不对?
    ---------------------
    不一样,用程序的概念类比:
    同义词是个指针
    create 一个select * from tabl的视图复制的是整个对象
      

  5.   

    是的,视图可称作虚表,没有实际数据。ON COMMIT 
     Specify ON COMMIT to indicate that a fast refresh is to occur whenever Oracle commits a transaction that operates on a master table of the materialized view.
     
    CREATE MATERIALIZED VIEW mv1 REFRESH FAST ON COMMIT
       BUILD IMMEDIATE
       .............;