Chinaunix

标题: 在recovery的时候发生692错误故障处理的方法 [打印本页]

作者: hobbylu    时间: 2008-06-16 09:53
标题: 在recovery的时候发生692错误故障处理的方法
有一个客户,在系统发生异常掉电之后,启动数据库,发生了以下错误,导致数据库无法正常recovery。00:00000:00018:2008/06/11 16:00:08.45 server  Error: 692, Severity: 20, State: 1
00:00000:00018:2008/06/11 16:00:08.45 server  Uninitialized logical page '28114' was read while accessing object '3' in database '18'. Please contact Sybase Technical Support.
这种故障在正常操作下,已经无法恢复数据库,里面的数据需要通过使用恢复工具进行恢复了(建议使用powersybedit)。用poweredit读取裸设备方式,对改页面进行了分析,发现该页面确实是一个空页,所有的字节全部是0000 0000。那么如何避免这个故障,并将这个页面变成一个有效的页面呢?可以做如下处理:
首先读取该对象的其他页,然后将该页的页号修改为这个空页所在的页号,如上实例为 28114,回写磁盘后,关闭改文件,重新启动数据库。但过程中有可能会多次出现这个故障,需要重复操作,较为麻烦。
经过一系列的处理,该数据库可以正常启动,某些数据就可以通过正常的bcp出来。

[ 本帖最后由 hobbylu 于 2008-6-16 09:58 编辑 ]
作者: aliking    时间: 2008-06-19 12:34
标题: 回复 #1 hobbylu 的帖子
请问是什么版本的数据库,ASE12.0以上的版本还经常有类似的错误吗?
作者: andkylee    时间: 2010-01-19 01:16
标题: 回复 #1 hobbylu 的帖子
你的这个法子治标不治本。
上班后再讨论。
作者: wfcjz    时间: 2010-01-19 08:31
标题: 回复 #3 andkylee 的帖子
你的意思是全设备恢复?
作者: hobbylu    时间: 2010-01-19 08:53
治标治本,是一个权衡的事情。
有些情况无法治本,至少我做不到,能够尽最大程度恢复数据,是我的目标,达到治标就可以了,呵呵。
作者: wfcjz    时间: 2010-01-19 09:42
标题: 回复 #5 hobbylu 的帖子
个人倾向hobbylu 这种理解!任何事情都不可能做到尽善尽美。
作者: andkylee    时间: 2010-01-19 09:57
标题: 回复 #5 hobbylu 的帖子
你的这个问题是系统误认为28114是一个有效页面,实际为空页。
如果能在该页28114对应的OAM页面:27904上对object_id=3(syscolumns表)的1个extent进行空间是否分配的操作,就是把28114对应的状态改为未分配,这样下次ASE就不会读28114这也得数据了。
你的方法是读取其他正常页,将正常页的页号改为28114。如此的话,需要先把该正常页的数据提取出来,并且还不能保证不会发生逻辑页的循环链接错误!
作者: andkylee    时间: 2010-01-19 10:02
标题: 回复 #4 wfcjz 的帖子
不是全设备恢复。
作者: hobbylu    时间: 2010-01-19 10:16
用这个问题,也不会发生你所说的相关问题,把行数置为空就可以了
作者: andkylee    时间: 2010-01-19 10:29
原帖由 hobbylu 于 2010-1-19 10:16 发表
用这个问题,也不会发生你所说的相关问题,把行数置为空就可以了


将28114这一问题页的行数改为0,nextrno=0,freeoff=32。也是个不错的主意!
作者: feiachen    时间: 2010-03-17 18:17
两位高人,佩服佩服!

以前遇到过这样的报错,当时好像是改成-32768,重启后手动online database,然后做bcp导出整库表的,可能中间有部分表数据有问题




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2