软件开发

请问怎样快速导入导出DB2数据库

一个项目中要使用DB2,然后就开始了痛苦的过程,首先,我真的真的真的无意冒犯使用DB2的大家,我就是想问下DB2有什么快捷的导入导出数据库,我在oracle里完全就用imp/emp搞定了。我在DB2里创建了数据库、缓冲池、表空间后,然后,我实际环境使用的DB2数据库跟我测试环境的一样的,我怎样...显示全部
一个项目中要使用DB2,然后就开始了痛苦的过程,首先,我真的真的真的无意冒犯使用DB2的大家,我就是想问下DB2有什么快捷的导入导出数据库,我在oracle里完全就用imp/emp搞定了。我在DB2里创建了数据库、缓冲池、表空间后,然后,我实际环境使用的DB2数据库跟我测试环境的一样的,我怎样把产生环境的数据库导到测试环境呢?在oracle 里,我只要导出产生环境的数据,删掉测试环境的用户,重建用户,重新导就行了,但在DB2里我找来找去也没找到有什么方法。我使用了
b2look -d dbname-e -a -x -i user-w paw-o dbname.sql
db2move dbname export -u user -p paw
导出,
使用
db2 -tvf dbname.sql
db2move 数据库 load

导入,使用连接DB2工具看到那些表的时候确实欢天喜地的激动了一阵,但当我点击具体表的时候,我呆了,天呀,N个表报弹出” SQL0668N  Operation not allowed for reason code "1"错误
说要执行set integrity for 表名immediate checked 这个语句,试了一个,那个表果然不错了,问题是这么多表,我要一个个执行吗????请问有没有高手给个语句,可以把所以的表都弄好了,bat文件也行,或者告诉我不是这样弄的,有简单的方法,我也真不想要这样的方法。
对了还想了个问题,我照那个高手的话,把数据库drop掉后,再用restore,提示 restore是completed successfully,but one or more tablespace  from the backup was not restored.是不是我还得恢复表空间,请问这个又是怎么样的一个流程解决办法?
请高手多多指导!!!!!收起
参与7

查看其它 5 个回答sunyangnj的回答

sunyangnjsunyangnj技术经理苏宁金融研究院
1 最佳的方法就是备份+重定向恢复 backup then restore redirect
   restore之后,由于目标服务器目录肯定和源服务器不同,所以表空间需要重定向恢复
  重定向恢复
  db2 restore db xxxx redirect generate script redirect.ddl
  然后修改redirect.ddl中表空间容器的定义
比如
  set tablespace containers for 3 using (file '/db2/cont1'  100000);
然后修改其他表空间容器定义
修改完之后,保存redirect.ddl
执行该ddl, db2 -tvf redirect.ddl
如果是可恢复数据库,还要rollforward
金融其它 · 2013-09-26
浏览681

回答者

sunyangnj
技术经理苏宁金融研究院
擅长领域: 服务器分布式系统区块链

sunyangnj 最近回答过的问题

回答状态

  • 发布时间:2013-09-26
  • 关注会员:1 人
  • 回答浏览:681
  • X社区推广