没有合适的资源?快使用搜索试试~ 我知道了~
首页ORACLE高级复制初级研究
资源详情
资源评论
资源推荐

关于 Advanced Replication 的初步研究
Author:Kamus, yangtingkun, eygle
Mail:kamus@itpub.net
Date:2004 年 3 月
一、
概述
.................................................................................................................1
二、
MR
的概念和构架
..........................................................................................3
三、
冲突解决方案的概念和构架
.........................................................................9
四、
冲突解决机制的研究
...................................................................................10
五、
解决数据冲突-
dbms_rectifier_diff
包
.......................................................18
六、
MVR
的概念和构架
......................................................................................22
附录一。多主体复制站点的配置步骤
.....................................................................34
附录二。物化视图复制站点的配置步骤
.................................................................38
附录三。一些高级复制相关的包使用方法
.............................................................46
附录四。
FAQ..............................................................................................................50
一、 概述
1. Replication 使用分布式数据库技术在多个站点之间共享数据。
2. Replicated Database 和 Distributed Database 并不一样,在分布式数据库系统中数据在
多个站点同时有效,但是一个表只会存在于一个站点中,而对于 Replication 来说相同
的数据将同时存在于多个站点中。
3. 使用 replication 的原因:
1) Availability:也就是提供了优秀的 failover 保护
2) Performance:由于有多个 server,所以可以将用户业务分布在不同的 server 上
3) Disconnected computing:实体化视图允许用户在和 master 断开后使用数据库
的子集,在重新连接上 master 之后再进行两者的同步。
4) Network load reduction:由于有多个 server,所以可以减少 master 的网络请
求
5) Mass deployment:通过变量产生自定义的实体化视图以满足多种需求
4. 在不同的 Oracle 发行版本之间以及不同操作系统的 Oracle 之间都可以使用 Advanced

Replication。
5. Replication 中的几个概念:
1) replication object:复制对象,指需要作复制的对象(object),包括表,索引,
存储过程等等。复制对象的更新遵循事务一致性规则(transactionally consistent
manner)。
2) replication groups:复制组,是复制对象(replication object)的集合称为 group,
oracle以 replication group的形式来管理复制。一个组可以包含多个模式的 object,
一个模式也可以有多个组中的 object,但是每个 replication object 都只能属于一个
replication group。
3) replication sites:复制站点,包含两种类型,主体站点(master sites)和实
体化视图站点(materialized view sites)。一个 site 可以担任一个 replication
group 中的 mater site 同时又担任另外一个 replication group 中的 materialized
view site,注意必须是另外一个组,而不能是同一个 replication group。
4) scheduled links:一个数据库链接(database link),包含一个由用户定义的计划,
来将需要更新的事务推到其它的 master sites,当创建 scheduled link的时候,oracle
将在本地任务队列中创建一个任务。
5) master definition site:主体定义站点,大部分的高级复制配置都需要在一个站
点上作,这个站点就是 maserdef site
。
6. Replication 环境的几种类型
1) Multimaster Replication
2) Materialized View Replication(也可以称为是 Single Master Replication)
3) Multimaster and Materialized View Hybrid Configurations
Multimaster Replication 和 Materialized View Replication 的区别在于:
前者必须是全表复制而后者可以是 master 表的一部分
前者允许在每一个 transaction 之后都进行复制,而后者是属于批处理复制
两者都使用 scheduled links 进行数据同步操作。
Materialized View Replication 中的 materialized view 可能有以下几种类型:
1) Read-Only Materialized Views:只读的实体化视图
2) Updatable Materialized Views:允许更新,同时允许将更新复制到 master site
3) Writeable Materialized Views:允许更新,但是每次 refresh 的时候,更新都会丢
失
7. 介绍 Multimaster Replication 中的复制方式
1) Asynchronous replication
在一个 master 上发生的变化将在推后的时间内更新到其他的 master 上
2) Synchronous replication
在一个 master 上发生的变化将立刻更新到其他的 master 上
3) Procedural replication
必须给每个 site 上的包都生成一个 wrapper,所有的数据变化应该通过包中的存储
过程完成,当某个 master 上的 procedure 被调用,
wapper 将保证其他 site 中的存
储过程也被调用(同步或者不同步)。将大量的数据操作放到一个 procedure 中,
(Error:masterdef site)

然后对于 procedure 的调用将被同步,用处在于在于有大数据量操作的时候可以减
少网络负载。
二、 MR 的概念和构架
MR 是 Master Replication,也就是主体站点复制的概念,是高级复制区别于普通复制的一个
重要的功能。本章节对于 MR 中出现的种种概念作详细解释。
MR 分为 single master 和 multi master 两种。single master 指一个 master site 支持多个
materialized view site,而 multi master 则包含多个 master site。
Multimaster Replication 也被称为 peer-to-peer 或者
n
-way replication,任何一个 master
上发生的变化都将被送到其它的 master 上。
1. 为什么使用 Multimaster Replication。
Failover:当主数据库发生问题的时候,可以通过配置 Oracle Net 来实现 automatic
connect-time failover,需要将客户端的 tnsnames.ora 中的 FAILOVER_MODE 参数设置
为 ON。同时在主数据库正常的时候,其它的 master site 仍然可以作为一个具有完全功
能的数据库来支持其它业务,比如报表等。
Load Balancing::提供读动态平衡以及更本地化的数据存取。
2. 比较 RAC(Oracle Real Application Clusters)和 Advanced Replication
Load Balancing::高级复制提供读动态平衡,而 RAC 则提供读写动态平衡。因为每一
次写操作都会在所有的 replication site 上体现,所以高级复制不能提供写动态平衡。
Survivability::高级复制提供更加强有力的灾难恢复功能,因为高级复制环境中的各
个 site 可以位于物理上的不同地点,而 RAC 因为使用的是磁盘阵列或其他类型的并行系统,
所以通常在同一个物理地点。
Interoperability:高级复制可以在不同平台和操作系统的 Oracle 之间实现,而 RAC
环境则必须运行在相同的平台上。
3. Multimaster Replication Process
Asynchronous Replication:
说明:使用非同步复制能够减少网络资源和硬件资源的消耗,但是不同的 master sites 之间
会有一段时间不同步,并且可能会造成数据冲突。
以下描述非同步复制的过程:
1) 用户执行 DML 操作或者执行 replicated procedure 的 wrapper,当一个 table 被设
定为需要复制,那么对于此表的任何 DML 操作都会被捕获并且复制到其他的
master site。对于每一行被插入,更新或者删除的数据都将由一个内部触发器来创
建一个 deferred remote procedure call (RPC)并且放在 deferred transaction queue
中,如果一个存储过程被设置为需要复制并且它的 wrapper 被执行,则这个
procedure call 被放置在 transaction queue 中。由于内部触发器是由 Oracle 本身
内部维护的,所以可以以最小的系统资源消耗来很快地获取需要复制的对象的变
化。

2) deferred transaction queue 中保存着所有的 deferred RPCs。每个 site 都有一个事
务队列,这个队列可以被多个 replication group 共用。
3) 在指定的间隔之后或者被手工调用,事务将被传递到其他的 site,每 个 site 都可能
有不同的间隔。
4) 事务在这些 site 上被应用,如果出错该事务将被放置到一个错误队列中,以备 DBA
检查处理,如果出现数据冲突,冲突解决方法将被调用,如果冲突无法解决那么将
被记录在错误队列中
5) 当事务在所有的 remote master sites 上被成功执行之后,并不会从源 site 的事务
队列中立刻删除,删除工作将由另外的 purge job 来执行,此 job 的执行间隔可以
由用户来定义。
Synchronous Replication:
说明:同步复制始终在同一个 transaction 中完成,如果整个环境中的任何一个 site 没有成
功执行事务,那么整个 transaction 将被回滚,包括源 site。这就保证了数据一致性。
以下描述同步复制的过程:
1) 用户执行 DML 操作或者执行 replicated procedure 的 wrapper,操作被内部触发器
立刻捕获。
2) 事务被传递到其他 site 并且立刻执行,任何一个 site 出错,就回滚整个事务。
4. 冲突解决方案的概念
冲突的类型:更新冲突,唯一性冲突,删除冲突。
当发生冲突的时候,冲突解决方法将被调用以解决冲突,如果无法解决,则被记录到目
标站点的错误队列中。记录到错误队列中的冲突只能由数据库管理员手动解决。
为了实现冲突解决方案,可能会需要修改表结构,比如如果使用最新时间戳的解决方案,
那么就应该在表中添加一个 timestamp 列。
5. 配置高级复制的工具
1)
图形界面:Oracle Enterprise Manager 提供了一个友好的 GUI 界面用以配置高级复
制。
2) 命令行方式:Oracle 提供了一套 replication management application programming
interface (API)来支持用户编写自定义的脚本用以配置高级复制,这些 API 是一系
列的 PL/SQL packages。实际上 GUI 界面的高级配置工具也是调用这些 API 来完成
配置的。
注意点:
在高级复制环境中的对于需要复制的对象作任何 DDL 操作,都应该使用高级复制配置
工具来作,比如利用 DBMS_REPCAT 包中的相应存储过程。在有些场合下也可以用导出
导入(EXP/IMP)来创建复制对象。在 SQL*PLUS 中直接执行的任何 DDL 操作都不会被
复制到其它的 site 上。
6. 高级复制中的几个角色
Replication Administrator:默认名称是 repadmin,也可以修改。
Propagator:一个高级复制环境中可能有多个 RA 来管理不同的 schema,但是只能有
一个 propagator 将延迟处理事务队列中的事务传递到目标站点。
Receiver:负责接收和处理从 propagator 处传来的延迟处理事务。可以通过

DBMS_REPCAT_ADMIN 包中 REGISTER_USER_REPGROUP 存储过程来注册一个 receiver。
7. Database Links
数据库链接在高级复制环境中提供了数据传送的通道,在一个 MMR 环境中,如果有 N
个 Master Site,就会有 N-1 个数据库链接。在 MVR 环境中,则只需要从实体化视图站
点上到主站点的数据库链接。如果使用设置向导来创建 dblink,则会在 USING 后面使用
连接描述字串,而不是连接服务名,这样在对方数据库发生变化的时候,就必须删除重
建现有的 dblink,所以我们应该手动设定 dnlink,从而在 USING 后面使用连接服务名。
这样即使对方数据库改变,我们也只需要修改 tnsnames.ora 中的配置即可,而不需要
重建 dblink。
8. 可以进行复制的对象
• Tables
当一个对象被复制到目标站点上时,复制支持不会自动生成。利用这个特点可以快速地
发布一个标准的数据库环境到另外的站点上。
• Indexes
作为约束的索引,当表在主站点上被创建的时候,会自动在复制站点上创建,但是对于
提高性能的索引则不会被自动创建而必须手动指定。对于索引被复制到目标站点之后,
等同于本地的索引,不需要再添加复制支持。
• Packages and Package Bodies
存储过程中的所有参数必须是 IN 的,OUT 和 INOUT 不被支持。存储过程和函数也必须
定义在包中,单独的存储过程和函数无法进行复制。
• Procedures and Functions
虽然单独的存储过程和函数无法进行复制,但是仍然可以在高级复制环境中利用复制来
将单独的存储过程和函数发布到远程的站点上,就像在远程站点本地创建的一样。
• User-Defined Types and Type Bodies
所有的用户定义类型在所有的复制站点上都必须存在而且必须完全相同。
• Triggers
一个比较重要的应用就是在 DML 操作的时候在表的 timestmap 列中插入当前的系统时
间。为了防止触发器被重复调用,必须要使用 API 来判断 DML 操作是在本地发起的还
是通过高级复制传递过来的。如下例:
CREATE OR REPLACE TRIGGER hr.insert_time
BEFORE
INSERT OR UPDATE ON hr.employees FOR EACH ROW
BEGIN
IF DBMS_REPUTIL.FROM_REMOTE = FALSE THEN
:NEW.TIMESTAMP := SYSDATE;
END IF;
END;
• Views, Object Views, and Synonyms
只是简单地复制到其它站点,不会产生任何内部触发器或者包来监控这些被复制的对象
的改变。由于是复制对象,所以仍然可以使用高级复制工具或者 API 来进行修改和删除。
• Indextypes
必须手工指定复制。可以用高级复制工具或者 CREATE_MASTER_REPOBJECT存储过程。
剩余60页未读,继续阅读















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0