• 3.06 MB
  • 76页

sql复制实施手册(最全顾)

  • 76页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'SQL复制实施手册中国国电集团公司SQL复制实施手册文档编号版本号V1.0分册名称无第1册/共1册总页数74正文70附录无编制审批生效日期国电集团一体化平台项目组2011年6月 SQL复制实施手册修改记录版本号变更控制报告编号更改条款及内容更改人审批人更改日期 SQL复制实施手册目录1引言11.1阅读指南11.2相关术语12DB2软件安装前准备12.1安装环境检查12.2设置环境变量22.3创建组和用户33安装OracleClient43.1【第一步解压安装文件】43.2【第二步开始安装软件】44安装ReplicationServer104.1【第一步解压安装文件】104.2【第二步开始安装软件】104.3【第三步创建实例】254.4【第四步安装Licenses】265安装FederationServer275.1【第一步解压安装文件】275.2【第二步开始安装软件】276配置环境变量356.1【第一步创建实例文件和db2dj.ini文件】356.2【第二步修改实例用户的.profile文件】366.3【第三步配置Oracle相关参数】366.4【第四步设置联邦和监听端口】377创建DB2数据库378注册远程数据库到本地389配置控制中心399.1【第一步创建包装器】399.2【第二步创建服务器定义】40II SQL复制实施手册9.3【第三步创建用户映射】419.4【第四步创建昵称】4210配置复制中心4410.1【第一步创建Capture控制表】4410.2【第二步注册昵称】4610.3【第三步创建Apply控制表】4710.4【第四步创建预定集】5010.5【第五步调整Apply限定符参数】6711启动Apply服务6911.1【第一步创建Apply服务启动脚本】6911.2【第二步创建Apply停止脚本】7011.3【第三步启动Apply服务】7011.4【第四步停止Apply服务】70II SQL复制实施手册1引言1.1阅读指南IBMReplicationServer(以下简称RS)提供了两种复制技术,Q复制和SQL复制。本文档作为国电集团SQL复制实施手册,描述了如何实现远程配置AIX环境下的SQL复制全过程。文档中实现过程是按某一具体案例进行讲解,在不同的实施场景下,需要根据实际的实施环境进行修改和调整。该文档适用于SQL复制初学者、SQL复制开发实施人员、维护与之相关的系统管理人员、RS部署架构设计人员等。1.2相关术语序号术语名称术语描述1InfoSphereReplicationServer简称RS。提供了实现多种数据源之间的数据复制手段。RS提供了Q复制和SQL复制两种实现技术。Q复制是基于日志的实现原理,SQL复制是基于触发器的实现原理。2InfoSphereFederationServer简称FS。它是一种特殊的分布式数据库管理系统。从用户的角度来说,FS能够屏蔽各种异构数据源的差异,将其呈现在统一的数据平台上。3Capture用于获取数据源端数据的变化。并将已提交的事务性数据记录在CD表或CCD表中。4Apply目标端Apply程序通过读取CD表或CCD表中的数据,将变化应用于目标端。2DB2软件安装前准备2.1安装环境检查【第一步】检查操作系统。最低配置应该是:5200-06或5300-03。#oslevel–r72 SQL复制实施手册【第二步】检查字符集。检查是否含有Zh_CN;Zh_CN-GB18030;ZH_CN.UTF-8#locale–a【第三步】检查JDK版本#cd/usr/java5_64/bin/#java–version【第四步】检查DB2数据库是否安装#cd/opt/IBM查看该目录下是否有db2目录存在,如果有,可能已经安装了DB2数据库。【第五步】检查Oracle软件是否安装#su–root#su–oracle查看是否有Oracle用户#sqlplus/nolog查看是否可以进入,如果可以则已经安装了Oracle软件。1.1设置环境变量【第一步】切换到root用户#su–root72 SQL复制实施手册【第二步】设置PATH环境变量#exportPATH=$PATH:/usr/local/bin#echo$PATH/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/dt/bin:/usr/bin/X11:/sbin:/usr/java5/jre/bin:/usr/java5/bin:/usr/local/bin【第三步】设置DISPLAY参数#exportDISPLAY=10.82.1.41:0.0#xclock查看db2调用的oracle客户端的软件的文件在哪cgdc_gddc1_ser_a07@db2inst:/usr/db2inst/sqllib/cfg#catdb2dj.iniORACLE_HOME=/oracle/product/10.2.0/client_1cgdc_gddc1_ser_a07@db2inst:/usr/db2inst/sqllib/cfg#catdb2instORACLE_HOME=/oracle/product/10.2.0/client_11.1创建组和用户在安装ReplicationServer之前需要创建3个组和3个用户。一个用户隶属于一个组。1.1.1创建组1.1.1.1创建DASgroup#mkgroupid=’101’dasgp说明:DAS(DB2AdministratorServer)是DB2管理服务器,允许对DB2实例进行管理。DB2的管理用户就隶属于该组。1.1.1.2创建Instancegroup#mkgroupid=’102’instgp说明:该组是管理实例用户的组。72 SQL复制实施手册1.1.1.1创建Fencedgroup#mkgroupid=’103’fengp说明:受防护的组。因为在server上创建时必须要指定FencedID。而FencedID表示将用来运行受防护用户定义的函数(UDF)和受防护存储过程的用户的名称。如果在客户机上创建实例,那么此标志不是必需的。但是在server上创建时必须要指定这个FencedID的。指定创建的受防护用户的名称。1.1.2创建用户1.1.2.1创建DASuser#mkuserpgrp=dasgpgroups=dasgphome=/usr/dasusr1id="201"dasusr11.1.2.2创建Instanceuser#mkuserpgrp=instgpgroups=instgphome=/usr/db2inst1id="202"1.1.2.3创建Fenceduser#mkuserpgrp=fengpgroups=fengphome=/usr/db2fenc1id="203"db2fenc12安装OracleClient重要说明:如果已经安装了Oracle软件,跳过此章节。进入下一章【4安装ReplicationServer】。2.1【第一步解压安装文件】#gunzip-cfile_name|tar-xvf–72 SQL复制实施手册1.1【第二步开始安装软件】1.1.1运行安装命令解压后有安装目录/client,进入该目录运行runInstaller#./runInstaller1.1.2进入安装界面选择Runtime选择Next72 SQL复制实施手册1.1.1进入语言界面选择English选择Next1.1.2进入路径界面重要说明:这里面的路径要与配置文件中的路径一致。选择Next72 SQL复制实施手册1.1.1进入检查界面选择ignoreall选择Next72 SQL复制实施手册72 SQL复制实施手册1.1.1进入总结界面选择Finish开始安装。1.1.2完成安装选择Finish72 SQL复制实施手册重要说明:安装完成后需要在root用户下运行如下两个脚本文件。#su–root#/oralnventory/orainstRoot.sh#/oracle/product/11.2.0/root.sh1安装ReplicationServer1.1【第一步解压安装文件】#gunzip-cfile_name|tar-xvf–1.2【第二步开始安装软件】1.2.1运行安装命令解压后有安装文件/server,进入该目录运行db2setup#./db2setup72 SQL复制实施手册1.1.1进入欢迎界面72 SQL复制实施手册1.1.1选择InstallNew72 SQL复制实施手册1.1.1进入安装界面选择Next72 SQL复制实施手册1.1.1选择Accept后选择Next72 SQL复制实施手册1.1.1默认选择Next72 SQL复制实施手册1.1.1默认选择Next72 SQL复制实施手册1.1.1选择安装目录72 SQL复制实施手册1.1.1选择DASuser72 SQL复制实施手册1.1.1创建instance72 SQL复制实施手册1.1.1选择instanceuser72 SQL复制实施手册1.1.1选择Fenceduser72 SQL复制实施手册1.1.1默认选择Next72 SQL复制实施手册1.1.1默认选择Next72 SQL复制实施手册1.1.1选择Finish开始安装72 SQL复制实施手册1.1.1完成安装选择Finish1.2【第三步创建实例】说明:安装时实例创建成功跳过此步骤。进入【第五步安装Licenses】72 SQL复制实施手册【第一步】切换到root用户下。#su-root【第二步】进入/opt/IBM/db2/V9.7/instance目录。#cd/opt/IBM/db2/V9.7/instance【第三步】创建实例#db2icrt–udb2inst1db2inst11.1【第四步安装Licenses】【第一步】进入实例用户#su–db2inst1【第二步】进入安装目录/usr/db2inst1/sqllib/adm下#cd/usr/db2inst1/sqllib/adm【第三步】开始安装Licenses#db2licm–adb2ese_o.lic#db2licm–aisrs.lic【第四步】查看安装结果#db2licm–l72 SQL复制实施手册1安装FederationServer1.1【第一步解压安装文件】#gunzip-cfile_name|tar-xvf–1.2【第二步开始安装软件】1.2.1运行安装命令解压后有安装文件/rcon,进入该目录运行db2setup#./db2setup72 SQL复制实施手册1.1.1进入欢迎界面1.1.2选择WorkwithExisting72 SQL复制实施手册1.1.1选择LaunchDB2Setupwizard1.1.2进入安装界面选择Next72 SQL复制实施手册1.1.1选择Accept后选择Next72 SQL复制实施手册1.1.1默认选择Next72 SQL复制实施手册1.1.1选择Selectall后选择Next72 SQL复制实施手册1.1.1选择DonotcreateDB2instance72 SQL复制实施手册1.1.1选择Finish开始安装72 SQL复制实施手册1.1.1完成安装选择Finish2配置环境变量2.1【第一步创建实例文件和db2dj.ini文件】【第一步】切换到实例用户#su–db2inst1【第二步】在/sqllib/cfg目录下创建两个文件。一个文件名为db2dj.ini,另一个文件名与实例名相同。#vidb2dj.ini#vidb2inst1【第三步】在db2dj.ini和db2inst1文件中添加ORACLE_HOME环境变量。(如:exportORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)72 SQL复制实施手册1.1【第二步修改实例用户的.profile文件】【第一步】在实例用户的.profile文件中添加ORACLE_HOME环境变量。(如:exportORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)。【第二步】在PATH环境变量中添加$ORACLE_HOME/bin。(如:exportpath=$path:/u01/app/oracle/product/11.2.0/dbhome_1/bin)。1.2【第三步配置Oracle相关参数】说明:只有配置了Oracle相关参数才能通过实例用户访问Oracle数据库。1.2.1创建数据库连接【第一步】切换到oracle用户#su–oracle【第二步】进入$ORACLE_HOME/network/admin目录#cd$ORACLE_HOME/network/admin【第三步】修改tnsnames文件,添加连接串#vitnsnames.ora如:db_237=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.100.237)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)))【第四步】测试添加是否成功72 SQL复制实施手册#tnspingdb_2371.1.1将实例用户添加到Oracle组中#chuserpgrp=dbadb2inst11.2【第四步设置联邦和监听端口】【第一步】切换到实例用户#su–db2inst1【第二步】设置DB2LIBPATH#db2setDB2LIBPATH=/usr/db2inst1/sqllib/java/jdk64/jre/lib/ppc64(根据具体sqllib安装目录定)【第三步】设置DB2COMM#db2setDB2COMM=tcpip【第四步】设置端口号#db2updatedbmcfgusingSVCENAME70000【第五步】设置FEDERATED参数#db2updatedbmcfgusingFEDERATEDyes【第六步】在root用户下生成libdb2net8F.a#su–root#/usr/db2inst1/sqllib/bin/djxlinkOracle2创建DB2数据库【第一步】切换到实例用户#su–db2inst1【第二步】创建数据库72 SQL复制实施手册为了兼容表大小超过4k(默认是4k)的,所以在建数据库的同时把页大小设置成32K#db2createdbbigtbdbpagesize32K注意:32和K之间有个空格【第三步】测试数据库#db2"connecttosou#db2"select*fromstaffwheredept=20"#db2terminate#db2stop#exit修改数据库的日志大小#db2updatedbcfgfortestdbusingLOGFILSIZ40960#db2stopforce#db2start说明:本案例中还创建了数据库tar。sou为源Oracle数据库注册,tar为目标数据库注册。1注册远程数据库到本地【第一步】在本地Windows计算机上启动db2cmd【第二步】编目节点#db2catalogtcpipnodedb2instremote10.82.1.41server70000其中:node名必须为需要配置的远程数据库实例名。此处为db2inst。【第三步】编目数据库db2catalogdbsouassouatnodedb2inst其中:数据库(db)别名必须与远程实际数据库名称相同。此处为sou。72 SQL复制实施手册说明:本案例中还编码注册了目标数据库tar。Db2terminate刷新一下1配置控制中心1.1【第一步创建包装器】在控制中心,展开数据库,右键选择【联合数据库对象】,选择【创建包装器】。选择数据源为【OracleusingOCI8】,命名包装器名称【ORASOU】。72 SQL复制实施手册1.1【第二步创建服务器定义】右键选择【服务器定义】,选择【创建】。选择【发现】,选择Oracle数据库和版本。72 SQL复制实施手册1.1【第三步创建用户映射】由于在远程的图像界面不能实现用户映射的创建,所以在AIX本地用命令行创建。在实例用户下创建。#su–db2inst1#db2"createusermappingfordb2inst1serverDB_237options(remote_authid"SQL237",remote_password"sql237")"重要说明:db2inst1为远程数据库实例名。DB_237是注册的Oracle的TNSNAME。SQL237注册的Oracle的用户名,sql237为Oracle用户的密码。用户名大写,密码小写!72 SQL复制实施手册完成创建后可以在控制中心图形界面中查看创建结果。1.1【第四步创建昵称】右键选择【昵称】,选择【创建】。72 SQL复制实施手册选择【发现】。选择【远程模式】,注意大小写!输入注册的Oracle数据库用户名。选择【确定】。选择需要创建昵称的表并【确定】。重要说明:如果将源和目标Oracle数据库注册在两个不同的DB2数据库上的,那么需要按照同样的方式配置目标数据库控制中心。本案例中目标数据库为tar。在目标数据库没有创建昵称。在【8配置复制中心】章节的创建预订集时创建的昵称。也可以在此创建昵称,但需要注意在创建预订集时的对应选择。72 SQL复制实施手册1配置复制中心1.1【第一步创建Capture控制表】右键选择【Capture控制服务器】,选择【创建Capture控制表】,选择【定制】。选择控制表服务器,并【确定】72 SQL复制实施手册选择【使用此DB2联合服务器来捕获对非DB2服务器的更改】。【远程模式名】为注册的Oracle数据库用户名。重要:【Capture模式】名为注册的Oracle数据库的SID。72 SQL复制实施手册1.1【第二步注册昵称】说明:只有在控制中心注册了昵称,才能在复制中心注册该昵称,否则在复制中心无法看到。右键选择【注册昵称】,选择【注册昵称】,选择【检索全部】,选择需要注册的昵称并【确定】。72 SQL复制实施手册1.1【第三步创建Apply控制表】右键选择【Apply控制服务器】,选择【创建Apply控制表】,选择【定制】72 SQL复制实施手册选择Apply控制表服务器数据库并【确定】。72 SQL复制实施手册将表空间大小从10M修改为100M。选择缓冲池并【确定】。72 SQL复制实施手册1.1【第四步创建预定集】在刚刚创建的Apply控制服务器上,右键选择【预定集】,选择【创建】。72 SQL复制实施手册72 SQL复制实施手册输入【集合名】,此处为[SQL_SUB],输入【Apply限定符】,此处为[SQL_QUAT]。72 SQL复制实施手册选择【Capture控制服务器别名】,此处为SOU。72 SQL复制实施手册72 SQL复制实施手册选择【目标服务器别名】。72 SQL复制实施手册重要:选中目标服务器,右键选择【检索非DB2服务器】。72 SQL复制实施手册此时会出现在该DB2数据上注册的Oracle数据库。选择并【确定】。72 SQL复制实施手册选择【激活预定集】。72 SQL复制实施手册选择【源到目标映射】72 SQL复制实施手册选择【添加】,选择【检索全部】并【确定】。72 SQL复制实施手册72 SQL复制实施手册修改【目标昵称名】,修改为目标结果所希望的名字。此处默认是TGZS237SQL(即在源Oracle数据库需要复制数据的表ZS237SQL基础上加了前缀TG)。而目标数据库是550,所以次案例中将【目标昵称名】修改为TGZS550SQL。重要:修改【远程目标模式】,必须修改为注册的目标Oracle数据库的用户名。修改【远程目标名】,同理修改【目标昵称名】,此处将默认的TGZS237SQL修改为TGZS550SQL。【远程目标名】既为在目标数据库创建的目标表名称。如果在目标表已经创建好了目标表,并在控制中心已经注册,那么此处的昵称名和目标表名称需要和控制中心的一致才行。选择【更改】选择【目标表索引】。创建一个索引并【确定】。72 SQL复制实施手册72 SQL复制实施手册选择【时间表】。此参数用于服务捕获数据的频率。72 SQL复制实施手册选择【连续】并【确定】选择【确定】完成预定集创建。72 SQL复制实施手册72 SQL复制实施手册1.1【第五步调整Apply限定符参数】添加【Apply_path】参数,用于日志记录。72 SQL复制实施手册修改【ERRWAIT】参数,将300改为30。用于出错时等待时间。72 SQL复制实施手册1启动Apply服务重要说明:由于在复制中心图形界面无法启动远程的Apply服务,所以需要在AIX本地通过命令行来启动。1.1【第一步创建Apply服务启动脚本】【第一步】切换到实例用户#su-db2inst1【第二步】创建启动脚本SQL237START.sh#viSQL237START.sh启动脚本内容如下:asnpwdinit72 SQL复制实施手册asnpwdaddaliasSOUiddb2instpassworddb2inst--源数据库信息,如果有多个源在同一个限定符下,则添加多行源数据库信息db2terminatenohupasnapplyCONTROL_SERVER=TARAPPLY_QUAL=SQL_QUAT&--限定符信息,后台启动服务1.1【第二步创建Apply停止脚本】【第一步】切换到实例用户#su-db2inst1【第二步】创建启动脚本SQL237STOP.sh#viSQL237STOP.sh停止脚本内容如下:asnacmdCONTROL_SERVER=TARAPPLY_QUAL=SQL_QUATSTOP1.2【第三步启动Apply服务】在实例用户下,运行启动脚本SQL237START.sh,启动Apply服务。#shSQL237START.sh启动完成后检查服务启动状态:$ps-ef|grepasn说明:服务已经启动则能查询到如下信息:db2inst1851996610Jun23-3:36asnapplyCONTROL_SERVER=TARAPPLY_QUAL=SQL_QUAT1.3【第四步停止Apply服务】在实例用户下,运行停止脚本SQL237STOP.sh,停止Apply服务。#shSQL237STOP.sh停止完成后检查服务停止状态$ps-ef|grepasn说明:停止后应该查询不到相关信息。72 SQL复制实施手册1一个用户映射其它用户SQL复制注意问题1.1要赋予单独用户以下权限:--5RolesforASNSGRANTCONNECTTOASNSWITHADMINOPTION;GRANTEXECUTE_CATALOG_ROLETOASNS;GRANTRESOURCETOASNSWITHADMINOPTION;GRANTSELECT_CATALOG_ROLETOASNSWITHADMINOPTION;--24SystemPrivilegesforASNSGRANTCREATESESSIONTOASNS;GRANTDROPANYTABLETOASNS;GRANTALTERANYTABLETOASNS;GRANTCREATEANYTABLETOASNS;GRANTDELETEANYTABLETOASNS;GRANTDROPANYTRIGGERTOASNS;GRANTEXECUTEANYTYPETOASNS;GRANTINSERTANYTABLETOASNS;GRANTEXECUTEANYCLASSTOASNS;GRANTCREATEANYTRIGGERTOASNS;GRANTEXECUTEANYLIBRARYTOASNS;GRANTEXECUTEANYPROGRAMTOASNS;GRANTSELECTANYSEQUENCETOASNSWITHADMINOPTION;GRANTEXECUTEANYOPERATORTOASNS;GRANTUNLIMITEDTABLESPACETOASNSWITHADMINOPTION;GRANTEXECUTEANYINDEXTYPETOASNS;GRANTEXECUTEANYPROCEDURETOASNS;GRANTSELECTANYDICTIONARYTOASNSWITHADMINOPTION;GRANTSELECTANYTRANSACTIONTOASNSWITHADMINOPTION;1.2要赋予源表的用户以下权限GRANTSELECTONSGENERATOR001TOSCTJ;GRANTSELECTONSGENERATOR002TOSCTJ;72 SQL复制实施手册1.1其它注意在创建源昵称的时候要用源表所在的用户(可能不是CAPTURE创建的用户)查询如果复制不成功,则是建议创建的主键唯一确定不了一条记录如果在一个预订集里建多个源到目标的映射,在启动脚本的目录下,会创建ASYX.000、ASYX.001……等数量和源到目标数量相同的临时文件如果在一个限定符下建多个预订集,每个预订集下只有一个源到目标的映射,则会在启动脚本的目录下,会创建一个ASYX.000,然后同步一些表,然后删除,然后再建ASYX.000,同步一些表,然后再删除,直到所有表第一次同步完成创建预定集的时候出现如下错误:ASN1505I复制操作"添加预订成员"已启动。预订集信息如下:Apply控制服务器为"ASYX",Apply限定符为"ASYX570",集名为"PLANT_SELL_MONTH",对于远程服务器"DB_570",目标服务器为"ASYX",对于远程服务器"DB_ANSHENG",Capture服务器为"ASYX"Capture模式为"PRD"。ASN1560E复制操作结束时存在错误。遇到了SQL错误。SQL消息:"[IBM][CLIDriver][DB2/AIX64]SQL0423N定位器变量"1"当前不表示任何值。SQLSTATE=0F001"。生成复制脚本时遇到1个错误和0个警告。脚本将仅可用于保存到文件。解决:这个原因比较复杂,要停启数据库,停启RS来反复试验就能解决72'