db2中关于restore后,不允许访问表空间的问题

fly2749 2010-04-09 01:02:06
菜鸟请教高手,最近恢复了一个库,用的是restore的方法,然后恢复后出现了一个提示,说好像是表空间没有恢复什么的,但是具体的也没有记下来详细信息。然后通过aqua data studio查询某个表时,出现了以下错误:

>[错误]脚本行:1-1 ----------------------------------------
DB2 SQL Error: SQLCODE=-290, SQLSTATE=55039, SQLERRMC=null, DRIVER=3.50.152
消息: 不允许访问表空间。. SQLCODE=-290, SQLSTATE=55039, DRIVER=3.50.152

现在想让高手帮忙分析下,这种问题应该怎样解决,谢谢
...全文
1929 30 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
CatNetMouse 2010-07-29
  • 打赏
  • 举报
回复
我遇到过这样的情况,但仅是某个表空间不能用,也就是某些表打不开。
我的解决方法很简单,就是你用QC看Tablespaces表空间中,有一个status列的值要是为非normal就表示有问题,然后到正试库把这个表空间的语句放到测试库执行,当然在执行前先备份下这个有问题的表空间语句,然后drop这个有问题的表空间。
huang888 2010-07-22
  • 打赏
  • 举报
回复
恢复后,请执行前滚。目前为表空间挂起。
bauercui 2010-07-21
  • 打赏
  • 举报
回复
xuexiguo
zhaojianmi1 2010-06-28
  • 打赏
  • 举报
回复
答案已经在上面
fly2749 2010-06-27
  • 打赏
  • 举报
回复
up 有人可以给出答案么
fly2749 2010-04-15
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 zhaojianmi1 的回复:]

你是什么操作系统平台
你通过restore之后,连接到数据库,然后
你可以用db2 list tablespaces show detail,查看表空间
其中有表空间ID信息
然后根据表空间ID(假设为3)
使用命令db2 list tablespace containers show detail 查看表空间设备

创建好所有表空间的设备,然后重新执行restore命令就可以恢复[/Quote]

我是这样执行的:
db2 list tablespace containers show detail
但是出现了错误:
C:\Documents and Settings\sun>db2 list tablespace containers show detail
SQL0104N 在 "CONTAINERS" 后面找到异常标记 "show"。预期标记可能包括:"FOR"。
SQLSTATE=42601

应该是语法有问题,于是修改成了一下语句:
C:\Documents and Settings\sun>db2 list tablespace containers for 2

表空间 2 的表空间容器

容器标识 = 0
名称 = E:\DB2\NODE0000\FOTEST\T0000002\C0000000.
LRG
类型 = 文件

请问下面需要怎样做呢?
zhaojianmi1 2010-04-14
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 smh821025 的回复:]
引用 20 楼 zhaojianmi1 的回复:

如果知道备份出来的数据库的表空间设备的话,在恢复前建好这些设备就不需要重定向


如何去查看这些已经备份出文件的表空间设备呢,这些设备需要怎样创建,请给出个命令,十分感谢
[/Quote]
你是什么操作系统平台
你通过restore之后,连接到数据库,然后
你可以用db2 list tablespaces show detail,查看表空间
其中有表空间ID信息

然后根据表空间ID(假设为3)
使用命令db2 list tablespace containers show detail 查看表空间设备

创建好所有表空间的设备,然后重新执行restore命令就可以恢复
fly2749 2010-04-14
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 zhaojianmi1 的回复:]

如果知道备份出来的数据库的表空间设备的话,在恢复前建好这些设备就不需要重定向
[/Quote]

如何去查看这些已经备份出文件的表空间设备呢,这些设备需要怎样创建,请给出个命令,十分感谢
zhaojianmi1 2010-04-13
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 smh821025 的回复:]
引用 18 楼 zhaojianmi1 的回复:
需要执行重定向?

不重定向应该怎样解决呢,似乎只有这个办法。
个人理解是把表空间重新设置一下,是这样么?
[/Quote]如果知道备份出来的数据库的表空间设备的话,在恢复前建好这些设备就不需要重定向
fly2749 2010-04-13
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 zhaojianmi1 的回复:]
需要执行重定向?
[/Quote]
不重定向应该怎样解决呢,似乎只有这个办法。
个人理解是把表空间重新设置一下,是这样么?
Mr_Bean 2010-04-12
  • 打赏
  • 举报
回复
自动存储器表空间不能执行重定向
fly2749 2010-04-12
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 mr_bean 的回复:]
这个时候如果是表空间由于其他原因不能恢复的时候需要重定向表空间的容器 否则恢复不成功 重定向完毕之后执行restore continue。具体过程可以查看以下链接
http://www.db2cert.com/Article/ShowArticle.asp?ArticleID=3
[/Quote]
这里面还真是麻烦:

C:\Documents and Settings\mhsun>db2 restore database fotest from c:\ taken at 20
100309044821 into mytest redirect without rolling forward
SQL2529W 警告!复原到与备份映像数据库不相同的现有数据库,现有数据库的别名
"MYTEST" 与备份映像的别名 "FOTEST" 不匹配,并且现有数据库的数据库名称 "MYTEST"
与备份映像的数据库名称 "FOTEST"
不匹配。目标数据库将被备份版本覆盖。将删除与目标数据库相关联的前滚恢复日志。
要继续吗?(y/n) y
SQL1277W 正在执行重定向复原操作。现在,可以查看表空间配置,并且不使用自动存储器

的表空间可以重新配置它们的容器。
DB20000I RESTORE DATABASE命令成功完成。

C:\Documents and Settings\mhsun>db2 list tablespaces

当前数据库的表空间

表空间标识 = 0
名称 = SYSCATSPACE
类型 = 数据库管理空间
内容 = 所有持久数据。常规表空间。
状态 = 0x2000100
详细解释:
复原暂挂
可以定义存储器

表空间标识 = 1
名称 = TEMPSPACE1
类型 = 系统管理空间
内容 = 系统临时数据
状态 = 0x2000100
详细解释:
复原暂挂
可以定义存储器

表空间标识 = 2
名称 = USERSPACE1
类型 = 数据库管理空间
内容 = 所有持久数据。大型表空间。
状态 = 0x0100
详细解释:
复原暂挂

表空间标识 = 3
名称 = SYSTOOLSPACE
类型 = 数据库管理空间
内容 = 所有持久数据。大型表空间。
状态 = 0x2000100
详细解释:
复原暂挂
可以定义存储器

表空间标识 = 4
名称 = SYSTOOLSTMPSPACE
类型 = 系统管理空间
内容 = 用户临时数据
状态 = 0x2000100
详细解释:
复原暂挂
可以定义存储器

下面需要去重定向那几个表空间,另外他们的目录文件是需要单独建么?
试了一个:
C:\Documents and Settings\mhsun>db2 set tablespace containers for 4 using (PATH
'e:\DB2Containner\mytest\sys' )
SQL20319N 不允许在自动存储器表空间上执行 SET TABLESPACE CONTAINERS 命令。
SQLSTATE=55061


脑子里面问号太多了!!!
zhaojianmi1 2010-04-12
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 smh821025 的回复:]
引用 8 楼 zhaojianmi1 的回复:
引用 4 楼 smh821025 的回复:
引用 2 楼 zhaojianmi1 的回复:

db2 connect to dbname
db2 list tablespaces show detail
查看表空间状态(0x000为正常)
根据表空间状态来处理错误


当前数据库的表空间

表空间标识 = 0
名称 = S……
[/Quote]
不用事先创建表空间,只需要保证表空间用到的设备和文件系统有足够的空间即可。
Mr_Bean 2010-04-12
  • 打赏
  • 举报
回复
这个时候如果是表空间由于其他原因不能恢复的时候需要重定向表空间的容器 否则恢复不成功 重定向完毕之后执行restore continue。具体过程可以查看以下链接
http://www.db2cert.com/Article/ShowArticle.asp?ArticleID=3
fly2749 2010-04-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 mr_bean 的回复:]
请详细介绍你restore的过程
[/Quote]
1.应该是先在控制中心创建的数据库
2.然后db2 restore database fotest user db2inst1 using 11111111
3.restore后控制台上出现了一个类似于警告的错误,大概是说对应的表空间没有被恢复,具体的详细信息记不清了
Mr_Bean 2010-04-12
  • 打赏
  • 举报
回复
请详细介绍你restore的过程
fly2749 2010-04-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zhaojianmi1 的回复:]
引用 4 楼 smh821025 的回复:
引用 2 楼 zhaojianmi1 的回复:

db2 connect to dbname
db2 list tablespaces show detail
查看表空间状态(0x000为正常)
根据表空间状态来处理错误


当前数据库的表空间

表空间标识 = 0
名称 = SYSCATSPACE
类型 = 数据库管理空间
……
[/Quote]
是要在restore之前手动建表空间么,现在有什么可以解决的办法?难道需要删除该库重新restore
fly2749 2010-04-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yangxiao_jiang 的回复:]
表空间在恢复前,手动创建一下。
[/Quote]
请问所有的db2中restore之前都需要手动建表空间么,怎样建,谢谢
zhaojianmi1 2010-04-12
  • 打赏
  • 举报
回复
需要执行重定向?
fly2749 2010-04-12
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 mr_bean 的回复:]
自动存储器表空间不能执行重定向
[/Quote]
这个是什么意思,需要怎样做呢
加载更多回复(8)

5,891

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧