ALLSTARS_ORACLE 发表于 2014-1-31 16:42:29

Quest SharePlex for Oracle介绍

Quest SharePlex for Oracle介绍
议题

SharePlex安装配置
Shareplex复制链路配置
Shareplex相关进程运行原理
Shareplex优势和劣势
Shareplex竞争对比



SharePlex安装配置

安装主要步骤概述
安装之前的要求
安装第一步
安装第二步
Shareplex内部表
vardir目录


安装主要步骤概述

安装软件
执行数据库配置
    -配置复制相关的Oracle实例


安装必须条件


正确的版本
目前最新是7.6版,POC和正式实施均使用7.0/7.5
7.5最主要增加了AUTOADD功能
7.6变成64位软件版本
打开数据库PK/UI级附加日志,9i RAC每个节点均打开(不需要打开表级附加日志);打开归档模式; RAC的每个节点可以访问到其他节点的归档文件
只安装在RAC的一个节点,需要配置浮动IP和安装在存储卷上,且配置成资源组可切换
RAC环境下,增加tnsnames alia, 且该条Load Balance必须为OFF,同时配置到oratab文件
Hosts文件中加入所有复制主机的解析;如果是RAC,需要设置SP_SYS_HOST_NAME环境变量,对应虚拟主机名,安装之前export该环境变量
源和目标都需要一个表空间给shareplex用户,512MB


第一步(软件安装及生成第一条复制链路目录)

生成prodir目录和vardir目录
Prodir目录是指软件产品目录
Vardir目录复制链路相关目录(产生了第一条复制链路目录,即一个shareplex实例目录)多个SharePlex实例可以共用相同的prod 目录
Shareplex一条复制链路的源端和目标端使用端口必须保持一致
输入license(shareplex最新策略已经不捆绑CPU和主机)


第二步(数据库配置)

ora_setup 是prod/bin 目录下的可执行文件,每次配置是针对一条复制链路,可以在线配置
它创建了一个数据库用户包括内部的对象以及需要的表和视图
以SharePlex 管理用户执行
如有多个SharePlex实例则要求设置环境变量 SP_SYS_VARDIR = <your vardir>
在所有复制相关的数据库上都需要执行


SharePlex 内部表

SHAREPLEX_ACTID Each row in this table corresponds to a configuration activation. It also contains the last checkpoint from the redo log.
SHAREPLEX_ACT_MARKER is used to communicate between threads in a multi-threaded activation process.
SHAREPLEX_COMMAND controls the flush, purge config, and abort config commands.
SHAREPLEX_CONFIG A new row is inserted into this table whenever a new configuration is activated.
SHAREPLEX_DATAEQUATOR maintains information when the compare command has been issued.
SHAREPLEX_DATAEQUATOR_RESULTS maintains information when the compare command has been issued
SHAREPLEX_LOBMAP  records information about LOBs when they are being replicated.
SHAREPLEX_LOGLIST tracks the movement of SharePlex through the redo logs


SHAREPLEX_MARKER is updated whenever SharePlex generates a read-consistency marker, which is used for key caching.
SHAREPLEX_OBJMAP contains the object ID records for each configuration activation.
SHAREPLEX_OOS_KEYS
SHAREPLEX_OOS_MASTER
SHAREPLEX_PARTITION contains the partition schemes for horizontally partitioned replication.
SHAREPLEX_ROWIDMAP maintains chained-row information.
SHAREPLEX_ROWIDMAP_VIEW of chained row details.
SHAREPLEX_TRANS is used by the Post process to keep track of the state of the transactions it is processing.
SHAREPLEX_WILDCARD table


ALLSTARS_ORACLE 发表于 2014-1-31 16:43:21

Vardir 目录

SharePlex variable-data 目录 (vardir):   
SP_SYS_VARDIR

/config 存放配置文件
/data 包含状态数据库,激活信息,用户定义的参数设置
/db 包含每个activation的配置数据库
/dump 包含core dump文件
/log 包含日志文件
/rim 包含队列文件
/save 包含active 和 inactive 配置文件的相关信息
/state 包含SharePlex状态相关信息,如对象和序列cache等


Shareplex复制链路配置

  config文件
  激活config文件
  数据初始化


Config文件


配置文件是一个文本文件,只需在源端进行配置,激活配置文件成功后,即完成复制链路的搭建,无需单独配置每个进程
定义:
源数据库名
每个表或序列要复制到哪个主机的哪个数据库
要复制的表和序列
对应的目标对象名
通配符定义方式
7.5开始支持autoadd table功能,但必须是已经在复制链路的schema下的table的autoadd
可以支持named queue(即多进程方式)方式,提高性能


配置文件可以被active 或 deactive
一个激活的配置文件指定一个数据源
每个SharePlex实例只能有一个激活的配置文件
每个激活的配置文件可以有多个目标主机和数据库
每个export queue最多可对应20个目标主机



Config文件样例


Template:

Datasource: o.sourceSID
#Source Object            Target Object                 Routing
Src_owner.object        tgt_owner.object           targetsys@o.targSID

Sample Config File:

Datasource: o.class
#Source Object            Target Object              Routing
expand    jim.% not (tmp%,emp)      jim.%             sysA:q1@o.fin
jane.sales        jane.sales        sysA@o.fin1+sysB@o.fin2
mary.seq1          mary.seq1              sysA:q2@o.fin


激活过程中需要锁表,防止长事物未释放,导致数据不一致(加live参数,被动方式,不会影响业务)
7.6可以支持不锁表激活复制链路(如何保证长事物未知?)


分配一个Activation ID
记录在内部表中
Lock 部分或全部表
依赖于激活的方式
创建对象cache
表明和objectid映射关系
列名、列长、列的类型、非空约束、键值
在复制链路中放配置change marker
通知主进程创建新的一套复制进程和队列
Unlock 表


ALLSTARS_ORACLE 发表于 2014-1-31 16:45:53

数据初始化

源和目标启动shareplex主进程
设置相关性能优化参数,确认是否开启DDL复制
准备好源端config文件,校验复制对象是否支持
停止数据追加进程
源端激活(业务空闲时),激活成功后源端和目标端进程会自动启动(已经开始源端的数据捕获)
取源端scn号
源端exp/expdp(使用flashback_scn)或rman(recover until change SCN)
完成目标数据导入后,目标执行reconcile queue <targetqueuename> scn <source scn>,将目标队列无用消息清除
目标disable trigger/外键/job
目标启动post进程,开始增量数据追加



Shareplex进程运行说明


capture进程
read进程
post进程
queue文件
compare和copy
DDL复制的开关



Read进程


个人理解
由2个阶段组成,正常情况下只需pass1阶段(从前面的queue中获取数据,加路由信息,向后续队列发送),无需pass2阶段(回库查询键值,同时pass1 build  key cache).
如果PK值发生变化,需要回库查询,发生pass2
如果有多个唯一索引时,shareplex用的键和oracle写入日志的键值不一样,需要回库查询,发生pass2
无PK或UI时,有时候会有列可能没有写入日志,也要发生pass2
如果capture进程滞后在线日志,可能会发生pass1堵塞,知道读到当前日志,确认是否有键值变化



Post进程



一个事物是在一个sql thread中处理
遇到commit,会自动转成串行,等待commit完成后,main thread才会发送新的消息到sql thread,由syncop counter来控制(收到commit加1,commit完成后-1,归0后发送新消息)
DDL语句需要等现有sql thread中消息处理完成后才能由main thread发送,处理过程同commit;
对于rollback,遇到第一个rollback消息后,对应的sql  thread停止处理消息,等到下一个forward消息或commit收到后,判断需要回滚的消息数,然后直接从队列中删除(可能连续收到多个rollback操作)


Queue队列文件

Queues 中的数据来自共享内存、队列文件和数据库
在进程间握手以确认收到数据,以及执行数据管理
队列中数据只有被下一个进程确认已写入才会被清除
如果在几秒内没有得到接收进程的确认,数据会被写到磁盘
性能:通过内存管道传送比在数据库表中排队更快
容错:在复制链路传输中断时,数据会写到磁盘上

缺点:
无法设置保留一段时间
和IP地址有绑定




Compare在线比较和修复


Shareplex在目标端提交数据时,缺省会去校验字段的前镜像,如果字段值不符合,会自动报出表数据不同步(但是如果表有PK,不是去校验所有字段,无PK/UI会校验所有字段的前镜像)
当发生数据不同步后,可以使用compare指令进行在线的比较和修复,可以做单个分区或范围数据的比较和修复。
Compare能力是有范围的,基本可以做到10GB以下表的全字段比较和修复,大于50GB一般会失败;大表即使成功,时间也会很长。
Compare是进行一致性比较,会进行数据排序后计算每一条记录hash值对比,如果hash不一致,则对比每一个列值,生成目标端的修复sql脚本进行修复
Compare过程中会有几次锁表动作,回滚段(一致性比对)、临时段开销大(需要排序)



Copy命令进行单表数据修复
Compare适用于小表的修复,如果大表不一致,需要使用copy命令
copy指令本质上就是数据的exp/imp
   - 目前只能调用exp/imp,属于效率不高
   - 首先在复制队列中插入一致点,源端处理到该点时,自动停止目标段post进程,然后truncate目标表数据,源端进行该点的一致性导出和导入(通过内存管道传输),完成导入后,自动启动目标post进程,追增量数据

        操作简单,有一定适用范围,如果仍旧失败,则要锁表进行单表初始化



DDL参数控制


SP_OCT_REPLICATE_DDL
        控制目前在复制队列中表是否支持alter和truncate语句的复制
SP_OCT_REPLICATE_ALL_DDL
        打开全库DDL复制


ALLSTARS_ORACLE 发表于 2014-1-31 16:47:50


Shareplex优势

严格的事物一致性保证,不做拆分或合并
  复制过程中自动检验数据不一致问题,在线对比和修复工具,单表同步工具
  DDL复制不依赖于触发器,LOB字段无需回库查询
  事物开始时即复制到目标端,大事务延迟较小
  支持双向复制
  容灾切换简单、快速,增量的反向回切
  运行相对稳定(当然和用户的操作习惯、应用系统有很大关系)
  某些功能配置灵活,如:忽略事物的复制、延迟复制等
  Email、SNMP等方式报警
  图形监控界面


Shareplex劣势


个人理解:
  需要和IP和主机名都有绑定(7.5版本之前,如果需要修改,需要停源端业务)
  DDL配置不灵活,不能做schema、表空间等映射,可配置选项太少
   对于长交易的处理和大事务的回滚的复制稳定性还不够,进程会发生进程coredump
   不能只复制commit事物
   无数据压缩和加密功能
   单表的compare能力太弱,不是有效的单表修复工具
   激活过程和compare过程一定要锁表,如果表多,激活链路时间较长
   如果未捕获的归档日志被删除且无法retore,需要重新初始化
   7.5版本还不稳定,很多数据不一致的情况无法分析
   对trigger复制的支持功能不完善,不能复制create trigger
   配置没有ggs灵活,数据转换非常困难
   一定要部署在生产数据库上;在HP平台上,有时对资源开销很高,越空闲的系统在日志切换频繁时越高
   Shareplex的队列文件是固定二进制格式,无法实现formatascii/formatsql格式,有些客户可能有类似需求
   没有reverse功能,不能恢复误操作,仅能复制源端的flashbackup操作
    其他一些技术细节没有ggs做得好:比如:HANDLETPKUPDATE执行update set PK=PK+1时,目标可以完成复制,shareplex做不到




Shareplex Vs GG

原理上的基本差异
SharePlex在事务开始即开始复制
传送的是 Messages
GoldenGate在事务结束后才开始复制
传送的是 文件


ALLSTARS_ORACLE 发表于 2014-1-31 16:48:16


         
    SharePlex      GoldenGate  
    小事务的复制①      事务在目标端的执行顺序与源端一致      为提高效率会自动把多个小事务合并为1个事务、减少commit  
    大事务的复制②      大事务的复制性能与正常操作复制性能没有明显区别,不会产生较大的数据复制延迟      大事务复制性能差。为提高效率对大表进行划分范围处理,可以采用多个抽取进程并行处理,会拆分事务、增加commit  
    在线初始化同步      可严格保证在线初始化同步的数据一致性      无法保证在线初始化同步的数据一致性(不锁表),会要求停机进行初始化同步  


①②  GoldenGate可以采用单通道的复制方式,这样不会改变事务的一致性。但采用这种方式时的复制性能非常差,所以GoldenGate在实际使用中都不会采用单通道的方式。在浙江移动SharePlex与GoldenGate的对比测试中,压力情况下SharePlex速度为3500笔/秒,而GoldenGate的单通道速度大概是300-400笔/秒。

ALLSTARS_ORACLE 发表于 2014-1-31 16:48:42

数据一致性保障


         
    SharePlex      GoldenGate  
    自动校验      对复制过程中的数据自动进行校验,可提前发现数据不一致隐患      无此功能  
    在线比对      具有在线比对功能,并可对不一致数据进行在线修复,可只比对表分区或部分数据      有比对工具,但无法在线比对。是复制功能外的产品,需单装在另一台机器上,需单独付费  
    在线单表同步      具有在线单表同步功能,通过一个命令即可实现在线的单表同步      需完全按照初始化同步的方式进行单表同步  

ALLSTARS_ORACLE 发表于 2014-1-31 16:48:59

安装、维护


         
    SharePlex      GoldenGate  
    安装配置      操作简单      操作复杂  
    数据库回收站      支持      不支持  
    新增表      可自动添加      操作复杂  
    超过32个字段的无主键表      不需额外处理      9i需要增加配置补充日志组  
    DDL复制      可从redo中获取      需在数据库中创建trigger捕获,增加数据库负担  
    LOB字段和UDT类型数据      可从redo中获取      需在数据库中查询,如果系统繁忙,可能会遇到ora-1555错误而不能继续  
    报警方式      图形监控、SNMP、Email      不支持SNMP、Email方式报警,图形监控需单独付费  
    特殊表名      支持      不支持数字打头或大小写敏感的表名  
    其他功能      按事务忽略复制  按用户忽略复制  延迟复制       


ALLSTARS_ORACLE 发表于 2014-1-31 16:50:07

Shareplex Vs DSG realsync

原理上的基本差异
SharePlex在事务开始即开始复制
传送的是Messages
RealSync在事务结束后才开始复制
传送的是文件
     
RealSync通过rowid map建立数据的对应关系

原理差异导致不同


         
    SharePlex      RealSync  
    大事务的复制      大事务的复制性能与正常操作复制性能没有明显区别,不会产生较大的数据复制延迟      大事务复制性能差。为提高效率会自动拆分事务,在目标端并发提交,增加commit,改变了事务的一致性  
    Rowid改变      Rowid改变不会影响数据不一致      如果源端出现rowid记录不准确或发生变化而没有捕捉到的情况,数据一致性就不能充分保证。  如果目标端有任何造成rowid改变的操作(如整理碎片等)都会造成数据不一致  
    双向复制      完全支持数据的双向复制,在国内外均有运行数年以上的成功案例。      由于产品原理的限制,目标端数据无法进行修改,否则将出现数据不一致错误,由于目标数据必须由RealSync同步过去,因此无法实现数据的双向复制(同一张表)。  



数据一致性保障


         
    SharePlex      RealSync  
    自动校验      对复制过程中的数据自动进行校验,可提前发现数据不一致隐患      无此功能  
    在线比对      具有在线比对功能,并可对不一致数据进行在线修复,可只比对表分区或部分数据      比对发现不一致数据只能重新同步该表,无法只修复不一致的数据  
    容灾切换      支持从容灾数据库到生产数据库的反向复制,可将接管后容灾数据库上的变化复制回生产数据库,操作极其简单,不需要重新初始化同步。      无法提供迅速回切功能,需要把生产系统数据库全部清空,再用容灾数据库进行重新初始化同步;切换回生产后还需要再进行一次初始化同步,才能恢复之前复制状态,切换成本高,风险较大。  (注:目前DSG号称可以实现反向增量复制,为实现这个目的需要维护双向的Rowid  map,这种方法仅出现在测试场景,但在实际生产环境中的成熟性、易用性有待检验)  


安装、维护


         
    SharePlex      RealSync  
    特殊数据类型      支持IOT、XML等      不支持IOT、XML、UDT……  
    报警方式      图形监控、SNMP、Email      不支持SNMP方式报警  
    其他功能      按事务忽略复制  按用户忽略复制  延迟复制       

    服务      技术支持网站:support.quest.com,可查找问题、提交问题、下载软件补丁等。  Quest有专门的Shareplex全球技术支持中心,为全球用户提供7*24的技术支持。在中国国内可通过免费的800电话获取。        提供的24小时支持,仅是一个工程师手机号码,无法提供专业的技术支持。  

页: [1]
查看完整版本: Quest SharePlex for Oracle介绍