DB2 与DB2 之间的远程SQL 复制白玉媛 (baiyy@), 软件工程师,IBM 中国软件开发中心,IBM肖振春 (xiaozc@), 软件工程师, IBM 中国软件开发中心简介:本文介绍了基于SQL 的DB2 与DB2 之间的远程复制,力求为初学者掌握DB2 复制提供一个参考步骤。
标记本文!发布日期: 2006 年12 月21 日级别:中级访问情况 2363 次浏览建议: 0 (添加评论)平均分(共3 个评分)本文介绍了基于“SQL复制”的DB2 与DB2 之间的远程复制。
很多读者反映,对于初学者,由于对DB2 的复制概念不是很清楚,在实践中或多或少遇到了入手难的问题。
本文通过对远程DB2 之间的复制的介绍,力求为初学者对DB2 的掌握提供一个参考步骤。
背景“SQL”复制又称为“DB2 复制”,是为DB2 开发的两种数据复制类型中的一种,它是通过SQL 进行的复制。
在这里简单提一下,DB2 复制中的另一种”Q 复制”是通过WebSphere MQ 队列进行的。
在进行SQL 复制时,Capture 程序读取DB2 恢复日志以获取对指定源表的更改。
该程序将更改保存到分级表中,Apply 程序并行读取更改并应用于目标事务。
见图1。
图 1. SQL复制的结构动机商业上用复制出于很多原因,可以归纳为:∙分散,把数据分散到各个地方∙整合,把其他地方的数据联合起来∙交换,与其他地方进行双向的数据交换∙灵活应用,对上面提到的进行一些改变或者结合在企业的生产环境中,常常会遇到把分公司的数据汇总到总公司的情况。
这些数据可能分别建立在不同的数据库系统之中,也可能只使用DB2 数据库。
无论哪种情况,都可以通过IBM 的DB2 ESE 和Webshpere II 产品进行操作。
如果产品只是DB2 之间的SQL 复制,那么生产环境中只需安装DB2 ESE 即可。
假设用户有两台服务器都在使用DB2 V8。
用户想把其中一台DB2 V8 中的数据复制到另外一台的DB2 系统中。
这种情况下,可以选定任意一台服务器中的DB2 作为控制平台,为了方便,本例中直接使用了所要复制到的目标所在的DB2 V8 为控制平台。
如图二所示:图 2. 数据复制目标图回页首实现的步骤首先需要确定本地计算机安装了:DB2 ESE(DB2 Enterprise Server Edition)。
本文把复制的过程分为五步介绍,分别为:∙DB2 数据库环境及配置∙编目(Catalog)DB2 数据库∙密码配置∙建立DB2 与DB2 之间的复制过程及错误分析DB2 数据库环境及配置在本例中采用了Windows 2000 运行环境,具体配置见表1:表 1. 操作系统环境与DB2 版本描述Server A Server B主机名WSII155 db2repl主机IP 9.181.139.155 9.181.138.233操作系统Windows 2000 Server SP4 (Eng) Windows 2000 Server SP4 (Eng)图 3. 查看节点这样就把远程的数据库映射到了本地数据库中。
见图4,参考图3。
图 4. 远程数据编目到本地3. 通过在服务器 A 上执行命令db2 list database directory。
可以检查数据库ISOURCE 是不是成功的编目了。
见图4:图 5. 测试从节点West 到节点East 的连接情况4. 测试从节点West 到节点East 的连接情况:列表 2. 测试节点连接情况db2 connect to ISOURCE user administrator using ***db2 terminate图 6. 检查两个系统的连接状况配置密码和连接在进行capture/apply 服务器的配置之前,首先需要配置密码和连接。
如果不配置密码连接,会影响复制。
1. 配置系统密码本文中需要配置IP 地址为9.181.139.155 的系统WSII155(WEST)和IP 地址为9.181.138.233 的系统db2Repl(EAST)。
需要注意的是,复制控制中心建立在WSII155 系统中,在配置系统密码和参数的时,属于远程服务器的db2repl 系统需要用其IP 地址进行配置,如果用机器名db2repl 可能会出现配置不成功的状况。
打开复制中心:点击复制中心> 管理密码和连接,见图7。
图7. 打开密码和连接管理如果要测试两个机器的连接情况,则可以选中所需要测试的服务器,这时对话框右边的Test 按钮会变化到可点击状态,点击Test 按钮,则会显示当前的连接状态,见图8。
图8. 系统密码配置测试的结果见图9。
图9. 测试服务器的连接情况2. 配置数据库的密码与上面的步骤类似,点击“添加”按钮可以增加一个用作capture/apply 服务器的数据库。
可以通过测试按钮进行数据库之间的连接测试。
见图10,图11。
图10. 数据库的密码配置图11. 数据库连接测试成功3. 密码文件的配置创建密码文件的步骤为:∙把目录转换到所要创建密码文件的文件夹中,例如:C:\>cd sqlrep∙敲入asnpwd,按回车键可查询与密码文件相关的命令∙敲入asnpwd INIT ENCRYPT PASSWORD,按回车可创建密码文件∙依次键入自己需要访问的数据库到密码文件中,例如:asnpwd ADD ALIAS SAMPLE ID db2admin PASSWORD admindb2∙想查看密码文件内容,可用命令:asnpwd LIST见图12。
图12. 创建密码文件过程4. SQL 复制的配置过程首先介绍SQL复制的实现过程。
a. 建立SQL capture server (ISOURCE) 和SQL apply server (TARGET)。
图13. 建立capture 和apply server我们能查看到ISOURCE capture server 的类型是远程(Remote)。
图14. ISOURCE capture server 的定义相应的TARGET apply server 的类型是本地。
图15. TARGET apply server 的定义b. 注册一个远程服务器中的表QHDSVT.STUDB559 到ISOURCE 中。
图16. 注册表c. 在TAEGET apply server 中建立订阅集。
图17. 建立订阅集d. 在capture server 和apply server 所在的系统上建立password 文件。
具体步骤请参阅“创建密码文件”一节。
这里需要注意的是,如果数据库所在的DB2 是V8,则必须建立password 文件,否则复制不会成功。
若数据库所在的DB2 是V9,则可不必建立password 文件。
在此例中,ISOURCE 所在的DB2 是V8,所以必须建立password 文件。
e. 启动capture server,apply server,检查他们的状态。
图18. 检查capture,apply 服务器的状态f. 启动capture,apply 服务器之后,检查QHDSVT.STUDB559。
看到表已经复制到target 数据库中。
点开目标数据库中的TGSTUDB559,可以查到所有的数据已经复制到了目标表中。
图19. 检查capture,apply 服务器的状态至此,数据复制成功,整个复制过程结束。
图20. 数据复制成功5. 错误分析在编目远程数据库的过程中,读者可能会碰到如下的错误信息:SQL30081N 检测到通信错误。
正在使用的通信协议:"TCP/IP"。
正在使用的通信API:"SOCKETS"。
检测到错误的位置:"9.181.139.155"。
检测到错误的通信函数:"connect"。
协议特定的错误代码:"10060"、"*"、"*"。
SQLSTATE=08001原因解析:碰到这种错误可能是由于网络连接的不稳定造成的。
解决方案:检查并保证EAST和WEST两个服务器之间的网络连接是可用的,并且服务器的路径设置正确。
此问题也可能由于防火墙的存在而引起。
如果服务器有病毒,也可能早晨服务器的网络不能正常工作,因此读者需根据自己的实际情况寻找原因。
读者也可能会碰到如下的错误信息:SQL0332N 没有从源代码页"1252" 至目标代码页"1386" 的转换。
原因码为"1"。
SQLSTATE=57017原因解析:这个问题是由于本地和远程服务器之间的codepage 不同造成的,本例中由于源表服务器和目标表服务器都是英文操作系统,因此不会遇到这一问题。
但是客户的环境比较复杂,有可能两个操作系统的语言不同,例如,有中文和英文操作系统等。
解决方案:改变codepage。
用下面的语句检查codepage:∙db2 get db cfg for ISOURCE: 检查数据库ISOURCE 所用的codepage∙db2 get db cfg for TARGET: 检查数据库TARGET 所用的codepage∙db2set: 检查当前DB2所在系统的codepage用下面的命令改变DB2 服务器所用的codepage:∙db2set db2codepage=serverdb codepage (e.g. "1252")∙db2 terminate检查是否连接成功:∙db2 connect to ISOURCE user administrator using passw0rd详细细节读者可参阅参考资料中的“理解DB2 Universal Database 的字符转换”。
回页首结论随着DB2的推广,国内越来越多的企业选择使用了DB2产品。
但是由于缺乏实践经验,入门往往比较难,本文针对初学DB2的客户:∙深入浅出的介绍了如何进行两个DB2服务器之间的数据复制∙为读者提供了初步认识DB2复制的平台回页首益处随着“DB2 与Oracle 之间的远程复制”一文的发表,很多读者写信询问DB2 与DB2 之间的远程复制怎么实现。
针对读者的需求,写出本文,供广大读者参考。
参考资料学习∙“ DB2 与Oracle 之间的远程复制”(developerWorks, 2006 年3 月)∙“理解DB2 Universal Database 的字符转换”(developerWorks, 2005 年6 月)∙红皮书:A Practical Guide to DB2 UDB Data Replication V8∙在developerWorks 中国网站Information Management 专区可以找到更多DB2 参考资料。