Oracle快照原理及实现总结

由于工作需要,今天需要将业务数据库里所有的数据同步到另外一个处理服务器上。在做方案的时候,想了很多方法,当然最快的办法还是使用物理热备的方式。 

  但是我个人认为如果对于中大型数据库(我们的数据库有300G左右)最佳的选择还是使用SnapShot方式,即快照的方式。 

  Oracle数据库的快照是一个表,它包含有对一个本地或远程数据库上一个或多个表或视图的查询的结果。也就是说快照根本的原理就是将本地或远程数据库上的一个查询结果保存在一个表中。 

  以下是我建立的Snapshot,目的是从业务数据库上将数据Copy到处理数据库上,是不同的两个服务器之间对数据copy。 

  第一步:在处理服务器上的Oracle终端,建立database link,业务数据库服务器SID为TEST  

   createdatabaselinkTEST_DBLINK.US.ORACLE.COM 
  connecttoAMICOSidentifiedbyAMICOS 
  using'test'; 

  第二步:在业务数据库上对应的表建立快照日志  

   CreatesnapshotlogonA_Table; 

  第三步:建立Snapshot 快照名称为:Test_SnapShot  

   CreatesnapshotTest_SnapShot 
  REFRESHCOMPLETESTARTWITHSYSDATENEXTSYSDATE+1/24 
  asselect*fromA_Table@TEST_DBLINK 

  说明:REFRESH是刷新方法 

  刷新方式有:COMPLETE和FAST两种,而START WITH是说明开始执行的时间。 

  Next是下次执行的时间 

  而AS以后是构成快照的查询方法。 

  相关的方法: 

  更改快照   

   ALTERSNAPSHOTTest_SnapShot 
  REFRESHCOMPLETESTARTWITHSYSDATENEXTSYSDATE+1/2; 

  手动刷新快照 在命令界面执行:  

   EXECDBMS_SNAPSHOT.REFRESH('Test_SnapShot','C'); 

  第一个参数是要刷新的快照名 

  第二个参数是刷新的方式,F----FAST, C---COMPLETE 

  查看快照最后刷新的日期  

   SELECTNAME,LAST_REFRESH 
  FROMALL_SNAPSHOT_REFRESH_TIMES; 

  最后非常的方案: 

  1:为需要做Snapshot的表建立Snapshot日志 

  create snapshot log on t1 with rowid; 这里使用ROWID建立日记的参数 

  2:采用Fast的方式建立快照,使用rowid做为参考参数 

  create snapshot fb_test_b refresh fast with rowid start with sysdate next sysdate+1/1440 as select * from fb_test_b@my_dblink; 

  最好能按照rowid来建立快照。要不然就必须要为表建立Primary Key。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值