ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle快照原理及实现总结

Oracle快照原理及实现总结

原创 Linux操作系统 作者:qgrape 时间:2008-09-15 18:53:37 0 删除 编辑

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

 

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

 

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

 

以下是我建立的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。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12330444/viewspace-448449/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-04-09

  • 博文量
    223
  • 访问量
    560964