Sybase数据库修复及恢复sa口令的方法

栏目:Sybase 来源:网络 关注:0 时间:2019-08-16

Sybase数据库管理系统中数据库损坏后,重新建立数据库的时间比较长,这将给应用(特别是对时间要求特别严格的应用,如金融、证券等)造成很大的损失。而如果在应用中遗忘超级用户sa口令,更会给系统管理带来极大的不便,甚至很多操作都无法进行。
这里介绍一种简便的Sybase数据库修复及恢复sa口令的方法。以下假定Server能正常启动,Server名为Sybase,数据库名为demodb。

Sybase数据库修复分为两种情况:
一、数据库所用的设备正常,而库demodb的状态为suspect。
1、以sa注册
iSQL -u sa -P
2、修改Server属性,置系统表为允许修改该状态。
sp_configure "allow updates",1
go
recofigure with override
go
3、修改数据库的状态,置数据库状态为Server启动时不检测。
update master.sysdatabases set status = -32768
where name = "demodb"
go
4、重启Server。
5、修改数据库的状态,置数据库状态为正常。
update master.sysdatabases set status = 0
where name ="demodb"
go
6、修改Server属性,置系统表为不允许修改状态。
sp_configure "allowupdates",0
go
reconfigure with override
go
7、再次重启Server。
至此,如果数据库能够正常,则恢复完毕。
以上步骤中,也可以用单用户模式启动Server,命令为startServer -m,而不必修改Server的"allow updates"属性。Sybase 11及以上版本的Server只需重启,不需要执行reconfigure with override。如果上述方法仍不能恢复数据库,则只能使用dbcc命令删除该数据库,然后重新建立。
二、数据库所占用的设备不正常,库的状态为suspect 使用sp_helpdb和sp_helpdevice命令查出数据库设备的逻辑名、物理名、设备号、大小等信息。
如果上述命令无法查出数据库设备的信息,可使用select * from master.sydatabases和select * from master.sysdevices。然后用disk reinit重建设备。最后,按照1的步骤恢复数据库。
上述第一种情况数据库损坏程度较轻,对数据库内容检查后即可使用。而在第二种情况下,如果数据库的日志建立在不同的设备上,只是数据库的日志设备损坏,数据库的损坏程度会较轻,只是有些交易无法恢复;如果数据库的设备损坏,整个数据库的内容会全部丢失,其中表、表的内容、存储过程都需要重建。所以建议数据库和数据库的日志建立在不同的设备上。
系统错误日志errorlog文件存有Sybase数据库系统的错误信息,系统出错时应先检查此文件,据此判断错误原因,找出解决办法,以免误操作。

恢复sa口令
编辑RUN_Sybase,在dataServer启动行尾加入参数 -psa,然后存盘退出,执行startServer -f RUN_Sybase重启Server,系统会给超级用户sa一个随机的密码,以此密码注册进入Server,然后使用sp_password命令修改密码即可。

本文标题:Sybase数据库修复及恢复sa口令的方法
本文地址:http://www.q0738.com/sybase/1321.html