Chinaunix首页 | 论坛 | 博客
  • 博客访问: 666228
  • 博文数量: 102
  • 博客积分: 2241
  • 博客等级: 大尉
  • 技术积分: 1670
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-08 10:08
文章分类

全部博文(102)

文章存档

2013年(6)

2012年(15)

2011年(81)

分类: DB2/Informix

2011-04-20 22:10:00

    如果需要从不同平台之间迁移DB2的数据,不能使用备份方式,而只能使用数据导出导入的方式。


1. 备份
  • 导出数据库结构
db2look -d DBALIAS -l -o dbstruct.ddl     生成数据库布局:表空间、缓冲池等
db2look -d DBALIAS -f -o dbcfg.ddl        生成配置参数和环境变量的语句
db2look -d DBALIAS -a -e -o dbobjects.ddl 生成导出表、视图、过程、函数等对象
    (可以尝试加上-ct参数,否则输出的语句是乱序的,例如视图语句可能在它依赖的表之前,IBM连这种工作都不做好,BS之)

直接输入db2look命令可以查看参数说明

其它:
  -ct 参数在AIX上DB2 9.5会出错
  -f  参数生成的数据库配置参数也不完整,已修改过的参数 LOGARCHMETH1,LOGRETAIN 不能生成 (凸凸)

  • 导出数据表
mkdir baktbs
cd  baktbs
db2move DBALIAS export

  • 导出实例及数据库参数、环境变量
db2 get dbm cfg > dbm.cfg
db2 get db cfg for DBALIAS > db.cfg
db2set -all > db2set.cfg



2. 恢复
  • 创建数据库
db2 create database DBALIAS using codeset gbk territory cn

  • 创建数据库布局
打开dbstruct.ddl,修改表空间路径等,执行后创建相同名称的缓冲池、表空间

  • 修改参数
参考 dbcfg.ddl、dbm.cfg、db.cfg、db2set.cfg 文件修改实例、数据库参数、环境变量

  • 创建对象
打开dbobjects.ddl,调整个对象的创建顺序,按server,user,nickname,table,function,view,tigger,producted 顺序
  注:最简单的方式是不改顺序,直接执行它5遍10遍的,这样就算是创建对象的语句在其依赖对象之前也能创建。第一次执行创建对象时不成功,在之后创建依赖对象后,第二次再执行时就创建成功了

  • 导入数据
cd baktbs
db2move DBALIAS load -lo replace
使用load的方式不需要检查数据约束,也不生成日志,比import快许多

  • 修复表
使用load方式导入的数据表有些会有SQL0668N的错误,执行以下语句查询结果
select ' SET CONSTRAINTS FOR "' || rtrim(tabschema) ||'"."'||rtrim(tabname)  || '" IMMEDIATE CHECKED ;' from syscat.tables where status='C' ;

    以上步骤在不同平台主机间生成相同布局及数据的数据库。
阅读(2511) | 评论(0) | 转发(1) |
0

上一篇:顿 悟

下一篇:IBM JDK下载方法

给主人留下些什么吧!~~