请问DB2的数据如何恢复?

我是新手,现在在维护人行CIS的DB2数据库
现在的操作系统是suse linux 9.3,DB2的版本是8.2,DB2的补丁是fp10
现在有一台生产机,DB2运行正常,请问如何把生产机的上数据备份出来,导入到备机上面?两台机器的操作系统一致,数据库也一致
谢谢!
参与49

49同行回答

如果用db2untag命令的话,我的建库语句是:db2 create database cisfedb on '/db2_db' using codeset GBK territory cn;但在/db2_db下面,只有一个目录 /db2_db/db2inst1/NODE0000/然后下面有两个文件SQL00001与sqldbdir显示全部
如果用db2untag命令的话,我的建库语句是:
db2 create database cisfedb on '/db2_db' using codeset GBK territory cn;
但在/db2_db下面,只有一个目录 /db2_db/db2inst1/NODE0000/
然后下面有两个文件SQL00001与sqldbdir收起
2009-09-02
浏览537
alualu项目经理lu
如果直接从生产机备份,应该启动在线备份和恢复显示全部
如果直接从生产机备份,应该启动在线备份和恢复收起
互联网服务 · 2009-09-02
浏览562
这样的话就说明你一个一样的库已经存在备份环境了,你可以使用redirect ,这样重新指定空间,就可以了。。。不过,原来的空间可能就浪费了。。。同平台离线备份—恢复到指定空间(迁移)1.备份数据库$ db2 "backup database wbhisdbto "'/home/db2inst1/db2bak/0','/home/db2inst1...显示全部
这样的话就说明你一个一样的库已经存在备份环境了,你可以使用redirect ,这样重新指定空间,就可以了。。。不过,原来的空间可能就浪费了。。。


同平台离线备份—恢复到指定空间(迁移)
1.备份数据库
$ db2 "backup database wbhisdb
to "'/home/db2inst1/db2bak/0','/home/db2inst1/db2bak/6"
备份路径是可以指向多个的,也可以只选择一个。
备份完成会返回一个日期戳,如 20090724094027
会在目录/home/db2inst1/db2bak/0 , /home/db2inst1/db2bak/1’各生成一部分备份文件。

2.建立裸设备
$ mklv -y'hisdb' -t'jfs' -a'c' rootvg 16 hdisk0
$ mklv -y'histmpdb' -t'jfs' -a'c' rootvg 4 hdisk0
上面是 –y 后面逻辑卷名

–a’c’ c是代表center,也就是硬盘的中心部分,
rootvg是卷组名
16是pp个数,这个要根据系统设定,可以用 lsvg rootvg查看rootvg的pp的大小,然后乘以个数就是分区的空间大小。
hdisk0是物理硬盘名
做这个之前需要使用 lsvg –l rootvg 查看是否有足够空间。

$ cd /dev
$ chown db2inst1:db2grp1
rhisdb
rhistmpdb
hisdb
histmpdb

一般会生成一个链接文件到裸设备。
$cd /easydata
$ln –s /dev/rhisdb rhisdb
$ln –s /dev/ rhistmpdb
rhistmpdb



3.恢复数据库
db2 "restore db wbhisdb from '/home/db2inst1/db2bak/' taken at 20090724094027 redirect"
from 指定备份文件存放路径,20090724094027是备份文件提日期戳,redirect 表示重定向,也就是指向新的空间,需要使用下面的set tablespace设置空间路径。如果不使用redirect 那么就会恢复到原来空间,而且不用下面的设置表空间操作。

4.重新设置表空间容器
db2 "set tablespace containers for 0 using (PATH '/easydata/catalog_wbhis.dat')"
db2 "set tablespace containers for 1 using (PATH '/easydata/tmp_wbhis.dat')"
db2 "set tablespace containers for 2 using (device '/easydata/rhisdata' 398000)"
db2 "set tablespace containers for 3 using (device '/easydata/rhisdb' 398000)"
db2 "set tablespace containers for 4 using (PATH '/home/db2inst1/db2inst1/NODE0000/SQL00005/SYSTOOLSPACE')"
db2 "set tablespace containers for 5 using (device '/dev/rhistmpdb' 398000)"
关于PATH,device,file ,PATH是SMS,其它两个是DMS方式的。后面数字是页数,根据系统属性pagesize来定,当然,如果原来建表空间的时候指定的页大小,那么这里要根据原来设置。可以见FAQ:页大小

5.执行恢复
db2 "restore db wbhisdb continue"
等待恢复完成,就可以使用数据库了。




当然,如果你确定原来的数据库没用了,而且又是测试机,出问题也没什么的话,你可以试试untag,这个我没敢用过,这个是不推荐命令。你可以查查怎么用,untag完了就可以恢复了。。。收起
2009-09-02
浏览621
我在备机上使用db2 restore db cisfedb from /db2_backup备份数据的目录是/db2_backup出现一个错误SQL0294N The container is already use. SQLSTAT=42730显示全部
我在备机上使用
db2 restore db cisfedb from /db2_backup
备份数据的目录是/db2_backup
出现一个错误
SQL0294N The container is already use. SQLSTAT=42730收起
2009-09-02
浏览537
比如我原来有一个数据库 cisfedb,备份出来的名字是CISFEDB.0.db2inst1.NODE0000.CATN0000.20070623200059.001然后我在备机上新建了一个数据库,名字也叫cisfedb,如何将备份文件恢复到备机上?我db2不熟,能不能帮忙写出稍详细的步骤,谢谢...显示全部
比如我原来有一个数据库 cisfedb,备份出来的名字是CISFEDB.0.db2inst1.NODE0000.CATN0000.20070623200059.001
然后我在备机上新建了一个数据库,名字也叫cisfedb,如何将备份文件恢复到备机上?
我db2不熟,能不能帮忙写出稍详细的步骤,谢谢收起
2009-09-02
浏览583
alualu项目经理lu
方法有很多,如果备份整个数据库可以用db2 backup database sample to 一个位置,然后ftp到备份机,put上去就行,如果备份个别表,就可以写成db2脚本执行显示全部
方法有很多,
如果备份整个数据库可以用db2 backup database sample to 一个位置,然后ftp到备份机,put上去就行,
如果备份个别表,就可以写成db2脚本执行收起
互联网服务 · 2009-09-02
浏览550
两台机器的操作系统一致,数据库也一致的话,首选备份、恢复;也可以用重定向还原数据库实现数据迁移,具体可以在本站内查~显示全部
两台机器的操作系统一致,数据库也一致的话,首选备份、恢复;也可以用重定向还原数据库实现数据迁移,具体可以在本站内查~收起
2009-09-02
浏览544
重定向回复显示全部
重定向回复收起
2009-09-02
浏览553
start2000start2000系统架构师ABB
备份恢复阿显示全部
备份恢复阿收起
互联网服务 · 2009-09-02
浏览551

提问者

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2009-09-02
  • 关注会员:0 人
  • 问题浏览:28806
  • 最近回答:2010-03-26
  • X社区推广