oracle————创建DB快照

物化视图,接触过DB的应该都听说过,我这边虽然听说过,但是第一次使用还是碰到了不小的麻烦,记录一下;

一、

    例:我们操作的DB叫    targetDB;源DB叫  sourceDB

    首先在 targetDB建立  dblink

   create database link dblikname          //dblikname你自己命名的

   connect to name                                 //name就是sourceDB的用户名

   identified by pwd                                 //name就是sourceDB的密码

   using 'dbtest';                                     

   //dbtest就是sourceDB的tns连接字符串 

   就是  下面的一串东西,用过plsql的应该都能看懂

  using '(DESCRIPTION = 
  (ADDRESS_LIST = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.15.7.20)(PORT = 1521)) 
    ) 
    (CONNECT_DATA = 
        (SERVICE_NAME = GIB) 
    ) 
)'

二、创建快照日志

          建立好dblink以后起始已经在targetDB中可以用 sql查询了,

          比如  select * from 表名@dblikname     //dblikname就是你刚才创建的名称       

          在sourceDB中建立 快照日志(为什么需要建立快照日志呢,后面会讲解)

          Create snapshot log on A_Table with primary key;         //用主键A_Table为sourceDB中你要建立快照的那个表。

三、建立快照

        

Create snapshot  Test_SnapShot 
   REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE+1/24 
as select * from A_Table@dblikname     

上面代码中 refresh 后面跟着的 complete是指 刷新方式

     fast        快速刷新,用snapshot log,只更新时间段变动部分 (增量刷新,这就是  设置快照日志的原因)
     complete    完全刷新,运行SQL语句  
     force       自动判断刷新,介于fast和complete之间  

Start with 说明开始执行的时间

Next是下次执行的时间

--附:快照刷新时间参数说明
一天的秒数=24小时*60分钟*60钞
所以要想在30秒后刷新,参数应该这样写 sysdate+30/(24*60*60)
1分钟==sysdate+60/(24*60*60)

一天的分钟数=24小时*60分钟
一分钟也可以这样写 sysdate+1/(24*60)
30分钟==sysdate+30/(24*60)
60分钟==sysdate+60/(24*60)

以此类推
1小时==sysdate+1/24==sysdate+60/(24*60)
1天==sysdate+1
一个月==sysdate+30

猜你喜欢

转载自blog.csdn.net/java_dotar_01/article/details/87807779