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专家俱乐部”公众号 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|