DB2 是个有着广泛商业应用的关系数据库软件。作为一个数据库管理员时常面临着数据库系统的迁移工作,这是一个复杂而艰巨的过程。互联网和 DB2 的帮助文档中有许多关于 DB2 数据库迁移的介绍,但是对于 DB2 数据库的跨平台迁移却很少谈及。本文将基于笔者的成功实践,总结一下跨平台数据库迁移的步骤和注意事项,很高兴能与大家一起分享,希望能够帮到大家。
简介
设想您是一个 DB2 商业数据库系统的管理员。您被给予一项任务,支持业务开发和测试团队对商业系统的持续开发,为他们创建一套独立于产品环境的数据库系统,从而不影响日常的商业运作。由于种种原因,这套开发和测试数据库系统将运行在一个不同于产品环境的操作系统。我们知道 DB2 提供了一些方便的数据库管理工具,比如数据库的整体备份和恢复功能,用户可以用它很方便的将一个 DB2 数据库从一台物理节点迁移到另一个物理节点,但是 DB2 的备份和恢复功能目前只支持同构操作系统平台间的迁移,比如从 Windows 平台到 Windows 平台,AIX 平台到 AIX 平台。对于上述任务要求的跨平台的数据库迁移,就没有一个专门的工具可以很方便的实现。
迁移步骤
经过笔者的实践,总结 DB2 数据库的跨平台迁移步骤如下:
实例:下面给出一个遵循上述步骤的具体例子,其中将给出执行这些步骤的具体 DB2 命令以供参考。
1. 记录源数据库管理系统配置参数。这些是很重要的数据环境设置,其中的一些设置关系到迁移能否成功。
清单 1. 显示数据库管理系统配置参数的命令
db2 get dbm cfg
清单 2. 显示数据库配置参数的命令
db2 get db cfg for source_db_name
注意:Italic part should be replaced by your settings.
注意:对于比较复杂的源数据库,要注意它的应用程序组内存大小参数(appgroup_memo_sz)。如果它的大小不够,后面生成数据对象定义的时候会有问题。
清单 3. 显示数据库注册表变量的命令
db2set -all
清单 4. 显示数据库表空间的命令
db2 list tablespaces show detail
清单 5. 显示数据库程序包的命令
db2 list packages
上述显示表空间和程序包的命令都需要先建立到源数据库的连接。
2. 检查源数据库系统对象,明确要迁移哪些数据库系统对象
如何检查源数据库系统对象?一个最直观的方法就是使用DB2控制中心(db2cc)浏览查看表,视图,触发器,用户定义的函数,存储过程等数据库对象。尤其要注意有无大的表,比如一行数据的表定义可能大于8K的表。 这样的表需要在目标数据库上建立具有足够页大小的表空间。下面的步骤中将会给出列子。还需要注意的是有无外部定义的存储过程,这些存储过程所关联的外部程序包需要手工重新关联。
3. 导出源数据库系统的数据集
DB2 提供了一个工具叫作 db2move,用户通过它可以把所有用户定义的表中的数据导出到 IXF(集成交换格式)的文件中。同时,在导入数据的时候,它还可以生成表上的所定义的索引。具体的导出执行命令如下:
清单 6. 导出源数据集
db2move dbname
export -u
username
-p
password
根据数据库大小,机器性能的不同,这个导出过程可能耗时几分钟到几个小时不等。在笔者的经历中,这个导出过程就长达 2 个多小时。可见经验的得到是个漫长的过程,而现在已经有人为我们研究出来啦,我们就可以直接学习现成的劳动成果,节约了时间,而且有速度有效率,欢迎人人来学习。