Oracle快照实现-整理

--名词说明:源——被同步的数据库
--          目的——要同步到的数据库

/*一、创建dblink:*/
--1、在目的数据库上,创建dblin
drop database link dblink_anson;
Create public
database link dblink_anson
Connect to lg identified by lg using 'SDLGDB';
--源数据库的用户名、密码、服务器名k


/*二、创建快照:*/
--1、在源和目的数据库上同时执行一下语句,创建要被同步的表
drop table tb_anson;
create table tb_anson(c1 varchar2(12));
alter table tb_anson add constraint pk_anson primary key (C1);

--2、在目的数据库上,测试dblink
select * from tb_anson@dblink_anson;
select * from tb_anson;

--3、在目的数据库上,创建要同步表的快照日志
Create snapshot log on tb_anson;

--4、创建快照,快照(被同步(源)数据库服务必须启动)
Create snapshot sn_anson as select * from tb_anson@dblink_anson;

--5、设置快照刷新时间
Alter snapshot anson  refresh fast Start with sysdate+1/24*60 next sysdate+10/24*60;
--oracle自动在1分钟后进行第一次快速刷新,以后每隔10分钟快速刷新一次
Alter snapshot anson  refresh complete Start with sysdate+30/24*60*60 next sysdate+1;
--oracle自动在30钞后进行第一次完全刷新,以后每隔1天完全刷新一次

 

4和5 可以合并如下:

Create snapshot  sn_anson 
   REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE+1/24
   as select * from tb_anson@dblink_anson

 

 说明: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;

 

--6、 最后非常的方案:

  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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值