Oracle快照原理及实现总结

2014-11-24 18:43:49 · 作者: · 浏览: 0

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


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


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


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


  create database link TEST_DBLINK.US.ORACLE.COM


  connect to AMICOS identified by AMICOS


  using ’test’;


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


  Create snapshot log on A_Table;


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


  Create snapshot Test_SnapShot


  REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE+1/24


  as select * from A_Table@TEST_DBLINK


  说明:REFRESH是刷新方法


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


  Next是下次执行的时间


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


  相关的方法:


  更改快照


  ALTER SNAPSHOT Test_SnapShot


  REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE+1/2;


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


  EXEC DBMS_SNAPSHOT.REFRESH(’Test_SnapShot ’,’C’);


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


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


  查看快照最后刷新的日期


  SELECT NAME,LAST_REFRESH


  FROM ALL_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。