现在的位置: 首页 > 综合 > 正文

DB2 与 DB2 之间的远程 SQL 复制

2018年04月26日 ⁄ 综合 ⁄ 共 4165字 ⁄ 字号 评论关闭

本文介绍了基于 SQL 的 DB2 与 DB2 之间的远程复制,力求为初学者掌握 DB2 复制提供一个参考步骤。

本文介绍了基于“SQL复制”的 DB2 与 DB2 之间的远程复制。很多读者反映,对于初学者,由于对 DB2 的复制概念不是很清楚,在实践中或多或少遇到了入手难的问题。本文通过对远程 DB2 之间的复制的介绍,力求为初学者对 DB2 的掌握提供一个参考步骤。

背景

“SQL” 复制又称为“DB2 复制”,是为 DB2 开发的两种数据复制类型中的一种,它是通过 SQL 进行的复制。在这里简单提一下,DB2 复制中的另一种”Q 复制”是通过 WebSphere MQ 队列进行的。在进行 SQL 复制时,Capture 程序读取 DB2 恢复日志以获取对指定源表的更改。该程序将更改保存到分级表中,Apply 程序并行读取更改并应用于目标事务。见图 1。

图 1. SQL复制的结构
图 1. SQL复制的结构

动机

商业上用复制出于很多原因,可以归纳为:

  • 分散,把数据分散到各个地方
  • 整合,把其他地方的数据联合起来
  • 交换,与其他地方进行双向的数据交换
  • 灵活应用,对上面提到的进行一些改变或者结合

在 企业的生产环境中,常常会遇到把分公司的数据汇总到总公司的情况。这些数据可能分别建立在不同的数据库系统之中,也可能只使用 DB2 数据库。无论哪种情况,都可以通过 IBM 的 DB2 ESE 和 Webshpere II 产品进行操作。如果产品只是 DB2 之间的 SQL 复制,那么生产环境中只需安装 DB2 ESE 即可。

假设用户有两台服务器都在使用 DB2 V8。用户想把其中一台 DB2 V8 中的数据复制到另外一台的 DB2 系统中。这种情况下,可以选定任意一台服务器中的 DB2 作为控制平台,为了方便,本例中直接使用了所要复制到的目标所在的 DB2 V8 为控制平台。如图二所示:

图 2. 数据复制目标图
图 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)
DB2 版本 V8 V8 fp11
DB2 实例拥有者 DB2 DB2
DB2 TCP 端口 50000 50000
数据库服务器别名 TARGET ISOURCE
远程服务器名称 WEST EAST

SQL 复制的配置信息见表 2:

表 2. SQL 复制配置信息

描述 Server A Server B
SQL Capture Schema ASN ASN
SQL Apply Schema ASN ASN
SQL Capture 路径 C:/sqlrep C:/sqlrep

建立远程连接

1. 在 DB2 CLP 中利用下面的命令把远程服务器编目(catalog)到当前的服务器。

列表 1. 编目(catalog)远程服务器

				
db2 catalog tcpip node EAST remote 9.181.138.233 server 50000
db2 catalog database ISOURCE at node EAST
db2 terminate
			

2. 在服务器 A 上执行命令 db2 list node direcoty可以检查节点 EAST 是不是成功的被编目了。见图 3:

图 3. 查看节点
图 3. 查看节点

这样就把远程的数据库映射到了本地数据库中。见图 4,参考图 3。

图 4. 远程数据编目到本地
图 4. 远程数据编目到本地

3. 通过在服务器 A 上执行命令 db2 list database directory可以检查数据库 ISOURCE 是不是成功的编目了。见图 4:

图 5. 测试从节点 West 到节点 East 的连接情况
图 5. 测试从节点 West 到节点 East 的连接情况

4. 测试从节点 West 到节点 East 的连接情况:

列表 2. 测试节点连接情况

				
db2 connect to ISOURCE user administrator using ***
db2 terminate
			

图 6. 检查两个系统的连接状况
图 6. 检查两个系统的连接状况

配置密码和连接

在进行 capture/apply 服务器的配置之前,首先需要配置密码和连接。如果不配置密码连接,会影响复制。

1. 配置系统密码

本 文中需要配置 IP 地址为 9.181.139.155 的系统 WSII155(WEST)和 IP 地址为 9.181.138.233 的系统 db2Repl(EAST)。需要注意的是,复制控制中心建立在 WSII155 系统中,在配置系统密码和参数的时,属于远程服务器的 db2repl 系统需要用其 IP 地址进行配置,如果用机器名 db2repl 可能会出现配置不成功的状况。

打开复制中心:点击复制中心 > 管理密码和连接,见图 7。

图 7. 打开密码和连接管理
图 7. 打开密码和连接管理

如果要测试两个机器的连接情况,则可以选中所需要测试的服务器,这时对话框右边的 Test 按钮会变化到可点击状态,点击 Test 按钮,则会显示当前的连接状态,见图 8。

图 8. 系统密码配置
图 8. 系统密码配置

测试的结果见图 9。

图 9. 测试服务器的连接情况
图 9. 测试服务器的连接情况

2. 配置数据库的密码

与上面的步骤类似,点击“添加”按钮可以增加一个用作 capture/apply 服务器的数据库。可以通过测试按钮进行数据库之间的连接测试。见图 10,图 11。

图 10. 数据库的密码配置
图 10. 数据库的密码配置图 11. 数据库连接测试成功
图 11. 数据库连接测试成功

3. 密码文件的配置

创建密码文件的步骤为:

  • 把目录转换到所要创建密码文件的文件夹中,例如:C:/>cd sqlrep
  • 敲入 asnpwd,按回车键可查询与密码文件相关的命令
  • 敲入 asnpwd INIT ENCRYPT PASSWORD, 按回车可创建密码文件
  • 依次键入自己需要访问的数据库到密码文件中,例如:asnpwd ADD ALIAS SAMPLE ID db2admin PASSWORD admindb2
  • 想查看密码文件内容,可用命令:asnpwd LIST

见图 12。

图 12. 创建密码文件过程
图 12. 创建密码文件过程

4. SQL 复制的配置过程

首先介绍SQL复制的实现过程。

a. 建立 SQL capture server (ISOURCE) 和 SQL apply server (TARGET)。

图 13. 建立 capture 和 apply server
图 13. 建立 capture 和 apply server

我们能查看到 ISOURCE capture server 的类型是远程(Remote)。

图 14. ISOURCE capture server 的定义
图 14. ISOURCE capture server 的定义

相应的 TARGET apply server 的类型是本地。

图 15. TARGET apply server 的定义
图 15. TARGET apply server 的定义

b. 注册一个远程服务器中的表 QHDSVT.STUDB559 到 ISOURCE 中。

图 16. 注册表
图 16. 注册表

c. 在 TAEGET apply server 中建立订阅集。

图 17. 建立订阅集
图 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 服务器的状态
图 18. 检查 capture,apply 服务器的状态

f. 启动 capture,apply 服务器之后,检查 QHDSVT.STUDB559。看到表已经复制到 target 数据库中。点开目标数据库中的 TGSTUDB559,可以查到所有的数据已经复制到了目标表中。

图 19. 检查 capture,apply 服务器的状态
图 19. 检查 capture,apply 服务器的状态

至此,数据复制成功,整个复制过程结束。

图 20. 数据复制成功
图 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 之间的远程复制怎么实现。针对读者的需求,写出本文,供广大读者参考。

抱歉!评论已关闭.