马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
级别: 中级 白玉 媛 (baiyy@cn.ibm.com), 软件工程师,IBM 中国软件开发中心,IBM 肖 振春 (xiaozc@cn.ibm.com), 软件工程师, IBM 中国软件开发中心
2006 年 12 月 21 日 本文介绍了基于 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复制的结构
动机 商业上用复制出于很多原因,可以归纳为: - 分散,把数据分散到各个地方
- 整合,把其他地方的数据联合起来
- 交换,与其他地方进行双向的数据交换
- 灵活应用,对上面提到的进行一些改变或者结合
在企业的生产环境中,常常会遇到把分公司的数据汇总到总公司的情况。这些数据可能分别建立在不同的数据库系统之中,也可能只使用 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) |
---|
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. 查看节点
这样就把远程的数据库映射到了本地数据库中。见图 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 之间的远程复制怎么实现。针对读者的需求,写出本文,供广大读者参考。
参考资料 学习
获得产品和技术
- 从 developerWorks 下载 IBM 试用软件,构建您的下一个开发项目。
作者简介 | | | 白玉媛,IBM中国软件开发中心软件工程师,来自 DB2 WebSphere Information Integrator 项目组。从事 DB2 UDB for Linux、UNIX 和 Windows 软件测试和技术支持。目前着重于 DB2 Federation System 和 DB2 Replication。Mail:baiyy@cn.ibm.com。 |
| | | 肖振春,IBM中国软件开发中心软件工程师,DB2 Information Integrator(现改名为Websphere Information Integrator)项目组。从事DB2 UDB for Linux、UNIX和Windows软件开发和技术支持。目前着重于DB2 Federation System和DB2 Replication,主要关注SQL、DB2应用程序开发及客户技术支持。 |
|