天天看点

ORACLE创建数据库同步快照

真是不巧,学习测试就遇到这样的问题!

ORA-02085: database link CTAIS connects to TLPSSJLD

意思是:If u set the parameter 'global_names' to true,the db link name connected to this server must equal db_name + db_domain.

需要修改global_names的值为false,运行下面的语句:

enet@lx>column name format a20;

enet@lx>column value format a20;

enet@lx>select name ,value from v$parameter where name = 'global_names';

NAME                 VALUE

-------------------- --------------------

global_names         TRUE

果然global_names的值为true。下面把其修改为false:

enet@lx>alter system set global_names=false scope=both;

系统已更改。

确认修改成功:

global_names         FALSE

---------------------------------------------------------------------------------------

1、建立数据库连接;填写源数据库的用户名、密码、服务器名

drop database link CTAIS;
create public database link CTAIS connect to sjldadmin identified by sjldadmin using 'TLPSSJLD';      

2、创建要同步的表,如果已创建则省略这一步;

drop table RWTX; 
create table RWTX(c1 varchar2(12)); 
alter table RWTX add constraint pk_anson primary key (C1);      

3、在目的数据库上测试数据库连接CTAIS;

select * from sjldadmin.RWTX@ctais;      

4、在目的数据库上,创建要同步表的快照日志;

Create snapshot log on RWTX;      

5、创建快照,快照(被同步(源)数据库服务必须启动) ;

Create snapshot RWTX as select * from sjldadmin.RWTX@CTAIS;      
Alter snapshot RWTX refresh fast Start with sysdate+1/24*60 next sysdate+10/24*60; 
--oracle自动在1分钟后进行第一次快速刷新,以后每隔10分钟快速刷新一次
Alter snapshot RWTX refresh complete Start with sysdate+30/24*60*60 next sysdate+1;
--oracle自动在30钞后进行第一次完全刷新,以后每隔1天完全刷新一次      
begin 
dbms_refresh.refresh('"CS"."RWTX"');
end;