软件开发

请问怎样快速导入导出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技术经理苏宁金融研究院
2 如果你采取导入导出数据export+load的话
在导入数据,且668报错后,执行以下脚本,解除完整性暂挂状态
with gen(tabname,seql) as (select rtrim(tabschema)||'.'||rtrim(tabname) as tabname,row_number() over (partition by status) as seq from syscat.tables where status='C'),r(a,seq1) as (select cast(tabname as varchar(3900)),seq from gen where seq=1 union all select r.a||'.'||rtrim(gen.tabname),gen.seq from gen, r where (r.seq1+1)=gen.seq),r1 as (select a,seq1 from r) select 'set integrity for'||a||'immediate checked' from r1 where seq1=(select max(seq1) from r1)
金融其它 · 2013-09-26
浏览702

回答者

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

sunyangnj 最近回答过的问题

回答状态

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