SharePlex实施文档以及常见故障_第1页
SharePlex实施文档以及常见故障_第2页
SharePlex实施文档以及常见故障_第3页
SharePlex实施文档以及常见故障_第4页
SharePlex实施文档以及常见故障_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.SharePlex安装配置部分 41.1解压安装 41.2ora_setup配置 41.3sp_cop-u2300&启动 41.4sp_ctrl控制台 51.5config配置文件 51.6analyzeconfig<config_name> 52.SharePlex常用操作 62.1copy命令 62.2compare与repair 72.3param设置参数 72.4清除当前复制 82.5SharePlex实用参数命令 82.6忽略大事务的操作 92.7修改SharePlex的数据库用户密码 92.8新增复制表 122.9删除复制表 132.10重命名表 142.11新增LOB列或者重命名列 142.12Altertablemoveanewtablespace 152.13一个软件启动多个SP实例 163.SharePlexAA复制实施 193.1前言 193.2环境准备 193.3数据初始化 193.4reconcile队列数据 203.5开启目标端post 203.6目标端FK,job,trigger处理 214.SharePlex其他复制说明 214.1DDL复制 214.2异构复制mapcolumns 224.3级联复制 234.3.1中间系统为数据库,有post情况下级联复制 234.3.2中间系统为pass-through 244.4SharePlex高可用复制 244.5配置Change-History复制 244.5.1Change-History 244.5.2其他的change-history配置选项 264.6Oracle到Kafka复制 274.6.1概述 274.6.2发送到Kafka说明 274.6.3源端SharePlex配置 284.6.4开启supplementallogging 284.6.5设置SP_OCT_USE_SUPP_KEYS参数 284.6.6配置复制 284.6.7目标端SharePlex配置 294.6.8查看并且修改Kafka设置 294.6.9设置恢复选项 315.日常监控 325.1启动/关闭SharePlex 325.2登录控制台 325.3主要监控项目 325.4查看日志 346.一些性能诊断方案 356.1针对capturetooslow 357.SharePlex一些问题的解决方案 357.1Vieweventsanderror 357.2忽略一些确定的可以忽略的错误 367.3insertnull复制到Kafka不显示 377.3.1问题描述 377.3.2解决方案 38

1.SharePlex安装配置部分端口:2100:SharePlex默认端口。2501:startlauncher需要开启端口,可以使用copy快速复制表。安装前数据库操作打开数据库最小附加日志:首先查看v$transaction视图有没有大事务,尽量避免有大事务的时候执行,如果系统资源非常紧会导致宕机,RAC情况下各个节点都需要执行。alterdatabaseaddsupplementallogdata(primarykey,uniqueindex)columns;查询最小附加日志情况:selectSUPPLEMENTAL_LOG_DATA_MIN,SUPPLEMENTAL_LOG_DATA_PK,SUPPLEMENTAL_LOG_DATA_UI,SUPPLEMENTAL_LOG_DATA_FK,SUPPLEMENTAL_LOG_DATA_ALLfromv$database;源库需要打开归档。1.1解压安装使用oracle用户解压,安装。$./SharePlex-8.6.6-b64-oracle110-rh-40-amd64-m64.tpm1.2ora_setup配置--配置shareplex,配置时如果需要自定义复制的源与目标端的ORACLE_SID,则需要配置tnsnames.ora别名,且/etc/oratab中必须有对应于自定义的tnsnames别名的ORACLE_SID。1.3sp_cop-u2300&启动[splexlocalhost~]exportSP_SYS_HOST_NAME=cluster1vip可以使用该参数指定shareplex启动到指定的IP上,可以使用netstat-an|grep<port_number>--启动-u可以启动shareplex实例到指定端口,可以复制多个库。1.4sp_ctrl控制台SharePlex日常操作都在sp_ctrl控制台中进行,启动命令为:/<prodir>/bin/sp_ctrl,一般启动之后首先进入控制台执行sp_ctrl>stoppost,停止。1.5config配置文件Config配置文件为复制链路需要复制对象以及链路映射文件。sp_ctrl>listconfigsp_ctrl>verifyconfigsp_ctrl>activateconfig<file_name>sp_ctrl>activateconfig<filename>[threads-n][nolock]--加nolock不锁表,如果在一定时间获取锁失败,则继续往下进行activate尽量执行两次,确保成功,可以同时tail-f<event_log>查看执行情况。config配置样例以及配置规则:datasource:o.wahaha#sourcetablestargettablesroutingmap#splex.demo_srcsplex.demo_desttarget_systemo.target_sid--target_sid为目标端的sid或别名。splex.demo_src--源库的用户名.表名,可以使用%通配符,全匹配半匹配等。priv%not(table_name)排除表。splex.demo_dest--目标库的用户名.表名target_systemo.target_sid--目标库的IP或hosts文件中映射名为目标端的sid或别名。hr.testhr.test51:scott_tabo.honor1--IP或主机名后加冒号,可以为该表复制单独起一个队列。mary.cust2!key(c1,c2)mary.cust2prodao.sid--自定义pk1.6analyzeconfig<config_name>--可以分析config,生成报表,分析数据库表操作频繁记录等。2.SharePlex常用操作2.1copy命令命令说明:会将目标先truncate掉,然后再利用expdp加constraint=y参数导出再导入,如果你不想truncate目标端的原有同步数据则你需要使用另一个命令appendcopy命令可实现单表或表分区的同步,不适合大批量表的同步。使用要求:目标端启动launcher:sp_ctrl>startlauncher――默认端口是2501同步的表出现在已激活的配置文件中。目标端的复制表所属用户需先建立,copy可以创建表结构,但要求表空间不变,所以建议先建好表结构再复制。语法如下:sp_ctrl>copyowner.tablename[attarget_host]如果相同的对象复制到不同的主机,需加attarget_host选项,源端和目标端的用户名或者表名不一致的话还需加入目标端的owner.tablename。检查源端的copy状态:sp_ctrl>copystatusallcopystatus<jobid>查看job细节cancel<jobid>可以取消job,一般针对长时间waitfor的job当日志积累多了不方便查看时,可清除日志:源端清除日志:sp_ctrl>clearhistoryall目标端清除:cdvardir/log;rmsync_clt*log2.2compare与repair如果发现或怀疑源端和目标端的表数据不一致,可以通过compare命令查看和修复。但由于compare需要把比较的数据排序,然后逐条比较,大量数据的比较可能会导致资源的过量使用,所以不建议对大量数据的比较。sp_ctrl>comparetableowner.tabletoowner.tabletargettarget_hosto.targetsid[repair]比较表分区:sp_ctrl>comparetableowner.tablep1toowner.tablep1targettarget_hosto.targetsid[repair]直接修复在后面加上repair,不加repair参数则将可用于修复的SQL语句生成在日志文件中。查看比较进度:sp_ctrl>showcompare[detail]取消比较:sp_ctrl>comparecancelid<id>清除比较日志:sp_ctrl>removelogcompareid<id>或者removelogcompareall可以指定compare使用其他端口,不指定则随机选端口:comparetableowner.tablep1toowner.tablep1targettarget_hosto.targetsid[repair]port25002.3param设置参数sp_ctrl>listparamall--列出所有参数。sp_ctrl>setparam--设置参数sp_ctrl>listparammodified--查看被修改的参数shareplex安装目录说明:/bin包含可执行程序的符号连接/.app_modules包含可执行程序/data默认参数文件,包含默认的参数设置/doc空目录/installSharePlex安装、license管理等相关的脚本/libSharePlex应用到的库文件/utilSharePlex工具,SQL脚本,监控脚本等2.4清除当前复制sp_ctrl>shutdown$env|grepSP_SYS_VARDIR--一定要在清除之前确认清理的实例正确。执行下条语句之前一定确认上述参数正确,防止清理掉正在使用的实例。$ora_cleanupsplex/splex2.5SharePlex实用参数命令exportSP_SYS_VARDIR=/splex/vardir--类似ORACLE_SID,指定splex使用指定的队列配置文件等等。exportSP_SYS_HOST_NAME–在启动sp_cop之前设置,指定SharePlex启动在指定的IP上,在RAC安装时需要注意此选项。sp_ctrl>setparamSP_OPO_DISABLE_OBJECT_NUM<源端object_ID>--在目标端设置。抛弃指定表。sp_ctrl>r202--执行上条命令20次,两秒一次。sp_ctrl>helptargetsp_ctrl>targeto.orclsetmetadatatime:sp_time.op:sp_op--可以在目标端增加列,写入时间戳与DML语句行为。sp_ctrl>helptargetsetmetadatatime2.6忽略大事务的操作过大的事务复制可能会遇到问题,所以建议所有大于1000万数据DML操作事务,分成多批次commit,并建议不要对相同表做并行的大事物操作。在有的场景下可能不希望源端的某些修改复制到目标端,比如源端清除历史数据而目标端需要保留等。具体步骤如下:源端,在数据库中以shareplex用户执行util目录下的create_ignore.sql,该脚本创建了SHAREPLEX_IGNORE_TRANSprocedure;只需执行一次。在执行大的事务前先执行这个procedure,即可忽略对该事务(从这个存储过程至下一个commit之间的所有DML操作)的复制,如:SQL>conntest/testSQL>execsplex.shareplex_ignore_trans;SQL>insertintotb1values(100,'aaa');SQL>commit;2.7修改SharePlex的数据库用户密码SharePlex数据库用户的密码还存在于SharePlex参数文件中,不能简单的在数据库中更改,需要执行SharePlex提供的脚本进行,具体步骤如下。对每个环境都单独列出了详细步骤。源端stopcapture进程,观察SharePlex队列中数据都已应用到目标端;shutdown源端和目标端的SharePlex;执行prod/bin目录下的ora_chpwd命令来自动改变存储在数据库中和paramdb文件中的密码。生产环境:dcdb02:/oracle$ora_chpwdThisprogramallowsyoutochangethepasswordoftheSharePlexuseraccountneededtorunOraclereplication.Inresponsetoprompts,acarriagereturnwillchoosethedefaultgiveninbrackets.Ifthereisnodefault,areplymustbeentered.PleaseentertheSIDwhereSharePlexisinstalled[dl2]:emptyresponse--tryagain:splex注意:在此处不要使用本地的实例名,要输入TNS别名,然后回车;InordertochangethepasswordfortheSharePlexuseraccount,wemustconnecttothedatabaseasSYSTEM.EnterpasswordfortheSYSTEMaccount,whichwillnotecho[MANAGER]:emptyresponse--tryagain:注意:此处输入oracle数据库system的口令,但应当在口令的后面加上TNS_ALIAS,然后回车;connecting--Thismaytakeafewseconds.EnterthecurrentusernameforSharePlexuser:emptyresponse--tryagain:splexEnternewpasswordforSharePlexuser:emptyresponse--tryagain:Re-enterpasswordforSharePlexuser:emptyresponse--tryagain:注意:此处输入SharePlex用户的口令,但应当在口令的后面加上TNS_ALIAS,然后回车。ChangingSharePlexparameterdatabase...SharePlexpasswordchangecompletedsuccessfully.管理环境:dcadm:/oracle$ora_chpwdThisprogramallowsyoutochangethepasswordoftheSharePlexuseraccountneededtorunOraclereplication.Inresponsetoprompts,acarriagereturnwillchoosethedefaultgiveninbrackets.Ifthereisnodefault,areplymustbeentered.PleaseentertheSIDwhereSharePlexisinstalled[adm]:admemptyresponse--tryagain:InordertochangethepasswordfortheSharePlexuseraccount,wemustconnecttothedatabaseasSYSTEM.EnterpasswordfortheSYSTEMaccount,whichwillnotecho[MANAGER]:emptyresponse--tryagain:注意:此处输入oracle数据库system的口令,不需要后面加上TNS_ALIAS,然后回车;connecting--Thismaytakeafewseconds.EnterthecurrentusernameforSharePlexuser:emptyresponse--tryagain:splexEnternewpasswordforSharePlexuser:emptyresponse--tryagain:Re-enterpasswordforSharePlexuser:emptyresponse--tryagain:注意:此处输入SharePlex用户的口令,不需要在口令的后面加上TNS_ALIAS,然后回车。ChangingSharePlexparameterdatabase...SharePlexpasswordchangecompletedsuccessfully.启动源端和目标端的SharePlex;源端startcapture进程,观察SharePlex是否复制正常。2.8新增复制表如果需要对新建的表进行复制,则需要遵循以下步骤:(尽量在业务少的时候进行)(1)在目标系统数据库建立相同的表,然后在源系统的SharePlex控制台sp_ctrl下运行copyconfig命令将当前配置文件复制并生成一个新的配置文件。例如,当前处在激活状态的配置文件名为filename,则建立一个文件名为newname的配置文件;sp_ctrl(sysA)>copyconfigfilenametonewname(2)通过源系统的SharePlex控制台sp_ctrl运行editconfig命令编辑新建的配置文件newnamesp_ctrl(sysA)>editconfignewname(3)在文件里为新建的表增加一行信息,这行信息包括该表在源系统中的表名、该表在目标服务其中的表名和路由信息。例如,在源和目标服务器的APP模式下新建了名为a的表,则应该在文件里增加如下的信息:APP.aAPP.asysBo.TargetSID(4)保存并退出配置文件;(5)停止用户对新建表的任何操作,包括select,update,insert和delete等操作;(6)在源系统的SharePlex控制台sp_ctrl下运行activateconfig命令激活修改后的新的配置文件,在激活的过程中原先处于激活状态的旧的配置文件会自动解除激活状态;sp_ctrl(sysA)>activateconfignewnamelive(7)此时,维护工作完成,用户可以对新建的表进行访问和操作。如果需要对已有数据的表新增到链路中,则需要遵循如下步骤:(1)首先在目标端停止postsp_ctrl(10:2400)>stoppostsp_ctrl(10:2400)>show>>确认post已经停止(2)在源端修改config,新增复制表sp_ctrl(11rac1:2400)>copyconfighr_scotttohr_scott_01>>复制一份正在使用的configsp_ctrl(11rac1:2400)>editconfighr_scott_01>>编辑复制的config,新增复制表datasource:o.source#sourcetablestargettablesrouting10:jobs01o.tarsphr.regionsscott.regions10:regions01o.tarsp>>需要在host之后自定义队列名称sp_ctrl(11rac1:2400)>verifyconfighr_scott_01>>验证configsp_ctrl(11rac1:2400)>activateconfighr_scott_01>>激活config注:在激活配置文件之后,目标端除新增表之外的其他复制队列已经可以激活。(3)查看v$transaction中start_timeSQL>selectstart_timefromv$transaction;查看数据库事务开始时间,确认是否所有事务都在activateconfig时间之后,以保证所有事务都已捕获。(4)expdp导出源端需要新增的表数据[oracle11rac1expdp]$expdpsystem/111111directory=expdpdumpfile=regions.dmptables=hr.regionsflashback_scn=5597451(5)impdp在目标端导入新增的表数据,并禁用表上的约束以及触发器[oracle11rac1expdp]$impdpsystem/111111directory=expdpdumpfile=regions.dmpremap_schema=hr:scott>>如果用户相同,则不需要使用remap_schema参数(6)reconcile队列数据到之前选取的scnsp_ctrl(10:2400)>qstatusQueuesStatisticsfor10Name:regions01(o.source-o.tarsp)(Postqueue)Numberofmessages:9(Age7404min;Size1mb)Backlog(messages):9(Age7404min)Name:jobs01(o.source-o.tarsp)(Postqueue)Numberofmessages:0(Age0min;Size1mb)Backlog(messages):0(Age0min)sp_ctrl(10:2400)>reconcilequeueregions01foro.source-o.tarspscn5597452>>一般expdp导出的需要在reconcile时加1,使用RMAN基于scn恢复的则不需要加1(7)启动新增加的表对应的post队列sp_ctrl(10:2400)>startpostqueueregions01(8)查看数据同步情况以及链路情况。2.9删除复制表如果将要被删除的表在当前处在激活状态的SharePlex配置文件中,则需要遵循以下步骤:(尽量在业务少的时候进行)(1)通过源系统的SharePlex控制台sp_ctrl运行copyconfig命令将当前配置文件复制并生成一个新的配置文件。例如,当前处在激活状态的配置文件名为filename,则建立一个文件名为newname的配置文件;sp_ctrl(sysA)>copyconfigfilenametonewname(2)通过源系统的SharePlex控制台sp_ctrl下运行editconfig命令编辑配置新建的配置文件sp_ctrl(sysA)>editconfignewname(3)在文件中将该含有该表的信息行删除。(4)保存并退出配置文件;(5)通过源系统的SharePlex控制台sp_ctrl运行activateconfig命令激活修改后的新的配置文件,在激活的过程中原先处于激活状态的旧的配置文件会自动解除激活状态;sp_ctrl(sysA)>activateconfignewnamelive(6)维护工作完成。2.10重命名表如果被重命名的表在当前处在激活状态的SharePlex配置文件中,则需要遵循以下步骤:(尽量在业务少的时候进行)(1)停止用户对该表的任何操作,包括select,update,insert和delete等操作;(2)在源系统和目标系统数据库中上重命名该表;(3)通过源系统的SharePlex控制台sp_ctrl运行copyconfig命令将当前配置文件复制并生成一个新的配置文件。例如,当前处在激活状态的配置文件名为filename,则建立一个文件名为newname的配置文件;sp_ctrl(sysA)>copyconfigfilenametonewname(4)通过源系统的SharePlex控制台sp_ctrl运行editconfig命令编辑配置新建的配置文件sp_ctrl(sysA)>editconfignewname(5)在文件里修改被重命名表所在的行信息,将该表在源系统中的表名、该表在目标服务其中的表名该为重命名后的表名。例如,在源和目标服务器的APP模式下的表a被重命名为表b,则该表所在的行信息应该改为:APP.bAPP.bsysBo.TargetSID(6)保存并退出配置文件;(7)通过源系统的SharePlex控制台sp_ctrl运行activateconfig命令激活修改后的新的配置文件newname,在激活的过程中原先处于激活状态的旧的配置文件会自动解除激活状态;sp_ctrl(sysA)>activateconfignewnamelive(8)维护工作完成,用户可以对重命名之后的表进行访问和操作。2.11新增LOB列或者重命名列对于altertableaddaLOBcolumn操作,如果被执行该操作的表在当前处在激活状态的SharePlex配置文件中,则必须遵循以下步骤保证复制环境两套数据库系统的一致性。(尽量在业务少的时候进行)(1)停止用户对该表的任何操作,包括select,update,insert和delete等操作;(2)通过源系统的SharePlex控制台sp_ctrl下运行copyconfig命令将当前配置文件复制并生成一个新的配置文件。例如,当前处在激活状态的配置文件名为filename,则建立一个文件名为newname的配置文件;sp_ctrl(sysA)>copyconfigfilenametonewname(3)通过源系统的SharePlex控制台sp_ctrl下运行editconfig命令编辑配置新建的配置文件;sp_ctrl(sysA)>editconfignewname(4)在文件中将要增加LOB字段(或重命名字段)的表的信息行删除。(5)保存并退出配置文件;(6)通过源系统的SharePlex控制台sp_ctrl运行activateconfig命令激活修改后的新的配置文件,在激活的过程中原先处于激活状态的旧的配置文件会自动解除激活状态;sp_ctrl(sysA)>activateconfignewnamelive(7)在源系统和目标系统数据库中对该表增加LOB字段(或重命名字段);(8)通过源系统的SharePlex控制台sp_ctrl运行activateconfig命令激活原先的配置文件filename,在激活的过程中刚刚处于激活状态的配置文件newname会自动解除激活状态;sp_ctrl(sysA)>activateconfigfilenamelive(9)维护工作完成,用户可以对该表进行访问和操作。2.12Altertablemoveanewtablespace对于altertablemovetablespace操作,如果被执行该操作的表在当前处在激活状态的SharePlex配置文件中,则必须遵循以下步骤保证复制环境两套数据库系统的一致性。(尽量在业务少的时候进行)(1)停止用户对该表的任何操作,包括select,update,insert和delete等操作;(2)通过源系统的SharePlex控制台sp_ctrl下运行copyconfig命令将当前配置文件复制并生成一个新的配置文件。例如,当前处在激活状态的配置文件名为filename,则建立一个文件名为newname的配置文件;sp_ctrl(sysA)>copyconfigfilenametonewname(3)通过源系统的SharePlex控制台sp_ctrl下运行editconfig命令编辑配置新建的配置文件;sp_ctrl(sysA)>editconfignewname(4)在文件中将要转移表空间的表的信息行删除。(5)保存并退出配置文件;(6)通过源系统的SharePlex控制台sp_ctrl运行activateconfig命令激活修改后的新的配置文件,在激活的过程中原先处于激活状态的旧的配置文件会自动解除激活状态;sp_ctrl(sysA)>activateconfignewnamelive(7)在源系统和目标系统数据库中对移动该表到新的表空间;(8)通过源系统的SharePlex控制台sp_ctrl运行activateconfig命令激活原先的配置文件filename,在激活的过程中刚刚处于激活状态的配置文件newname会自动解除激活状态;sp_ctrl(sysA)>activateconfigfilenamelive(9)维护工作完成,用户可以对该表进行访问和操作。2.13一个软件启动多个SP实例(1)分配端口号需要给每一个sp_cop分配一个唯一的端口号(2)创建variable-data目录为每一个sp_cop实例创建一个variable-data目录。按照SharePlexInstanllationGuide安装SharePlex,在安装最后,你需要一个product目录以及一个variable-data目录关联一个端口以及一个数据库账户,这是你的基础实例。关闭正在运行的sp_cop实例。为每一个实例复制一个vardir目录。cp-p-r/splex/vardir/splex2100/splex/vardir/splex2101cp-p-r/splex/vardir/splex2100/splex/vardir/splex2102(3)定义端口号在SharePlex环境中a.定义环境variable-data环境变量kshshell:exportSP_SYS_VARDIR=/full_path_of_variable-data_directorycshshell:setenvSP_SYS_VARDIR/full_path_of_variable-data_directoryb.定义环境变量SP_COP_TPORTandSP_COP_UPORTkshshell:exportSP_COP_TPORT=portexportSP_COP_UPORT=portcshshell:setenvSP_COP_TPORTportsetenvSP_COP_UPORTportc.启动sp_cop实例使用-u选项$/productdir/bin/sp_cop-uport&d.使用如下参数为环境变量中variable-data设置端口sp_ctrl>setparamSP_COP_TPORTportsp_ctrl>setparamSP_COP_UPORTporte.关闭实例Shutdownsp_cop.f.在variable-data目录中的rim子目录中,删除shstinfo.ipc以及shmaddr.loc文件(如果之前安装的SharePlex从未启动过sp_cop这两个文件可能不存在)h.重复上述步骤为每一个实例如果是为同一个数据库启动不同实例,则下面步骤可以省略。(4)如果针对不同数据库,则需要在完成上述步骤之后,为每一个数据库运行ora_setupa.定义环境variable-data环境变量kshshell:exportSP_SYS_VARDIR=/full_path_of_variable-data_directorycshshell:setenvSP_SYS_VARDIR/full_path_of_variable-data_directoryb.定义环境变量SP_COP_TPORTandSP_COP_UPORTkshshell:exportSP_COP_TPORT=portexportSP_COP_UPORT=portcshshell:setenvSP_COP_TPORTportsetenvSP_COP_UPORTportc./ora_setup,根据交互界面提示,为每个sp_cop实例配置不同数据库设置。3.SharePlexAA复制实施3.1前言AA复制即源端为oracle,目标端也为oracle。实施之前一定要备份源库,并保证备份的可用性,并制定完备的回退方案。SharePlex可以用作容灾,报表分离,数据分发,数据迁移。使用SharePlex进行数据迁移一般具有数据量大,源端与目标段为异构平台,停机时间短等特点,迁移完成之后,可以再次配置目标段到源端的复制,防止试运行阶段出现问题以便回切。使用SharePlex进行异构容灾实施步骤大致与异构迁移相同,主要区别在于最后数据迁移完成之后目标段FK,job,trigger的处理。3.2环境准备源库空间准备,中间库准备,目标端相关软件安装,RAC安装时需要安装在共享磁盘上,并且将SharePlex启动在可浮动的一个serviceIP上。在源库与目标库安装同版本的ShanrePlex,可以不同平台,但一定要保证版本一致。在源端编写config文件,并在源端与目标端都停止Post进程,然后verify并analyzeconfig,然后再根据分析结果,修改优化config文件。3.3数据初始化a.有中间库时,可以使用DG搭建与源库同平台的中间库环境,并配置好DG,然后在源端激活上一步配置好的config文件,开始capture捕获,在v$transaction视图中事务开始时间都晚于捕获时间之后,查询selectto_char(current_scn)fromv$database;选取一个SCN,然后在确保SCN之前所有的数据都同步到中间库之后,可以将DG断开。如果是10g之前的版本,如果数据量较大,则可以使用RMAN在中间库不完全恢复到选取的SCN,然后使用exp人为分割大表启动多个exp进程,启用并发加快导出数据速度。10g以后的版本使用expdp配合FLASHBACK_SCN=<SCN_NUMBER>将数据导出。b.没有中间库时,在源端先开启捕获,保证v$transaction视图中所有事务开始时间都在捕获时间之后,然后选取scn,使用exp/expdp进行基于该scn导出,在目标端导入。注:目标数据库FK、job、trigger的处理,正常的job与schedulejob必须都禁用掉,使用如下语句生成批量禁用语句,然后执行。SQL>select'altertable"'||owner||'".'||table_name||'disableconstraint"'||constraint_name||'";'fromdba_constraintswhereconstraint_typein('R')andownerin('HR')orderbystatus,owner;SQL>select'altertrigger"'||owner||'"."'||trigger_name||'"disable;'fromdba_triggerswhereownerin('HR')orderbystatus,owner;禁用目标端job:SQL>altersystemsetjob_processes=0scope=bothsid=’*’;3.4reconcile队列数据在目标端,使用sp_ctrl控制台,reconcile目标端post队列中激活源端config开启capture到选取的SCN之间的数据,以保证开启post之后,SharePlex可以将之后数据对接,保证数据一致性。sp_ctrl(cluster1vip:2100)>qstatussp_ctrl(cluster1vip:2100)>helpreconcilesp_ctrl(cluster1vip:2100)>reconcilequeuedatamoveforo.wahaha-o.honor1scn698767sp_ctrl(cluster1vip:2100)>qstatus注:数据泵导入导出的时候,reconcile时scn一般需要加1,rmanuntilscn方式恢复的不需要加1.3.5开启目标端postsp_ctrl(cluster1vip:2100)>startpostsp_ctrl(cluster1vip:2100)>qstatussp_ctrl(cluster1vip:2100)>showsync使用sqlplus查看数据同步情况,同步完成之后,查看源端与目标端数据是否一致。3.6目标端FK,job,trigger处理如果使用SharePlex做容灾镜像复制,目标端FK,job,trigger则禁止,直到需要切换到灾备库时启用。如果使用SharePlex做数据迁移,则需要在迁移完成之后启用FK,job,trigger。4.SharePlex其他复制说明4.1DDL复制在级联复制中,DDL复制只从源端到中间端,不包含中间段到目标段。默认SharePlex开启TruncateTABLE与ALTERTABLEtoADDCOLUMNSorDROPCOLUMNS的DDL复制。注:默认DDL配置受参数SP_OCT_REPLICATE_DDL参数影响,1为ALTERTABLE,2为TRUNCATETABLE,3为ALTERTABLE与TRUNCATETABLE,默认为3默认SharePlex的AUTO_ADD特性会自动捕获在激活配置文件(前提是新建的对象在配置文件中使用通配符等方式匹配)之后创建的表与索引,并自动复制到目标端,将对象加入复制列表,维护对象以后的DDL与DML。注:默认AUTO_ADD受SP_OCT_AUTOADD_ENABLE参数影响,默认为1,即ENABLE如果需要开启TRIGGER,SYNONYM,GRANT的复制,需要设置以下参数为1DDLcommandSetthisparameterto1CREATE/DROPTRIGGERSP_OCT_REPLICATE_TRIGGERCREATE/DROPSYNONYMSP_OCT_REPLICATE_SYNONYMGRANTSP_OCT_REPLICATE_GRANT如果需要开启SEQUENCE,MATERIALIZEDVIEW复制,需要设置一下参数为1前提:1.保证SP_OCT_AUTOADD_ENABLE参数设置为1.DDLtoauto-addParametertosetto1AdditionalrequirementsCREATE/DROPSEQUENCESP_OCT_AUTOADD_SEQSettheSP_OCT_TARGET_COMPATIBILITYparametertoatleast8.6.3CREATE/DROPMATERIALIZEDVIEW*SP_OCT_AUTOADD_MVSettheSP_OCT_TARGET_COMPATIBILITYparametertoatleast8.6.3SharePlex可以复制不包含在激活的配置文件的对象的DDL,但是不会复制任何数据,因为没有激活的配置文件包含对象。SP_OCT_REPLICATE_ALL_DDL设置为1。4.2异构复制mapcolumns环境:RedHat6OracleSharePlex9.0注意事项:1.源库的所有列必须映射给目标端的列,名称可以不同,目标表的列数量可以多于源库表的列数量。2.在配置了列映射的表中使用ALTERTABLE增加列是不被支持的。样例配置文件:sp_ctrl(11rac1:2300)>viewconfighr_20170708datasource:o.source#sourcetablestargettablesroutingmap#splex.demo_srcsplex.demo_desttarget_systemo.target_sidhr.employeeshr.employees12o.targethr.test(id,name)hr.coltest(nu,last_name)12o.target4.3级联复制级联复制情境1.源库允许有超过1024个复制路由,则可以通过发送到中间系统,通过广播的方式,分发给目标系统。2.源库由于防火墙限制或者其他因素导致无法直接建立与目标端的连接,则可以使用级联复制。注:使用级联复制,即使源库无法连接目标端,源端也要能解析目标端的主机。级联复制要求在所有系统中创建相同SharePlex用户名用户。在目标端禁用影响DML操作的触发器。排除SharePlex用户的DML与DDL复制,配置文件中对象以外的表可以有DML与DDL操作,但不能影响复制队列。如果序列在目标端是不需要的,则不要复制序列,复制序列会造成复制迟缓。因为序列用来在插入操作时产生列的键值,而值会复制到目标端,所以序列可以不复制。4.3.1中间系统为数据库,有post情况下级联复制配置注意事项:在所有系统的数据库中,必须有相同名称的SharePlex的用户。触发器必须在在中间库与目标库中禁用。SharePlex不支持从中间库到目标库的DDL复制,只支持源库到中间库的DDl复制,所以在中间库需要禁用掉SP_OCT_REPLICATE_DDL与SP_OCT_REPLICATE_ALL_DDL两个参数。需要在源库与中间库创建两个配置文件。源库与中间库开启归档,防止在捕获完成之前联机重做日志被清除。配置样例:ExampleonsourcesystemDatasource:o.oraAhr.emphr.emp2hostBo.oraBhr.salhr.sal2hostBo.oraBcust.%cust.%hostBo.oraBExampleonintermediarysystemDatasource:o.oraBhr.emphr.emp2hostCo.oraChr.salhr.sal2hostDo.oraD+hostEr.mssEcust.%cust.%!cust_partitions需要配置参数如果中间库是Oracle,需要设置参数SP_OCT_REPLICATE_POSTER为1,默认为0,参数设置为0时,SharePlex的capture将忽略post进程的活动。4.3.2中间系统为pass-through配置前提Oracle数据库下,创建Oracle实例以及在/etc/oratab或者windows注册表中指定对应ORACLE_SID,数据库可以为空。不支持DDL复制只需要在源端创建一个配置文件即可。4.4SharePlex高可用复制配置双向复制,停止备机端的export进程。4.5配置Change-History复制4.5.1Change-History创建Change-History配置文件确保系统符合SharePlex要求以及已经按照规安装了SharePlex软件。在目标段创建与需要记录改变历史的源端表相同结构及表名的表,省略掉所有列上的所有约束。注:目标记录改变历史表不能有主键约束,外键约束,唯一键,非空,检查约束,也不能在列上定义默认值。因为这个表记录的是改变历史,一行的值有可能有与其他行相同的键值。Post在记录改变历史的目标端不能参照完整性约束。在目标端禁用触发器trigger。在目标表禁止除了SharePlex用户外所有用户的DML与DDL操作。在源端,使用如下语法创建config文件。Datasource:o.SID是源端Oracle实例的ORACLE_SIDSrc_owner.table是一个完整合法的源端对象(owner.object)或者使用通配符指定的对象。!cdc:指定目标端表为change-history表tgt.owner.table是一个在目标段完整合法的change-history表或者使用通配符指定的表。host是指目标系统c.SID指定目标端的Oracle实例(可选步骤)在目标端运行product_dir/util/add_change_tracking_columns.sql脚本,添加默认名称的列定义。Post可以自动填入默认定义的列而不需要任何额外的配置,你也可以自定义脚本去匹配自己的要求。注:上述脚本只添加默认名称的列。如果添加可选择的列或者改变列的名称,使用target命令添加自定义的列名称到Post配置。查看target命令默认以及可选的列定义,可以参考SharePlexReferenceGuide在一个change-history配置中,配置文件中捕捉到的添加新表DDL将自动添加默认change-history列。4.5.2其他的change-history配置选项这部分容描述如何自定义配置SharePlex记录改变历史。a)使用自定义列明记录改变历史在目标端可以使用target命令自定义任何目标定义的列,target详细用法可以参考SharePlexReferenceGuide。b)源端每一行改变都在目标端记录前镜像可以通过在目标端设置SP_OPO_TRACK_PREIMAGE参数为U来在记录改变历史时记录改变的值同时新增一行记录前镜像值。这个参数将会使Post在源端表每行发生改变时在目标端记录改变历史表中插入两行:一行是改变后的镜像另一行为改变前的镜像。前镜像由改变后的值与改变量构成,除非源端启用了SP_OCT_USE_SUPP_KEYS参数。当前镜像值被设置为保留,则默认列名为SHAREPLEX_SOURCE_OPERATION的列值将会有两条记录:1.更新前的值2.更新后的值注:保留前镜像的行不包含任何类型为log的字段,因为redolog不会记录log的前镜像。可以取消设置SP_OPO_TRACK_PREIMAGE参数,然后通过使用target命令setcdcpreimage选项将全局设定改为表级别。c)在记录历史表中包含操作行的所有列值在目标端记录改变历史的表中记录源端修改的行的所有列的值,而不仅仅包含修改的列值,需要进行如下操作:打开源端表基于所有列的最小附加日志。示例语句:ALTERTABLEEMPADDSUPPLEMENTALLOGDATA(ALL)COLUMNS;在源端设置参数SP_OCT_USE_SUPP_KEYS为1.在源端设置参数SP_OCT_INCLUDE_UNCHANGED_COL为1.注:当同时启用SP_OCT_USE_SUPP_KEYS与SP_OPO_TRACK_PREIMAGE参数时,前镜像行将包含改变前行所有列值。d)在记录改变历史的复制中屏蔽掉操作类型在目标端屏蔽掉源端DML操作类型,设置SP_OPO_TRACK_OPERATIONS参数为合适的值,使用斜杠/分开多个值。例如,维护改变历史表只记录insert与update,改变参数值为I/U。默认值为I/U/D,将记录所有的DML操作。e)设置规则与过滤器可以通过使用target命令的setrule选项去设置应用条件控制改变是否应用到目标记录改变历史表中。例如,你可以指定一个加入第一列与第三列改变了,然后应用操作并且丢弃在其他行上的任何改变,可以参考SharePlexReferenceGuide。f)包含提交操作默认的,提交记录不包含在记录改变历史表中。可以通过配置Post去插入每一次提交记录,设置SP_OPO_TRACK_COMMITS参数为1.4.6Oracle到Kafka复制4.6.1概述SharePlex的Post进程可以连接并写入到Kafka的broker中。数据被以XML记录并包含数据定义、操作类型以及被修改的列值写入。数据被以在源端发生的操作的连续系列写入,这些数据可以被以连续的顺序发送到目标数据库或者被外部程序消费。4.6.2发送到Kafka说明SharePlex的Post进程扮演一个Kafkaproducer角色。一个SharePlexPost进程只能写一个broker的默认partition0的单一topic。想支持多个topics或者多个broker,需要使用命名Post队列的方式配置多个SharePlexPost进程。SharePlex的Post进程不会创建topics,必须在Kafka平台创建topic。出于考虑性能的原因,Post在发送到Kafkabroker之前将消息集合到一批。优化参数可用来控制批消息的大小。这可以用来平衡性能与延迟。注:SharePlex到Kafka平台支持的平台,数据类型以及操作类型可以参考SharePlex的ReleaseNotes文档。4.6.3源端SharePlex配置当复制数据到Kafka平台时,使用一下步骤配置源端数据库以及SharePlex。4.6.4开启supplementallogging在源端系统oracle数据库中,启用PK/UK最小附加日志。SharePlex必须有Oracle键信息在目标端创建合适键。SQL>ALTERDATABASEADDSUPPLEMENTALLOGDATA(PRIMARYKEY,UNIQUE)COLUMNS;4.6.5设置SP_OCT_USE_SUPP_KEYS参数在源端系统,设置SP_OCT_USE_SUPP_KEYS参数为1,。这个参数指导SharePlex使用Oracle最小附加日志列作为关键键值列当update或者delete一行数据时。当数据库supplementallogging以及该参数都被设置之后,这保证了SharePlex可以总是构建键以及SharePlex键匹配Oracle的键。注:可以通过查看ReferenceGuide官方文档查看更多关于SP_OCT_USE_SUPP_KEYS参数的信息。4.6.6配置复制在源端,创建SharePlex配置文件指定Capture的路由信息。配置文件的变化,需要根据定制的复制策略,以下显示为路由数据到Kafka的语法要求。说明:SID为源端Oracle数据库ORACLE_SIDSrc_owner.table为源端表的拥有者以及表名:tgt_owner.table为可选项以及指定目标端表的拥有者以及名字。Useifeithercomponentisdifferentfromthatofthesourcetable.允许!kafka与:tgt_owner.table之间没有空格。正确的关键字以及双引号中是大小写敏感,”MySchema”.”MyTable”host是目标系统的名字。4.6.7目标端SharePlex配置以下部分介绍配置SharePlexPost进程连接Kafka,你必须有一个正在运行的Kafkabroker。配置Post到Kafka:1)创建Kafkatopic2)启动sp_cop(不要已经激活源端配置文件)3)运行sp_ctrl4)使用target命令配置posting到Kafkabroker的topic。示例如下:sp_ctrl>targetx.kafkasetkafkabroker=localhost:9092sp_ctrl>targetx.kafkasetkafkatopic=shareplexSeeViewandchangeKafkasettingsforcommandexplanationsandoptions.4.6.8查看并且修改Kafka设置查看当前输出到Kafka的设置,使用如下命令。sp_ctrl>targetx.kafkashow修改设置,使用如下命令。sp_ctrl>targetx.kafka[queuequeuename]setkafkaproperty=value说明:队列queuename为post队列的名字,如果需要多个post进程,使用此选项下表中有属性以及取值4.6.9设置恢复选项如果Kafka进程突然意外中止,或者机器意外中止,行变化有可能会在kafka的topic中写两次。消费者必须通过检测以及丢弃重复来管理这种情况。在一个事务中对每一个行操作的记录都有相同的事务ID并且通常使用sequenceID标记。这个属性在XML输出关键词txn元素下分别使用关键词id与关键词msgldx。事务ID是事务提交时间的SCN,sequenceID是在事务中行变化的index。在重写Kafkatopic的恢复情境中必须保证这两个值相同。如果想要,可以使用target命令配置Post使每一个行改变记录包含附加的metadata信息。targetx.kafka[queuequeuename]setmetadataproperty[,property]Exampletargetx.kafkasetmetadatatime,userid,trans,sizeToresetthemetadatatargetx.kafka[queuequeuename]resetmetadataToviewthemetadatatargetx.kafka[queuequeuename]showmetadata5.日常监控5.1启动/关闭SharePlex启动SharePlex:以oracle用户登录$sp_cop&$ps-ef|grepsp_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论