免费注册 查看新帖 |

Chinaunix

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

db2数据库备份恢复问题:SQL0970N [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-08 20:21 |只看该作者 |正序浏览
从一台sun的机器上

BACKUP DATABASE mydb TO /backup/mydb 备份数据库,

然后把备份拷贝到AIX系统下,然后在aix下db2数据库中建立mydb数据库,然后执行:

RESTORE DATABASE mydb FROM /backup/mydb TAKEN AT 20000926201226

出现如下错误,
SQL0970N  The system attempted to write to a read-only file.  SQLSTATE=55009,

提示没有写的权限,请大家帮忙看看!

谢谢!

论坛徽章:
0
9 [报告]
发表于 2006-06-12 09:27 |只看该作者
你好,故障描述还是不具体,如果方便,请联系我,010-51295545,msn:cyp1975@hotmail.com,
很乐意与你一起交流,帮你解决问题,也可以满足一下我的成就感。
我们在ibm 存储备份,pseries,db2 ,was,tsm,lotus方面都有认证和专门的技术考试认证。从事这方面的技术服务多年。最好能电话交流,这样比较直接。

论坛徽章:
0
8 [报告]
发表于 2006-06-09 21:03 |只看该作者
谢谢各位帮忙,本人已经搞定,具体过程如下,与大家共享!


一:在源数据库上的操作:(本例为solaris9)
#su – db2inst1
$pwd
/ export/home2/db2inst1
$mkdir cws3
$db2pd –db cws3 (查看cws3数据库的配置信息,例如表空间的位置,日值的位置等等)
$ db2 get dbm cfg (查看原来cws3数据库的建库信息,如库的编码,区域等)
说明:数据库restore时对于不存在的数据库会新建一个,但是其codeset和地区,以及codepage都是使用默认的,当备份的数据库与你默认的配置不同时,就会发生错误。因此可以先在目标数据库上新建一个与源数据库相同的数据库,使其codeset和地区,codepage都跟你备分的一样,再执行restore就ok了。
$db2 db2stop(或者db2 db2stop force)
$db2 db2start
说明:在用backup db备份db2数据库时,外部不能有连接,因此要stop db2,然后在start db2。
$db2 backup db cws3 to
/export/home2/db2inst1/cws3(指定备份的介质,只要是一个可写的目录即可,backup命令会自动把备份出来的文件放到/export/home2/db2inst1/cws3下面).
备份完成后,系统会自动生成一个备份的时间戳,例如:
Backup successful. The timestamp for this backup image is : 20060608160538
同时会在指定的介质(或者是目录)下生成一个类似如下的文件:
CWS3.0.db2inst1.NODE0000.CATN0000.20060608160538.001
这样db2的基本备份就完成了。
然后可以把备份出来的数据文件拷贝的目标数据库的任意目录(这个目录很重要,以后要用到,本例是备份到目标数据库/db2data/db2inst1/cws3下),接下来就可以在目标数据库上进行操作。
二:在目标数据库上操作(本例为AIX5.1)
1:建立目标数据库:
由于两个数据库在编码以及库配置方面的不同,因此建议在目标数据库上先建立一个和源数据库配置相同的数据库。
#su – db2inst1
$pwd
/db2data/db2inst1
$mkdir cws3
本例假设备份的数据库文件拷贝到了/db2data/db2inst1/cws3下。
$ CREATE DATABASE cws3 ON /db2data/db2inst1 USING CODESET GBK TERRITORY CN COLLATE USING SYSTEM
这样就在/db2data/db2inst1目录下产生一个以登陆实例为名称的目录,本例为
/db2data/db2inst1/db2inst1
由于两台数据库备份的目录以及在目标数据库上恢复的目录可能不同,并且backup db命令备份的数据文件默认记录所有与备份环境相关的信息,例如备份路径等,因此要利用db2的重定向方式恢复数据。
2:重定向恢复数据库:
接下来根据上面在源数据库上查到的源数据库配置信息,主要是数据库几个缺省表空间,例如系统表空间,用户表空间,临时表空间等等,根据这些信息,进行数据库的重定向恢复。
$            db2 restore db from  /export/home2/db2inst1/cws3  to  /db2data/db2inst1/cws3  into cws3  redirect
$               db2 "set tablespace containers for 0 using (path '/db2data/db2inst1/db2inst1/NODE0000/SQL00001/SQLT0000.0')"
$                db2 "set tablespace containers for 1 using (path '/db2data/db2inst1/db2inst1/NODE0000/SQL00001/SQLT0001.0')"
$                db2 "set tablespace containers for 2 using (path '/db2data/db2inst1/db2inst1/NODE0000/SQL00001/SQLT0002.0')"
$                db2 "set tablespace containers for 3 using (path '/db2data/db2inst1/db2inst1/usercontainer3')"
$                db2 "set tablespace containers for 4 using (path '/db2data/db2inst1/db2inst1/usercontainer4')"
注意, 在给恢复数据库上的tablespace设置redirect container时候,设置必须和原来的tablespace type一致,如原来是SMS,则使用PATH container,原来是DMS,则使用FILE/DEVICE container。如果是DMS,上面使用格式变为:
db2 "set tablespace containers for 5 using (file '/db2data/db2inst1/db2inst1/data1' 2000000)"

然后进行:
$db2 restore db cws3 continue

至此db2重定向恢复完成。

[ 本帖最后由 exitgogo 于 2006-6-9 21:18 编辑 ]

评分

参与人数 1可用积分 +2 收起 理由
mymm + 2

查看全部评分

论坛徽章:
0
7 [报告]
发表于 2006-06-09 17:50 |只看该作者
containers 的路径

论坛徽章:
0
6 [报告]
发表于 2006-06-09 16:17 |只看该作者
db2 "set tablespace containers for 3 using (file '/export/home/datarq/data1' 2000000)"
db2 "set tablespace containers for 4 using (file '/export/home/datarq/data2' 1500000)"
db2 "set tablespace containers for 6 using (file '/export/home/datarq/data3' 5120)"

请问lizhuo ,(file '/export/home/datarq/data1' 2000000)"

/export/home/datarq/data1,这个路径是指的什么路径呀,请详细解释一下好吗!

偶不懂db2,见笑了!

论坛徽章:
0
5 [报告]
发表于 2006-06-09 15:24 |只看该作者
谢谢帮助,我先试试!

论坛徽章:
0
4 [报告]
发表于 2006-06-09 14:49 |只看该作者
这样吧,我给你发一个重定向恢复的脚本吧,参考一下。不过还是建议你去ibm的网站看文档,弄明白。
首先在备份数据库的机器上备份数据库,然后用db2pd -db dbname 查看一下数据库的表空间容器的情况。
db2 restore db test  replace existing redirect
db2 "set tablespace containers for 3 using (file '/export/home/datarq/data1' 2000000)"
db2 "set tablespace containers for 4 using (file '/export/home/datarq/data2' 1500000)"
db2 "set tablespace containers for 6 using (file '/export/home/datarq/data3' 5120)"
db2 "set tablespace containers for 0 using (path '/export/home/datarq/space1')"
db2 "set tablespace containers for 1 using (path '/export/home/datarq/space2')"
db2  "set tablespace containers for 2 using (path '/export/home/datarq/space3')"
db2  "set tablespace containers for 5 using (path '/export/home/datarq/space4')"
db2  "set tablespace containers for 7 using (path '/export/home/datarq/space5')"
db2  restore db test continue
db2  rollforward db test  to end of  logs and complete

论坛徽章:
0
3 [报告]
发表于 2006-06-09 13:58 |只看该作者
难道CU的牛都休息了吗,准备精力晚上夜战世界杯吗,

偶也想休息一下,晚上看世界杯,但是问题还是要解决的,

请各位大牛帮忙!

论坛徽章:
0
2 [报告]
发表于 2006-06-09 12:53 |只看该作者
顶起来,请db2高手指点一下!

谢谢!
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP