Oracle的snapshot是什么?
Snapshot就是快照
Oracle数据库的快照是一个表,它包含对一个本地或远程数据库上的一个或多个表或视图的查询结果。相当于主表的查询子集,使用快照可以加快数据的查询速度;在保持不同数据库中的两个表的同步中,利用快照刷新,数据的更新性能也会有很大的改善。
oracle 快照及 dblink使用 (两台服务器数据同步)-- 目的--要同步到的数据库
/*一、创建dblin:*/
--1、在目的数据库上,创建dblin
drop database link dblink_zhaozhenlong_1;
Create public
database link dblink_zhaozhenlong_1
Connect to lg identified by lg using ' SDLGDB' ;
--源数据库的用户名、密码、服务器名k
/*二、创建快照:*/
--1、在源和目的数据库上同时执行一下语句,创建要被同步的表
drop table tb_zhaozhenlong_1;
create table tb_zhaozhenlong_1(c1 varchar2(12));
alter table tb_zhaozhenlong_1 add constraint pk_zhaozhenlong_2 primary key (C1);
--2、在目的数据库上,测试dblink
select * from tb_zhaozhenlong_1@dblink_zhaozhenlong_1;
select * from tb_zhaozhenlong_1;
--3、在目的数据库上,创建要同步表的快照日志
Create snapshot log on tb_zhaozhenlong_1;
--4、创建快照,快照(被同步(源)数据库服务必须启动)
Create snapshot sn_zhaozhenlong_1 as select * from tb_zhaozhenlong_1@dblink_zhaozhenlong_1;
--5、设置快照刷新时间
Alter snapshot sn_zhaozhenlong_1 refresh fast Start with sysdate+1/24*60 next sysdate+10/24*60;
--oracle自动在1分钟后进行第一次快速刷新,以后每隔10分钟快速刷新一次
Alter snapshot sn_zhaozhenlong_1 refresh complete Start with sysdate+30/24*60*60 next sysdate+1;
--oracle自动在30钞后进行第一次完全刷新,以后每隔1天完全刷新一次
--6、手动刷新快照
begin
dbms_refresh.refresh(' " CS" ." SN_ZHAOZHENLONG_1" ' );
end;
四、根据需要修改快照刷新的间隔时间;
---- dmtcx用户下的快照s_yh_qfcx为了与sffw用户下的主表yh_qfcx保持同步,需要不断刷新快照。只有设定了快照的刷新间隔时间,oracle才会自动刷新该快照。
---- 快照的刷新有两种方式:快速刷新和完全刷新。快速刷新需要快照的主表先有快照日志存在;完全刷新时oracle执行快照查询,将结果放入快照。快速刷新比完全刷新快,因为快速刷新将主数据库的数据经网络发送到快照的数据少,仅需传送主表中修改过的数据,而完全刷新要传送快照查询的全部结果。
Alter snapshot s_yh_qfcx refresh fast
Start with sysdate+1/1440 next sysdate+1/144;
{ 此SQL语句的意思为:设定oracle自动在1分钟
(1/24*60)后进行第一次快速刷新,以后每隔10分钟
(10/24*60)快速刷新一次。}
Alter snapshot s_yh_qfcx refresh complete
Start with sysdate+1/2880 next sysdate+1;
{ 此SQL语句的意思为:设定oracle自动在30钞
(30/24*60*60)后进行第一次完全刷新,
以后每隔1天完全刷新一次。}
/*一、创建dblin:*/
--1、在目的数据库上,创建dblin
drop database link dblink_zhaozhenlong_1;
Create public
database link dblink_zhaozhenlong_1
Connect to lg identified by lg using ' SDLGDB' ;
--源数据库的用户名、密码、服务器名k
/*二、创建快照:*/
--1、在源和目的数据库上同时执行一下语句,创建要被同步的表
drop table tb_zhaozhenlong_1;
create table tb_zhaozhenlong_1(c1 varchar2(12));
alter table tb_zhaozhenlong_1 add constraint pk_zhaozhenlong_2 primary key (C1);
--2、在目的数据库上,测试dblink
select * from tb_zhaozhenlong_1@dblink_zhaozhenlong_1;
select * from tb_zhaozhenlong_1;
--3、在目的数据库上,创建要同步表的快照日志
Create snapshot log on tb_zhaozhenlong_1;
--4、创建快照,快照(被同步(源)数据库服务必须启动)
Create snapshot sn_zhaozhenlong_1 as select * from tb_zhaozhenlong_1@dblink_zhaozhenlong_1;
--5、设置快照刷新时间
Alter snapshot sn_zhaozhenlong_1 refresh fast Start with sysdate+1/24*60 next sysdate+10/24*60;
--oracle自动在1分钟后进行第一次快速刷新,以后每隔10分钟快速刷新一次
Alter snapshot sn_zhaozhenlong_1 refresh complete Start with sysdate+30/24*60*60 next sysdate+1;
--oracle自动在30钞后进行第一次完全刷新,以后每隔1天完全刷新一次
--6、手动刷新快照
begin
dbms_refresh.refresh(' " CS" ." SN_ZHAOZHENLONG_1" ' );
end;
四、根据需要修改快照刷新的间隔时间;
---- dmtcx用户下的快照s_yh_qfcx为了与sffw用户下的主表yh_qfcx保持同步,需要不断刷新快照。只有设定了快照的刷新间隔时间,oracle才会自动刷新该快照。
---- 快照的刷新有两种方式:快速刷新和完全刷新。快速刷新需要快照的主表先有快照日志存在;完全刷新时oracle执行快照查询,将结果放入快照。快速刷新比完全刷新快,因为快速刷新将主数据库的数据经网络发送到快照的数据少,仅需传送主表中修改过的数据,而完全刷新要传送快照查询的全部结果。
Alter snapshot s_yh_qfcx refresh fast
Start with sysdate+1/1440 next sysdate+1/144;
{ 此SQL语句的意思为:设定oracle自动在1分钟
(1/24*60)后进行第一次快速刷新,以后每隔10分钟
(10/24*60)快速刷新一次。}
Alter snapshot s_yh_qfcx refresh complete
Start with sysdate+1/2880 next sysdate+1;
{ 此SQL语句的意思为:设定oracle自动在30钞
(30/24*60*60)后进行第一次完全刷新,
以后每隔1天完全刷新一次。}