- 論壇徽章:
- 1
|
00000000 d3090000 8f960000 11db0401 8f960000 f3730501 c4fbbb20 00085400 6d617374 65720081
windows平臺(tái)解決方法:
dbcc traceon(3604)
go
dbcc tablealloc(sysdatabases) 或 select first from sysindexes where id = object_id("sysdatabases" and indid=1\\找到數(shù)據(jù)頁(pageno)
go
dbcc page(master,pageno,1,0) \\從硬盤上拿這頁內(nèi)容
go
master的如下:
Offset 202 - row ID=0 row length=84 # varlen cols=10
215690CA ( 0): 0a000100 01000000 008001 d3090000 ................
215690DA ( 16): 8f960000 11db0401 8f960000 f3730501 .............s..
215690EA ( 32): c4fbbb20 00085400 6d617374 65720081 ... ..T.master..
215690FA ( 4 : 00000000 00000000 00000000 00000000 ................
2156910A ( 64): 00000000 00000000 0b484440 40403c38 .........HD@@@<8
2156911A ( 80): 34302e28 40.(
上面008001代表-32768,拷貝這些代碼,用一個(gè)16進(jìn)制編輯器編輯你的master文件,查找這些代碼,把008001改為000000,重啟sybase,master庫正常,可以使用了
在sybase ase 12.5.2+windows 2003上通過。
unix下如果裸設(shè)備可能比較麻煩,dd精確定位復(fù)制有可能行。
多說幾句:
1 這種問題最好的方法是rebuildmaster,bcp out old sysdatabase,sysusages等systable, bcp in newmaster .這里只是一個(gè)辦法。
2 問題的關(guān)鍵是BYPASS RECOVERY mode下無法正常執(zhí)行事物,bcp out可以,in不行。dbcc delete_row刪除記錄沒有問題,當(dāng)時(shí)好像只能刪和看,dbcc bytes,dbcc buffer等都只能看,照理應(yīng)該有命令可以改dbcc bytes出來的東東,找遍dbcc未果,哪位大大知道請(qǐng)賜教,再問問“曬被子”吧。直接有dbcc改就方便了
3 原以為改master文件后會(huì)啟動(dòng)是不是會(huì)再做什么一致性校驗(yàn),但改了就ok了,總認(rèn)為不會(huì)這么簡單,--賤
4 動(dòng)力還是因?yàn)閼校瑀ebuildmaster還是麻煩,打字太累了,多說了幾句,不對(duì)大家拍磚。
[ 本帖最后由 echoaix 于 2006-3-21 11:25 編輯 ] |
|