步骤三:使用ftp登录并下载。请确保使用二进制模式传输db2move.lst 文件和 db2look.ddl 文件。为了方便起见,下载后我把两个文件里面的DB2INST1的模式都去掉了,方便在Windows平台下进行管理。
步骤四:在Windows上,创建新的JWDB数据库,然后运行 db2look 工具所生成的脚本创建数据库对象,运行 db2move,将数据从 PC/IXF 文件装载到JWDB数据库中的所有用户表中。
db2 -tvf db2look.sql
db2move jwdb load
到此为止,迁移工作基本上算是告一段落了。基本上数据转换完毕,剩下的就是检查和收尾的工作了。
我于是就随便找个了表,运行下查询看看,发现查询出错。
SQL0668N Operation not allowed for reason code "1" on table USERTBL.
SQLSTATE=57016
这是怎么回事呢?我接着在DB2命令中心查询。
-------------------------------------输入的命令 ------------------------------------------
? SQL0668N;
-----------------------------------------------------------------------------
SQL0668N当基础表(或从属表)处于检查暂挂状态时,不允许操作。
解释: 当表处于检查暂挂状态时,可能有一行或多行违反了对数据定义的约
束。此表不能用于操作。若从属表处于检查暂挂状态,则对不处于检查暂挂
状态的父表的操作也可能接收到此错误。
用户响应: 执行带有 IMMEDIATE CHECKED 选项的 SET INTEGRITY
语句,并确保数据符合对该表或从属于它的表定义的所有约束。
这么看来是处于检查暂挂状态了,我按照提示信息执行以后就可以访问了。
set integrity for usertbl immediate checked
这么看来,在db2move过程中会有些表因为检查约束可能会处于暂挂状态,需要执行SET INTEGRITY命令来恢复它的暂挂状态。
此次迁移任务得试验到这个时候就算是大功告成拉!~谢谢大家的欣赏。
PS:我后来查了下相关资料,可以从系统表中检索处于检查暂挂状态的表信息,命令如下:
Select tabname from syscat.tables where status=’C’