oracle同步复制清理,Oracle数据库同步——高级复制

情景模拟

现在有两台服务器:

1)

机器名:ThinkPad IP:126.33.9.190 Oracle SID:ORCL

2)

机器名:ZHANGJIAN IP:

126.33.9.154 Oracle SID: ORCL

目的:将ThinkPad机器上用户Geosoc里面的BookMark表同步到ZHANGJIAN机器里面去。

(一)

高级复制

1.

查看是否具备高级复制功能

首先,数据库要具备高级复制功能(用system身份登录数据库,查看v$option视图,如果其中Advanced replication为TRUE,则支持高级复制功能;否则不支持)。

select *

from v$option

2.

设置相应参数

本例的先决条件:你需要设置好相应的参数,

job_queue_processes需要大于0,

global_name=true,

并且建立相应的db link

alter system set global_names=true scope=both;

3.

创建复制管理员账号

在两个数据库上分别创建复制管事员用户REPADMIN(该用户名及密码可以任意设置,建议统一采用该名字,密码统一为orcl)。

--创建repadmin用户管理复制环境CREATE USER REPADMIN IDENTIFIED BY REPADMIN; ALTER USER REPADMIN DEFAULT TABLESPACE USERS; ALTER USER REPADMIN TEMPORARY TABLESPACE TEMP; GRANT connect, resource TO REPADMIN;

--授予repadmin用户权限可以管理当前站点中任何主体组EXECUTE dbms_repcat_admin.grant_admin_any_schema('REPADMIN');--授予repadmin用户权限可以为任何表创建snapshot logsGRANT comment any table TO REPADMIN; GRANT lock any table TO REPADMIN;--指定repadmin用户为propagator,并授予执行任何procedure的权限

EXECUTE dbms_defer_sys.register_propagator('REPADMIN'); GRANT execute any procedure TO REPADMIN;

4.

更改数据库全局名

由于后面创建数据库链接(Database

link)时需要用到数据库全局名,因此遇到同名的数据库全局名时需要更改其数据库名。

ThinkPad机器:改为

ORCL_THINKPAD

alter database rename global_name to ORCL_THINKPAD;ZHANGJIAN机器:改为

ORCL_ZHANGJIAN

alter database rename global_name to ORCL_THINKPAD;

5.

在两个数据库上分别建立到对方的数据库链接

建立数据库链接的前提是两个数据库能互相访问,因此需要在数据库端先建立互相的连接本地命名。

由于开启了Global_names为True,因此链接名必须与Global名一致。

ThinkPad: 建立到ZHANGJIAN的本地命名为ORCL154。

create public database linkORCL_ZHANGJIANconnect toREPADMINidentified byorclusing'ORCL154';

ZHANGJIAN:建立到ThinkPad的本地命名为ORCL190。

create public database linkORCL_THINKPADconnect toREPADMINidentified byorclusing 'ORCL190';

建立好链接后,可以在各自的机器上测试链接是否成功。

Select * from

BookMark@ORCL_ZHANGJIAN

6.

创建复制组

在需要被复制的数据库上建立复制组,本例中是ThinkPad机器需要被复制,因此在此数据库上建立复制组。

以REPADMIN登录数据库ORCL

a)

创建复制组:

execute dbms_repcat.create_master_repgroup('rep_geosoc');

b)

在复制组里加入复制对象:

execute dbms_repcat.create_master_repobject(sname=>'geosoc',oname=>'bookmark',type=>'table',use_existing_object=>true,gname=>'rep_geosoc',copy_rows=>false);

c)

对复制对象产生复制支持:

execute dbms_repcat.generate_replication_support('geosoc','bookmark','table');

d)

添加主体复制节点:

execute dbms_repcat.add_master_database(gname=>'rep_geosoc',master=>'ORCL_ZHANGJIAN',use_existing_objects=>true,copy_rows=>false, propagation_mode => 'synchronous');

e)

在主体定义站点启动复制:

execute dbms_repcat.resume_master_activity('rep_geosoc',true);

7.

配置完成

Good

Luck!当你走到这里什么错误都没发生,恭喜你!也恭喜我,表示我的文档写的没有那么差,比较负责任的将网上的东西抄下来经过了一番整理!

但这里还是提醒两点:

1:同步的数据表BookMark必须具有主键!

2:同步前,两个数据表初始化是一样的,也就是说同步前,ZHANGJIAN机器上的BookMark表必须和ThinkPad表上的数据一致!可以采用以下的语句进行创建。

Insert Into

BookMark select * from BookMark@ORCL_THINKPAD.

下面你可以尽情的在ThinkPad机器上操作BookMark表,你会即时发现ZHANGJIAN机器上的BookMark表也随之跟着发生变化,Amazoning!

但是,你在ZHANGJIAN机器上操作BOOKMARK表,ThinkPad机器上却没什么变化!So Boring!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值