`
- 浏览:
2229507 次
- 性别:
- 来自:
深圳
-
Oracle 多主(Master Replication)复制配置
一、环境
windows server 2003 sp1;10g 10.1.0.2主体定义站点:SID:db1 IP:10.1.8.201主体站点:SID:db2 IP:10.1.9.49二、配置
1. db1 上的操作
-- 确保下面参数配置
db_domain='mytest.com'
global_names=true
-- tnsnames.ora 配置
DB2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.9.49)(PORT = 1521))
)
(CONNECT_DATA =
(SID = db2)
(GLOBAL_NAME = mytest.com)
(SERVER = DEDICATED)
)
)
DB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.8.201)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = db1.mytest.com)
)
)
conn system
-- 修改 global name
alter database rename global_name to db1.mytest.com;
-- 建立公共 db link
create public database link db2.mytest.com using 'db2';
-- 检查
select * from global_name@db2.mytest.com;
-- 建立复制管理员并授权
create user repadmin identified by repadmin default tablespace users temporary tablespace temp;
execute dbms_defer_sys.register_propagator('repadmin');
grant execute any procedure to repadmin;
execute dbms_repcat_admin.grant_admin_any_repgroup('repadmin');
execute dbms_repcat_admin.grant_admin_any_schema(username => '"REPADMIN"');
grant comment any table to repadmin;
grant lock any table to repadmin;
grant select any dictionary to repadmin;
conn repadmin
-- 建立 db link
create database link db2.mytest.com connect to repadmin identified by repadmin;
-- 检查
select * from global_name@db2.mytest.com;
conn system
-- 建立测试用户并授权
create user testuser identified by testuser default tablespace users temporary tablespace temp;
grant connect, resource to testuser;
conn testuser
-- 建立测试用表
create table dept
(deptno number(2) primary key,
dname varchar2(14),
loc varchar2(13) );
2. 在 db2 上进行与相似的操作
db_domain='mytest.com'
global_names=true
DB1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.9.201)(PORT = 1521))
)
(CONNECT_DATA =
(SID = db1)
(GLOBAL_NAME = mytest.com)
(SERVER = DEDICATED)
)
)
DB2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.9.49)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = db2.mytest.com)
)
)
conn system
alter database rename global_name to db2.mytest.com;
create public database link db1.mytest.com using 'db1';
select * from global_name@db1.mytest.com;
create user repadmin identified by repadmin default tablespace users temporary tablespace temp;
execute dbms_defer_sys.register_propagator('repadmin');
grant execute any procedure to repadmin;
execute dbms_repcat_admin.grant_admin_any_repgroup('repadmin');
execute dbms_repcat_admin.grant_admin_any_schema(username => '"REPADMIN"');
grant comment any table to repadmin;
grant lock any table to repadmin;
grant select any dictionary to repadmin;
conn repadmin
create database link db1.mytest.com connect to repadmin identified by repadmin;
select * from global_name@db1.mytest.com;
conn system
create user testuser identified by testuser default tablespace users temporary tablespace temp;
grant connect, resource to testuser;
conn testuser
create table dept
(deptno number(2) primary key,
dname varchar2(14),
loc varchar2(13) );
3. 在 db1 上配置复制
conn repadmin
-- 创建复制组
execute dbms_repcat.create_master_repgroup('testuser_mg');
-- 检查
select gname,master,status from dba_repgroup where gname='TESTUSER_MG';
-- 在复制组里加入复制对象
execute dbms_repcat.create_master_repobject(sname=>'testuser',oname=>'dept', type=>'table',use_existing_object=>true,gname=>'testuser_mg',copy_rows=>false);
-- 检查
select sname,oname,status,gname from dba_repobject where gname='testuser_mg';
-- 对复制对象产生复制支持
execute dbms_repcat.generate_replication_support('testuser','dept','table');
-- 检查
select gname, master, status from dba_repgroup where gname='TESTUSER_MG';
select sname,oname,status,gname from dba_repobject where gname='TESTUSER_MG';
-- 添加主体复制节点
execute dbms_repcat.add_master_database (gname=>'testuser_mg',master=>'db2.mytest.com',use_existing_objects=>true, copy_rows=>false, propagation_mode => 'synchronous');
-- 检查
column masterdef format a10
column master format a10
column dblink format a25
column gname format a12
select gname, dblink, masterdef MASTERDEF, master MASTER from sys.dba_repsites where gname='TESTUSER_MG';
-- 启动复制
execute dbms_repcat.resume_master_activity('testuser_mg',true);
-- 检查
select gname,master,status from dba_repgroup where gname='TESTUSER_MG';
-- repadmin 用登录主体站点,检查复制对象情况
set linesize 120
select sname,oname,status,gname from dba_repobject where gname='TESTUSER_MG';
4. 测试
-- 在 db1 上增加数据
conn testuser
insert into dept values (1,'accounting','new york');
insert into dept values (2,'research','dallas');
insert into dept values (3,'sales','chicago');
insert into dept values (4,'operations','boston');
commit;
-- 检查 db2 的数据变化
conn testuser
select * from dept;
-- 在 db1 上进行表结构修改(DDL)
EXECUTE DBMS_REPCAT.EXECUTE_DDL(gname => 'testuser_mg',ddl_text => 'truncate table testuser.dept');
EXECUTE DBMS_REPCAT.EXECUTE_DDL(gname => 'testuser_mg',ddl_text => 'ALTER TABLE TESTUSER.DEPT ADD c1 NUMBER');
EXECUTE DBMS_REPCAT.EXECUTE_DDL(gname => 'testuser_mg',ddl_text => 'ALTER TABLE TESTUSER.DEPT DROP (C1)');
-- 检查 db2 的数据变化
conn testuser
desc dept
select * from dept;
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
- **多副本(Multi-Master):** 支持多个主数据库之间的双向复制,适用于分布式系统的高可用性需求。 **2. 复制类型** - **行级复制(Row-Level Replication):** 适用于大多数应用场景,可以精确地跟踪每个记录...
多主复制(Multi-Master Replication)是Oracle高级复制的一种模式,它允许多个站点(或节点)同时作为数据源,各自独立地更新数据,并通过复制机制保持数据的一致性。这种模式适用于分布式系统,如分布式数据库、...
Oracle提供了三种复制技术:**高级复制(Advanced Replication)**、**流复制(Streams Replication)**和**备库(Dataguard)**。备库主要用于灾难恢复,这里不作详细讨论。高级复制基于触发器实现,适合复制单个表...
在Red Hat Enterprise Linux Server 5.3上运行的Oracle Database 10g Enterprise Edition Release 10.2.0.4.0中,高级复制功能(Advanced Replication)提供了多种复制类型,包括多主体复制(MultiMaster ...
Oracle 高级复制 (Advanced Replication) 是一种在多个站点间实现数据共享的技术,主要用于提高数据可用性、性能和减少网络负载等目的。本章节主要介绍了 Advanced Replication 的基本概念、应用场景以及一些关键...
- **多主复制(Multimaster Replication)**是指在多个站点(或数据库)之间实现数据双向同步的复制模式。每个站点既是数据的生产者也是消费者。 - 在多主复制架构中,主要涉及以下几个关键概念: - **复制对象...
本文档将详细介绍如何在 Oracle 8i 环境中实现节点 ASIA (Master Definition Site) 与节点 EUROPE (Master Site) 之间的对称复制,并提供必要的步骤和注意事项。 #### 二、准备工作 为了确保对称复制的成功实施,...
3. 多主体站点复制(Multimaster Replication):所有站点都是主站点,具有相同的管理权限。 4. 实体化视图复制(Materialized View Replication):一个主站点提供源数据,一个实体化视图站点接收和更新数据。 5. ...
-- 创建主复制组rep_singlee CREATE REPLICATION GROUP rep_singlee; ``` 3. **在复制组中加入数据库对象**: - **用repadmin身份登录masterdef数据库**: ```sql -- 将数据库对象加入复制组 ADD OBJECTS ...
3. 多主体站点复制(Multimaster Replication):所有站点都可以作为数据源,具有等效的管理权限。 4. 实体化视图复制(Materialized View Replication):一个主站点提供数据,一个实体化视图站点进行数据拷贝。 5....
【多主体复制】多主体复制(Multi-Master Replication)是一种数据库复制技术,允许网络中的多台数据库服务器互相同步数据。在这种模式下,每个服务器都可以作为数据的源和目标,当任何服务器上的数据发生改变时,...
3. 多主体站点复制(Multimaster Replication):所有站点都是主站点,具有平等的管理权限。 4. 实体化视图复制(Materialized View Replication):一个主站点提供数据,一个实体化视图站点接收并存储数据。 5. ...
3. **多主体站点复制(Multimaster Replication)**:所有站点均为主站点,共享相同的管理权限。 4. **实体化视图复制(Materialized View Replication)**:单一主站点向实体化视图站点推送数据。 5. **实体化视图...
与传统的复制技术相比,Oracle Stream具有较低的资源消耗,能够在几乎不影响主数据库性能的前提下,实现数据的实时同步。 #### 3. 环境准备 ##### 3.1 设定初始化参数 为了启用Oracle Stream,首先需要设置数据库...
4. **多主体复制(Multi-Master Replication)**:在这种模式下,多个主体可以同时更新同一个副本,这在分布式系统中非常有用,因为数据可以在多个位置进行修改,然后同步到其他节点。 5. **混合复制(Hybrid ...
- **多主体复制 (Multimaster Replication)** - 特点:所有站点都是平等的,每个站点的数据变更都能被复制到其他站点。 - 要求:通常是全表复制,且每笔交易后立即进行复制。 - **实体化视图复制 (Materialized ...
- **定义**:在多主复制配置中,所有站点都是平等的,每个站点都可以发起数据更新操作。这意味着数据可以在任何站点上被修改,并通过复制机制同步到其他站点。 - **特点**:必须进行全表复制;允许在每一次事务...
Advanced Replication包含了多主复制(Multimaster Replication)和物化视图复制(Materialized View Replication)。多主复制允许在多个数据库之间进行双向数据同步,内部基于触发器(internal trigger)和高级队列...