oracle三种复制技术.docx

上传人:b****0 文档编号:17954427 上传时间:2023-08-05 格式:DOCX 页数:7 大小:19.79KB
下载 相关 举报
oracle三种复制技术.docx_第1页
第1页 / 共7页
oracle三种复制技术.docx_第2页
第2页 / 共7页
oracle三种复制技术.docx_第3页
第3页 / 共7页
oracle三种复制技术.docx_第4页
第4页 / 共7页
oracle三种复制技术.docx_第5页
第5页 / 共7页
oracle三种复制技术.docx_第6页
第6页 / 共7页
oracle三种复制技术.docx_第7页
第7页 / 共7页
亲,该文档总共7页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

oracle三种复制技术.docx

《oracle三种复制技术.docx》由会员分享,可在线阅读,更多相关《oracle三种复制技术.docx(7页珍藏版)》请在冰点文库上搜索。

oracle三种复制技术.docx

oracle三种复制技术

ORACLE三种复制技术

一dataguard:

dataguard在高可用及容灾方面一般是dba的首选,不管是物理备用库(physicalstandbydatabase)还是逻辑备用库(logicalstandbydatabase),它们都具有一些共同的待征。

配置和管理方面的成本:

dataguard比streamreplication简单方便;

安全与稳定方面的成本:

dataguard比streamreplication稳定可靠。

二流复制:

适用于如下情况:

1、局部复制stream可以只复制某些表或某些模式

2、异构环境充分利用现有的设备与技术

3、远程容灾stream对网络的要求较dataguard低

streamreplication有灵活的复制策略,不仅可以配置只复制某些表,还可以配置仅复制某些表上的ddl或dml,相比dataguard必须整个数据库复制而言,可以节省相当的存储投资。

如果在异构环境,即不同的操作系统,那dataguard将会束手无策,非streamreplication莫属,这样可以充分利用现有的环境,配置高用可方案,在异构环境,streamreplication将会是advancedreplication的强劲对手。

streamreplication传播的是经过logmnr挖掘并包装的逻辑改变记录(LCRs),相比dataguard传送archivedredolog、advancedreplication的mviewlog与mview刷新的方式,streamreplication对网络的需求降低了很多,

三高级复制:

advancedreplication相对于dataguard,缺点是:

配置与管理较复杂、安全与稳定性不够;优点:

局部复制、异构环境等。

advancedreplication是一种相当成熟的技术,在许多关键系统中得到成功的运用,相对于9iR2推出的streamreplication而言,双方适用的环境虽然相当,比如都可以进行局部复制、异构复制、远程容灾等,advancedreplication目前在稳定性与安全性方面更经得起考验。

对比streamreplication与advancedreplication底层的实现技术,streamreplication在实时性、稳定性、高效率、低消耗(较少的cpu/network资源)等方面更有优势,但凡一些新推出的功能,都或多或少存在一些不确定的因素。

在10gR1中,oracle针对目前streamreplication存在的弱点进行了增强,不仅提供了从advancedreplication迁移到streamreplication的脚本,还提供了streamreplication的配置与监控工具,streamreplication在配置与管理方面必将智能化、简单化,担负起与shareplex争夺企业数据复制市场的重任。

四高级复制与流复制区别

高级复制与StreamsReplication的原理是完全不同的,StreamsReplication可以到表,用户,数据库级别,但高级复制似乎只能到表一级。

StreamsReplication不是高级复制的升级版。

异构环境下,oracle的高可用和容灾有高级复制和stream复制两种,两种的异同点如下:

1.高级复制是基于触发器(trigger)原理,而stream是基于日志挖掘原理,因此stream复制对源数据库的性能影响更小,但实时性不如高级复制。

2.高级复制复制的对象是基于数据库目标(object)的,如表、索引和存储过程,而stream复制可以针对表、方案(schema)和整个数据库,因此如果出于容灾整个数据库的考虑,stream复制的配置相对简单。

3.高级复制是一种相当成熟的技术,在许多关键系统中得到成功的运用,相对于9iR2推出的stream复制,高级复制目前在稳定性与安全性方面更经得起考验。

4.从发展的角度看,流的应用会越来越多,从oracle10g,oracle公司提供了从高级复制向流复制移植的工具,可以看出,oracle公司会更偏重于基于流的新技术。

5.由于高级复制是基于触发器的,因此所有的复制对象结构(ddl)的改变,都必须通过oracle提供的复制包来实施,和应用结合的比较紧,更适合于开发者使用,而流复制则更适合dba来实施。

6.流复制支持双向数据复制,而高级复制会有冲突;

7.流复制支持异构数据库复制,而没有资料说明高级复制也有相同功能;

两种实际使用来看,streams复制需要更少的带宽,2m带宽,如果streams复制不行,高级复制大概更没戏,但是用streams最好别网络断线时间过长,不知道是bug还是oracle没考虑这种情况,如果复制停顿一段时间,再恢复正常,大概是队列表中消息太多了,入队出队都很慢,非线性增长啊,这样就需要不短的一段时间来同步数据,高级复制就没这种状况

Oracle流复制基本原理

Oracle流是为提高数据库的高可用性而设计的在Oracle9i及之前的版本这个功能被称为AdvanceReplication。

Oracle流利用高级队列技术通过解析归档日志将归档日志解析成DDL及DML语句从而实现数据库之间的同步。

这种技术可以将整个数据库、数据库中的对象复制到另一数据库中通过使用流的技术对归档日志的挖掘可以在对主系统没有任何压力的情况下实现对数据库对象级甚至整个数据库的同步。

Oracle流对生产库的影响是非常小的从库可以是与主库不同的操作系统平台可以利用Oracle流复制几个从库从库可用于查询、报表、容灾等不同的功能。

Oracle10g与Oracle9i流复制技术比较在Oracle9i中捕获进程只能在本地进行对日志进行挖掘如果RedoLog文件比较大或RedoLog切换较频繁日志挖掘对生产库的资源占用就较多在Oracle10g中捕获进程可以在远程数据库上进行归档日志挖掘归档日志通过日志传送服务传送。

Oracle9i环境下对于小的事务单机环境数据同步性能不错实时性也比较好。

但是对于大事务处理Oracle9iStreams性能较差特别是当大量的LCR溢出到P表的情况下。

在oracle9iRAC环境下Capture进程不能直接从RedoLog中抓取变化必须通过ArchiveLog数据同步存在一定的延迟。

对于Oracle10g由于内存管理等方面有了很大改上性能有所提高大事务的问题也可以解决在Oracle10g环境下Capture进程能直接从RedoLog中抓取变化数据同步的延迟也有所减少。

Oracle9i环境下对于小的事务单机环境Streams各个进程抗疲劳性不错稳定性良好。

但是在oracle9i环境下StreamsCapture进程稳定性差常有错误产生StreamsPropagation进程抗疲劳性非常差.Oracle10g在此问题上有很大改上各个进程的稳定性良好Propagation进程抗疲劳性良好。

流复制的过程流主要由捕获、传输、应用三个主要进程实现数据的复制。

 1.捕获进程

捕捉进程从重做日志中捕获DDL和DML的变化并且把它们封装成逻辑改变记录LCRs。

缺省的捕捉机制可以立即获得用户定义的事件。

捕获进程格式化从redolog中捕获的改变进LCRs。

一条LCR是一个特殊格式的描述数据库改变的消息。

捕获进程捕获两种LCRs:

rowLCRs和DDLLCRs.捕获LCR后捕获进程把包含LCR的消息塞进队列中。

捕获进程基于我们定义的规则捕获或忽略改变。

我们可以把规则放入肯定或否定规则集中。

如果规则位于肯定规则集中捕获进程就会捕获相应改变否则忽略。

我们可以使用DBMS_STREAMS_ADM包或者DBMS_CAPTURE_ADM包创建捕获进程。

使用DBMS_STREAMS_ADM包创建捕获进程比较简单因为它会自动配置很多选项。

当我们使用DBMS_STREAMS_ADM包时规则集会被自动创建规则会自动加入规则集中。

DBMS_CAPTURE_ADM包创建捕获进程使用上更加灵活我么可以给捕获进程配置一个或多个规则集。

我们可以使用DBMS_STREAMS_ADM包或DBMS_RULE_ADM包增加规则到规则集中。

当我们使用DBMS_STREAMS_ADM包的存储过程创建捕获进程时捕获进程捕获的对象会自动实例化。

当我们使用DBMS_CAPTURE_ADM包的CREATE_CAPTURE存储过程创建捕获进程时我们要自己手动实例化捕获进程捕获的数据库对象。

捕获进程需要一个同主数据字典分开来的数据字典。

这个数据字典被称为LogMiner数据字典。

一个源数据库可以有超过一个LogMiner数据字典。

如果一个源数据库有多个捕获进程那么捕获进程之间可以共享LogMiner数据字典也可以每个捕获进程拥有一个它自己的数据字典。

如果LogMiner数据字典不存在那么捕获进程就在进程启动时自己从redolog中取出有用的信息组织起来。

DBMS_CAPTURE_ADM.BUILD存储过程从redolog中抽取数据字典信息。

这个存储过程在捕获进程启动之前必须至少运行一次。

我们可以在redolog中多次执行建立数据字典信息。

运行BUILD存储过程时从redolog抽取多少信息依赖于数据库中有多少数据库对象。

BUILD存储过程会产生大量的redo数据所以我们要减少BUILD的使用次数。

没必要时就不要运行它。

一般情况下我们建立捕获进程时调用的DBMS_STREAMS_ADM或DBMS_CAPTURE_ADM包里的存储过程会帮我们自动建立LogMiner数据字典。

捕获进程之所以需要LogMiner数据字典是因为捕获的改变里面非常可能没有相关的数据对象信息。

而且这些改变可能已经发生了几个小时。

2.传输进程

    传输进程把LCRs存储到SYS.AnyData数据类型的队列中。

LCRs在不同数据库中的源和目的传输区域之间传播。

传播使用工作队列来调度。

流使用队列来分段传播消息。

一种ANYDATA类型的队列可以分段传播所有类型的消息。

同时它被称为ANYDATA队列。

一种type类型的队列可以储存特殊类型的消息。

流客户端总是使用ANYDATA队列。

在流中两种类型的消息可以被封装进ANYDATA对象并且塞进ANYDATA队列中逻辑改变记录LCRS和用户消息。

LCR时包含数据库对象改变信息的对象。

用户消息时被用户程序建立的用户定义的消息。

这两种类型的消息都可以用于信息共享。

在消息环境中ANYDATA队列和TYPED队列都可以用于分段传播特殊类型的消息。

publishing程序可以把消息塞进队列中。

subscribing程序可以把这些消息出队。

分段传递的消息可以被消化或传播。

分段传递的消息可以被应用进程、消息客户端、用户程序消化。

应用进程隐式的出队队列。

但是消息客户端和用户程序时显式地出队队列。

如果你配置了流传播用于传播或发送即使消息被消化了它仍然可以留在队列中。

队列中的消息可以在同一或不同数据库之间传播。

传播出消息来的队列叫源队列接受消息的队列叫目标队列。

在源和目标队列之间可以一对多多对一多对多。

 3.应用进程

    应用进程是专门从指定的队列中出队消息的oracle后台进程。

这些消息可以是逻辑改变记录LCRs或者是用户消息。

一个应用进程既可以直接处理每条消息也可以把它传递给一个应用处理器。

一个应用处理器是用户定义的被应用进程使用的用于定制的消息处理的存储过程。

被应用进程出队的LCRs包括DML和DDL改变的结果集。

应用进程可以把这些LCRs应用于目标数据库的数据库对象。

被应用进程出队的用户塞进队消息是ANYDATA类型而且可以包含任何消息如LCR或用户消息。

应用进程应用基于规则的改变。

每一个规则指定改变的规则评估为真的数据库对象和类型。

我们可以把这些规则放置到肯定或否定规则集中。

如果一个改变的规则评估为真规则在应用进程的肯定规则集中那么应用进程接受这些改变。

如果一个改变的规则评估为真规则在应用进程的否定规则集中那么应用进程抛弃这些改变。

如果应用进程既有否定又有肯定那么否定规则集优先评估。

应用进程是一种灵活的处理队列中的消息的机制。

后续段将讨论应用进程可以应用的消息类型和有哪些方法可以应用它们。

我们可以创建、启动、改变、停止和删除应用进程我们可以定义应用进程规则控制应用进程出队哪些消息。

消息被应用在应用用户的安全域中。

应用用户出队所有满足应用进程规则集的消息。

应用用户可以直接应用消息于数据库对象另外应用用户运行所有的基于规则的转变。

应用用户也可以运行用户定义的应用处理器。

应用用户必须有足够的权限应用改变包括在规则集上的执行权限在定制的基于规则的转变幻术上的执行权限从应用进程队列出队消息的权限。

一个应用进程只可以于一个用户关联一个用户可以于多个进程关联。

 Oracle流复制的配置

 1.流配置前的准备工作

 a.源库与目标库初始化参数的设置。

 b.源库与目标库tnsnames.ora配置。

 c.源库与目标库复制管理员的创建。

 d.源库与目标库创建互连的数据链。

必须确保双方的数据库链是可以连通。

 e.源库与目标库必须处于归档模式

 f.源库与目标库必须创建directory。

在复制表空间时创建directory需要指定该表空间所在的目录。

 g.创建测试用的表空间及用户

2.流的配置过程

 a.创建stream列队。

 b.创建传播进程。

 c.创建捕获进程。

 d.实例化复制数据。

 e.设置测试库上stream的InstantiationSCN。

 f.创建应用进程。

 g.创建启用进程。

 h.创建停止进程。

 

流环境的管理工具

oracle提供了几款工具用于配置、管理、监控流环境。

 1.DBMS_STREAMS_ADM包

    DBMS_STREAMS_ADM包用于增加或删除捕获进程、传播、应用进程的规则。

这个包也用于控制哪些消息被传播哪些消息出队。

这个包包含创建队列和流数据字典的存储过程。

这个包也包含用于配置和维护流复制环境的存储过程。

它提供一种简单的方法创建流环境。

 2.DBMS_CAPTURE_ADM包

    DBMS_CAPTURE_ADM用于启动、停止和配置捕获进程。

3.DBMS_PROPAGATION_ADM包

    DBMS_PROPAGATION_ADM包用于配置从源队列到目标队列的传播。

 4.DBMS_APPLY_ADM包

    DBMS_APPLY_ADM包用于启动、停止和配置应用进程。

这个包提供存储过程用于配置应用处理器这个包提供子程序用于配置冲突检测、解决和错误处理。

5.DBMS_RULE_ADM包

DBMS_RULE_ADM包用于创建和管理规则、规则集。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职业技术培训

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2