首页 存档 技术 查看内容

AIX 和 Windows 下 DB2 数据库互导

2018-3-30 13:00 |来自: 互联网 437 0

摘要: 1.目的 1、DB2数据库在小机(如AIX)下进行备份后,无法在WINDOWS下对小机备份进行还原。相反也是如此。 2、而在项目过程中,通常碰到项目现场的DB2是小机环境(如河北、四川),公司模拟环境是WINDOWS,故当需要在 ...

1.目的

1、DB2数据库在小机(如AIX)下进行备份后,无法在WINDOWS下对小机备份进行还原。相反也是如此。

2、而在项目过程中,通常碰到项目现场的DB2是小机环境(如河北、四川),公司模拟环境是WINDOWS,故当需要在公司完全模拟现场数据时就做不到了。

本文目的是通过明确的步骤指导AIX和WINDOWS间DB2数据的互导。

在公司30小机(太差)和PC服务器(130)之间模拟数据,时间在2小时以内(工作流实例表数据在170W)。


2.前提

本次预演把小机下的DB2数据导入WINDOWS下。

1、假设小机下的源数据库名为SCOA,对应的用户名和SCHEMA均为DB2INST1(小机下DB2默认);WINDOWS下的目标数据库为IOA(空库),用户名和SCHEMA均为DB2ADMIN(WINDOWS下数据库默认)。

2、把项目现场AIX下的数据库备份还原到公司小机下(此步骤比较简单,这里就不写了,一个restore命令)。

3、如果公司没有小机DB2环境,则以下3.1和3.2步骤在项目现场做,现场DB2不需停机。


3.步骤


3.1.DB2move抽取源数据

抽取小机下SCOA库中的数据。

1、在DB2cmd下,进入数据存放目录,假如抽取到/home/db2move目录。

命令是:cd /home/db2move

2、执行DB2move进行数据抽取。

命令是:DB2move scoa export -sn db2inst1 -u db2inst1 -p db2inst1

解释:scoa为源数据库名,-sn为要到处的schema名,-u为DBA权限的用户名,-p为对应密码。

3、根据源数据库所在机器的IO性能,等待若干时间不等。如源数据库机器性能不佳,可以选取性能较好的机器作为客户端连到源数据库进行抽取,以分担IO写的性能。


3.2.DB2look创建DDL

如已经有和源数据库表结构一模一样的DDL脚本,本步骤可以跳过。如不能保证表结构一样,则需执行本步骤生成DDL,否则后续导入会失败。

1、在DB2cmd下,连接到源数据库scoa。

命令是:db2 connect to scoa user db2inst1 using db2inst1

2、创建DDL脚本。

命令是:db2look -d scoa -e -a -o db2look_scoa_ddl.sql

解释:-d:数据库名:这必须指定;-e:抽取数据库对象的DDL,这个参数是必须的;-a: 为所有创建程序生成统计信息;-o:将输出重定向到给定的文件名, 若未指定-o选项,则输出将转到 stdout。

3、手工分离DDL中的建外键、索引语句到另外一个文件,通常在脚本的最下方(可搜FOREIGN KEY 和 CREATE INDEX)。如分离后的脚本为2个:一个是db2look_scoa_ddl.sql,另外一个是db2look_scoa_ddl_fk_idx.sql


3.3.目标库建表

用3.2生成的DDL建表

1、在DB2cmd下,连上目标数据库(空库)

命令是:db2 connect to ioa user db2admin using db2admin

2、指定页编码。

命令:先执行db2set db2codepage=819


再执行db2 terminate

再执行 db2stop force

最后执行db2start

3、在db2cmd下重新连上ioa

命令是:db2 connect to ioa user db2admin using db2admin

4、执行db2look_scoa_ddl.sql脚本。

命令是:db2 -tf db2look_scoa_ddl.sql


3.4.Load数据到目标库

1、复制3.1章节中抽取的数据到目标数据库所在的机器,假如是D:\db2move目录

2、在db2cmd下进入D:\db2move目录

3、在db2cmd下装载抽取的数据

命令:db2move PORTALZY load -u db2admin -p db2admin

4、根据目标数据库服务器性能等待时间不等。


3.5.目标库建外键和索引

3.4步成功后,创建目标数据库的索引和外键。

1、在DB2cmd下执行db2look_scoa_ddl_fk_idx.sql脚本。

命令:db2 -tf db2look_scoa_ddl_fk_idx.sql

2、完成。


3.6.其他操作

到3.5步骤后,数据迁移已经完成。但通常会遇到以下两个问题:

1、乱码

在演示过程中碰到倒过来的数据变成乱码,但建库时,小机和WINDOWS的数据库都同样是utf-8编码的。这时除了数据库编码外,还需要设定页编码,即上文中3.3的第2步。

2、数据库表暂挂

有些表在访问的时候会变得不可用,提示表被挂起,此时需要执行以下脚本,假设提示UUM_R_ROLE_RIGHT表被挂起。

命令是:db2 set integrity for DB2INST1. NP_DOCFILE immediate checked

3、关于SCHEMA

按照以上步骤执行后,最终在目标库(WINDOWS下)里所有的对象均以DB2INST1为SCHEMA,即保持和小机下相同。此时应用程序对接到目标库后会提示找不到表,因为DB2ADMIN用户默认的SCHEMA为DB2ADMIN,有两种方法可以解决这个问题,即:

i. 在应用程序服务器配置中指定SCHEMA

TOMCAT:连接配置参数URL改成url="jdbc:db2://192.168.0.130:50000/ioa:currentSchema=DB2INST1;"即可

WEBSPHERE:在连接池属性中,有CURRENT_SCHEMA属性,填上DB2INST1值即可。

ii. 倒数据时直接导到DB2ADMIN SCHEMA下,此时需要做以下修改。

在3.1步骤后,替换/home/db2move/db2move.lst文件中的DB2INST1为DB2ADMIN。

在3.2步骤后,替换db2look_scoa_ddl.sql和db2look_scoa_ddl_fk_idx.sql中的DB2INST1为DB2ADMIN。

继续按步骤执行即可。


长按下图二维码关注“AIX专家俱乐部”公众号

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部