Chinaunix首页 | 论坛 | 博客
  • 博客访问: 468366
  • 博文数量: 178
  • 博客积分: 2547
  • 博客等级: 少校
  • 技术积分: 1764
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-22 08:27
文章分类

全部博文(178)

文章存档

2014年(2)

2013年(2)

2012年(2)

2010年(19)

2009年(26)

2008年(69)

2007年(20)

2006年(38)

我的朋友

分类: Oracle

2008-12-16 16:41:06

本文记录了2节点的多主体配置过程,不包含冲突解决方案的配置


第一步:创建主体站点(在所有的主体站点上执行,本例中的两个主体站点分别为orcl1、orcl2)
1、以system用户连接到主体站点
connect system/oracle
2、创建复制管理员
CREATE USER repadmin IDENTIFIED BY repadmin;
3、为复制管理员授权
BEGIN
DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (
username => 'repadmin');
END;
/
4、为主体站点注册传播者
BEGIN
DBMS_DEFER_SYS.REGISTER_PROPAGATOR (
username => 'repadmin');
END;
/
5、为主体站点注册接受者
BEGIN
DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
username => 'repadmin',
privilege_type => 'receiver',
list_of_gnames => NULL);
END;
/

6、为主体站点设置清除已传播事务的调度作业
CONNECT repadmin/repadmin;
BEGIN
DBMS_DEFER_SYS.SCHEDULE_PURGE (
next_date => SYSDATE,
interval => 'SYSDATE + 1/24',
delay_seconds => 0);
END;
/
7、创建各主体站点之间的调度连接(以orcl1为例,orcl2类似)
connect system/oracle
CREATE PUBLIC DATABASE LINK orcl2 USING 'orcl2';
connect repadmin/repadmin
CREATE DATABASE LINK orcl2 CONNECT TO repadmin IDENTIFIED BY repadmin;
8、创建本站点向其它站点发送事务的调度作业(以orcl1为例,orcl2类似)
CONNECT repadmin/repadmin
BEGIN
DBMS_DEFER_SYS.SCHEDULE_PUSH (
destination => 'orcl2',
interval => 'SYSDATE + (1/1440)',
next_date => SYSDATE,
parallelism => 1,
execution_seconds => 0,
delay_seconds => 0);
END;
/
第二步:在各主体站点上创建需要复制的方案
第三步:创建主体复制组(主体定义站点上执行)
conn repadmin/repadmin
1、创建主体复制组
BEGIN
DBMS_REPCAT.CREATE_MASTER_REPGROUP (
gname => 'test_repg1');
END;
/
2、向主题复制组中添加复制对象
BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'test_repg1',
type => 'TABLE',
oname => 't_object1',
sname => 'test',
use_existing_object => TRUE,
copy_rows => TRUE);
END;
/
3、在主体定义站点中添加其它的主体站点
BEGIN
DBMS_REPCAT.ADD_MASTER_DATABASE (
gname => 'test_repg1',
master => 'orcl2',
use_existing_objects => TRUE,
copy_rows => TRUE,
propagation_mode => 'SYNCHRONOUS');
END;
/
通过sql语句SELECT DBLINK FROM DBA_REPSITES WHERE GNAME = 'TEST_REPG1';的返回结果来查看添加主体站点是否成功
4、根据应用配置冲突解决方案
5、为每个复制对象生成复制支持
BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'test',
oname => 't_object1',
type => 'TABLE',
min_communication => TRUE);
END;
/
通过sql语句SELECT COUNT(*) FROM DBA_REPCATLOG WHERE GNAME = 'TEST_REPG1';来查询复制支持的生成,当返回0时,进行下一步
6.启动复制
BEGIN
DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
gname => 'test_repg1');
END;
/

备注:删除复制组(在主体定义站点执行)
1、挂起复制
BEGIN
DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
gname => 'test_repg1');
END;
2、删除复制组
begin
DBMS_REPCAT.DROP_MASTER_REPGROUP (
gname => 'test_repg1',
drop_contents => true,
all_sites => true);
end;
其中drop_contents为true表明删除复制组的同时将复制组里面包含的对象一同删除,false时只删除复制组,对象仍然存在于方案中;all_sites为true表明把所有相关主体站点上的复制组均删除。

阅读(1224) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~