背景:
基于块级别的灾备存储恢复环境中,数据库起来之后查询数据提示表空间不可访问。
分析:
该问题可能的原因有很多,可能有:
1.相关文件属主、权限设置不当
2.灾备系统恢复的时间点选择不当
3.非正常的终止对表空间的访问
在本次案例中,应该是由于灾备系统恢复的时间点碰巧在不合适的时间点上,解决方法就是选择该时间点附近的快照尝试恢复。
报错:
db2 => select count(*) from test
1
-----------
SQL0290N Table space access is not allowed. SQLSTATE=55039
查看表空间状态:
Tablespace ID = 3
Name = music
Type = Database managed space
Contents = All permanent data. Regular table space.
State = 0x4080 ----状态异常
Detailed explanation:
Roll forward pending
Offline
查看容器信息:
$ db2 list tablespace containers for 3
Tablespace Containers for Tablespace 3
Container ID = 0
Name = /dev/music
Type = Disk
查看容器文件的属主和读写权限:
$ ls -lt /dev/music
crw-rw---- 1 root system 48, 14 Nov 20 16:09 /dev/music ----属主有问题
修改属主和权限:
root@eric/# chown db2inst1.db2iadm1 /dev/music
root@eric/# chmod 777 /dev/music
root@eric/# su - db2inst1
重启数据库实例:
$ db2stop force
12/29/2014 14:30:38 0 0 SQL1064N DB2STOP processing was successful.
SQL1064N DB2STOP processing was successful.
$ db2start
12/29/2014 14:30:43 0 0 SQL1063N DB2START processing was successful.
SQL1063N DB2START processing was successful.
连接数据库:
$ db2 connect to music
Database Connection Information
Database server = DB2/AIX64 9.5.6
SQL authorization ID = DB2INST1
Local database alias = MUSIC
该问题一般来说可以尝试回滚数据库:
db2 rollforward db music to end of logs
在这次项目中,单纯的回滚无法解决无法访问的问题,最终方案为:
关闭数据库实例---卸载文件系统---varyoffvg---灾备系统追一下日志或者找一个其他的时间点尝试恢复---varyonvg---挂载文件系统---调整相关文件的权限和属主---启动数据库---连接数据库
执行查询语句:
db2 => select count(*) from test
1
-----------
9821
1 record(s) selected.
阅读(27429) | 评论(0) | 转发(0) |