免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 978 | 回复: 0
打印 上一主题 下一主题

[归档与迁移] DB2跨平台数据库迁移步骤和注意事项(2) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-28 20:50 |只看该作者 |倒序浏览
 db2 update db cfg for dbname using dbheap 41599
  db2 update db cfg for dbname using catalogcache_sz 38049
  db2 update db cfg for dbname using logbufsz 256
  db2 update db cfg for dbname using util_heap_sz 20000
  db2 update db cfg for dbname using buffpage 1000
  db2 update db cfg for dbname using sortheap 4096
  db2 update db cfg for dbname using stmtheap 16384
  db2 update db cfg for dbname using applheapsz 10242
  对于非常复杂的数据库,目标数据库的日志参数还需要做出调整,以便在导入数据和生成数据对象时,系统不至于日志溢出。由于笔者要迁移的数据库比较复杂,所以使用了较大的日志配置,命令示例如下:
  清单 10. 命令示例
  db2 update db cfg for dbname using logfilsiz 8192
  db2 update db cfg for dbname using mincommit 1
  db2 update db cfg for dbname using logprimary 24
  db2 update db cfg for dbname using logsecond 108
  6. 导入源数据集
  细心的读者可能会发现,这里总结的步骤6和8看似不太符合一般的逻辑顺序。对于数据库系统,通常都是先生成数据系统对象,如表,视图,触发器等,然后再导入数据集。而上述步骤中却是先导入数据集,然后再生成数据对象定义。 这能行的通吗?对于DB2来说,这完全行得通,因为db2move命令在导入数据集时,会自动生成表和索引。这样的顺序对于复杂数据对象定义的数据库迁移是唯一可行的顺序,因为复杂数据库中往往包含诸多复杂的数据约束语句, 它们会造成数据集导入时的种种问题。
  清单 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。无论如何,数据库迁移是个复杂的问题,其中难免有些情况笔者未曾遇到,欢迎有过类似经验的高手指教和共同讨论。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/74483/showart_1095086.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP