Chinaunix首页 | 论坛 | 博客
  • 博客访问: 338656
  • 博文数量: 282
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 3260
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-26 14:38
文章分类

全部博文(282)

文章存档

2011年(1)

2008年(281)

我的朋友
最近访客

分类: 服务器与存储

2008-07-28 20:49:24

  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 个多小时。

  4. 生成源数据库系统的数据对象定义语句

  在导出了数据之后,要做的就是导出数据对象定义。DB2提供了一个工具叫db2look,用户可以通过它来生成数据库中的数据对象定义,包括别名,表,索引,视图,触发器,用户定义函数,存储过程等。具体的命令如下:

  清单 7. 生成数据对象定义语句

  db2look -d dbname

  -e -o

  ddlfile

  -i

  username

  -w

  password

  如果数据库非常复杂,包含很多的数据对象定义,那么在执行上述命令前,用户有可能要先调整参数appgroup_memo_sz,才能够顺利的生成数据对象定义文件。下面是笔者修改这个参数的命令示例:

  清单 8. 调整源数据库参数

  db2 update db cfg for dbname using appgroup_mem_sz 51368

  5. 在目标平台创建新的数据库,参照源系统设置参数

  在源平台上完成了数据导出和数据对象定义语句生成之后,下面就是要在目标平台建立目标数据库了。参考源数据库的设置为新创建的数据库配置适当的参数,通常需要调整的参数有:

  dbheap - 数据堆大小

  catalogcache_sz - 目录高速缓存大小

  logbufsz - 日志缓冲区大小

  util_heap_sz - 实用程序堆大小

  buffpage - 缓冲池大小

  sortheap - 排序列表堆

  stmtheap - SQL 语句堆

  applheapsz - 缺省应用程序堆

  笔者使用的调整语句如下:

  清单 9. 调整语句

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