Oracle 快照初次使用

因为公司后面会使用到快照技术,所以我在网上查找了一些资料,但是资料不全,通过整合几篇文章以后终于配置出Oracle的快照,这里记录一下

--创建快照的流程  
 --名词说明:源——被同步的数据库 GRPWD
--          目的——要同步到的数据库 SPAGO_ADP

--这里源和目的都是我的本机,只不过用户名不同

--1、在目的数据库上,创建dblink  
drop public database link dblink_test;
Create public DATABASE LINK dblink_test CONNECT TO GRPWD IDENTIFIED BY sorry USING '(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )'; --源数据库的用户名、密码、服务器名
  --这里要说明一下,看网上文章中大多数使用的都是一个简称的名字,如图


不过我通过这个进行配置不成功,所以后来通过查找oracle的tnsnames.ora 这个文件,直接使用了里面的一个配置

  --2、在源和目的数据库上创建要同步的表(最好有主键约束,快照才可以快速刷新)
drop table test_user;
create table test_user(id number(10) primary key,name varchar2(12),age number(3));--目的,此时登录的是目的用户
create table GRPWD.test_user(id number(10) primary key,name varchar2(12),age number(3));--源

--3、在目的数据库上,测试dblink
select * from test_user@dblink_test;   -- //查询的是源数据库的表
select * from test_user;--目的的

--4、在源数据库上,创建要同步表的快照日志
Create snapshot log on GRPWD.test_user;


--5、创建快照,在目的数据库上创建快照
Create snapshot sn_test_user as select * from test_user@dblink_test;

--6、设置快照刷新时间(只能选择一种刷新方式,推荐使用快速刷新,这样才可以用触发器双向同步)
--快速刷新
Alter snapshot sn_test_user refresh fast Start with sysdate next sysdate with primary key;
--oracle马上自动快速刷新,以后不停的刷新,只能在测试时使用.真实项目要正确权衡刷新时间.--+1/(24*60)

--完全刷新
Alter snapshot sn_test_user refresh complete Start with sysdate+30/(24*60*60) next sysdate+30/(24*60*60);
--oracle自动在30秒后进行第一次完全刷新,以后每隔30秒完全刷新一次

--7、手动刷新快照,在没有自动刷新的情况下,可以手动刷新快照.
--手动刷新方式1
begin
dbms_refresh.refresh('sn_test_user');
end;

--手动刷新方式2
EXEC DBMS_SNAPSHOT.REFRESH('sn_test_user','F');  
--我看到的文章是这样的方式,但是我测试的时候不可以
--//第一个参数是快照名,第二个参数 F 是快速刷新 C 是完全刷新.

--9.查看快照最后一次刷新时间
SELECT NAME,LAST_REFRESH FROM ALL_SNAPSHOT_REFRESH_TIMES;

--10.查看快照下次执行时间
select last_date,next_date,what from user_jobs order by next_date;




--查询表
select * from GRPWD.test_user;
select * from test_user;

--查询快照   sn_test_user是目的数据库中的快照
select * from sn_test_user;

--销毁快照
drop snapshot sn_test_user;




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值