1.日志情况:master设备文件出错,数据库无法启动
00:00000:00001:2015/06/03 11:43:58.25 server Error: 625, Severity: 21, State: 100:00000:00001:2015/06/03 11:43:58.25 server Adaptive Server failed to retrieve a row via its RID in database 'master' because the entry in the offset table for that RID is less than or equal to 0. Rid pageid = 0x9ba; row num = 0x3d. Page pointer = 0x0x2b1b584b2800, pageno = 2490, status = 0x11, objectid = 8, indexid = 0, level = 0.00:00000:00001:2015/06/03 11:43:58.25 server Cannot recover the master database, exiting.00:00000:00001:2015/06/03 11:43:58.26 kernel ueshutdown: exiting
2.修改RUN文件,增加参数-T3607
[root@master install]# cat RUN_localhost
#!/bin/sh
#
# ASE page size (KB): 2048
# Master device path: /opt/sybase/data/master.dat
# Error log path: /opt/sybase/ASE-12_5/install/localhost.log
# Configuration file path: /opt/sybase/ASE-12_5/localhost.cfg
# Directory for shared memory files: /opt/sybase/ASE-12_5
# Adaptive Server name: localhost
#
/opt/sybase/ASE-12_5/bin/dataserver \
-d/opt/sybase/data/master.dat \
-e/opt/sybase/ASE-12_5/install/localhost.log \
-c/opt/sybase/ASE-12_5/localhost.cfg \
-M/opt/sybase/ASE-12_5 \
-slocalhost \
-T 3607 \
3.启动数据库
4.bcp out master库中的关键7张表
bcp master..sysdevices out sysdevices.txt -Slocalhost -Usa -P -c
bcp master..sysdatabases outsysdatabases.txt-S localhost -Usa -P -c
bcp master..sysusages outsysusages.txt-Slocalhost -Usa -P -c
bcp master..syslogins outsyslogins.txt-Slocalhost -Usa -P -c
bcp master..syslogins outsysloginroles.txt-Slocalhost -Usa -P -c
bcp master..sysconfigures outsysconfigures.txt-Slocalhost -Usa -P -c
bcp master..syscharsets outsyscharsets.txt-Slocalhost -Usa -P -c
a.备份关键文件
<pre name="code" class="plain">cd $SYBASE/data
mv master.dat master.dat.bak
mv sybsystemdb.datsybsystemdb.dat.bak
mv sysprocs.datsysprocs.dat.bak
mv tempdb.dattempdb.dat.bak
mv $SYBASE/ASE-12_5/etoh2.cfg$SYBASE/ASE-12_5/etoh2.cfg.bak
mv $SYBASE/interfaces$SYBASE/interfaces.bak
b.通过srvbuild重建
<pre name="code" class="plain">[root@master ASE-12_5]# which srvbuild
/opt/sybase/ASE-12_5/bin/srvbuild
[root@master ASE-12_5]# pwd
/opt/sybase/ASE-12_5
[root@master ASE-12_5]# srvbuild -r sqlsrv.res
Building Adaptive Server 'LOCALHOST':
Writing entry into directory services...
Directory services entry complete.
Building master device...
Master device complete.
Writing RUN_LOCALHOST file...
RUN_LOCALHOST file complete.
Starting server...
Server started.
Building sysprocs device and sybsystemprocs database...
sybprocs device and sybsystemprocs database created.
Running installmaster script to install system stored procedures...
installmaster: 10% complete.
installmaster: 20% complete.
installmaster: 30% complete.
installmaster: 40% complete.
installmaster: 50% complete.
installmaster: 60% complete.
installmaster: 70% complete.
installmaster: 80% complete.
installmaster: 90% complete.
installmaster: 100% complete.
installmaster script complete.
Creating two-phase commit database...
Two phase commit database complete.
Installing common character sets (Code Page 437, Code Page 850, ISO Latin-1,
Macintosh and HP Roman-8)...
Character sets installed.
Setting server name in Adaptive Server...
Server name added.
Server 'LOCALHOST' was successfully created.
6.删除步骤3中bcp out出来的文件中有关master、tempdb、model、sybsystemdb、sybsystemprocs系统库(srvbuildres创建出来)部分的内容
(因为是测试环境,所以我删除了sysdatabase,sysdevices,sysusage中的有关数据)
7.修改RUN文件,去掉-T3607的参数,单用户重启
<pre name="code" class="plain">[root@master install]# isql -Usa -P -Slocalhost -w3000 -m
1> sp_configure 'allow update',1
2> go
8.bcp in 原来导出的7张表(我测试只导入了sysdatabases,sysdevices,sysusage),然后重启,测试,发现用户数据库可以正常访问,用户表可以正常访问