Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104611105
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-15 08:31:57

     来源:赛迪网    作者:小乔

清单 11. 导入源数据集的命令示例

以下是引用片段:

db2move targetdbname

import -u

username

-p

password

如果数据量非常大,这个过程将会非常耗时。

7. 检查数据集导入过程日志,排除可能的错误。

导入完成后,你需要检查导入过程日志,查看有无错误发生。如果有错误,你需要找出解决方法,然后从步骤 5 重新开始。

8. 在目标系统执行数据系统对象定义语句

修改步骤 4 生成的 ddl 语句文件,去除文件前端的数据库连接语句,保存后执行如下命令:

清单12. 命令示例

以下是引用片段:

db2 connect to targetdbname

user

username

using

password

db2 -tvf ddlfile > createSchema.log

db2 connect reset

9.检查数据对象生成日志,排除可能的错误

通常你会发现有很多创建表的语句执行失败的记录,不要紧张,这是正常的,因为前面的步骤中已经生成了所有的用户表。所以检查的焦点应该放在其他数据库对象(如视图和触发器等)的生成语句上。 如果数据库非常复杂,可能需要非常细致的检查日志,以确保所有数据对象都正确创建。

10. 执行后期检查

通常,用户可能碰到两种需要处理的情况。其一,如果数据库系统中有用 Java 编写的存储过程,那么需要注册存储过程的外部程序包。命令示例如下:

清单 13. 命令示例

以下是引用片段:

db2 call sqlj.install_jar ('jar_url','jar_id')

db2 drop procedure procedurename

db2 create procedure procedurename

external name '

jar_id:

classname' language java parameter style DB2GENERAL FENCED modifies sql data

db2 grant execute on procedure procedurename to public

其二,如果表定义中有数据库管理的自动增长列,比如表定义语句含有 "GENERATED BY DEFAULT AS IDENTITY"。那么你需要更新这些列的起始计数。命令示例如下:

清单 14. 命令示例

以下是引用片段:

db2 alter table

tabname

alter column

colname

restart with

newstartnumber

这个 newstartnumber 的多少是要根据目前表中该列的最大值来定的,具体公式是 newstartnumber = currentmaxnumber + 1。

11. 配置应用程序,连接数据库,测试迁移是否成功。

上述就是完整的 db2 跨平台数据库迁移步骤,笔者使用的 db2 版本是 8.2。无论如何,数据库迁移是个复杂的问题,其中难免有些情况笔者未曾遇到,欢迎有过类似经验的高手指教和共同讨论。

阅读(498) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~