昨天下午领导通知去“救火”,Solaris 下 Sybase数据库只能读取,不能写入。中午没吃饭直奔现场。到达现场,听着领导将到数据的重要性,都不敢动数据库了。
dbdata数据库状态显示不能Online,由于日志空间系统慢导致Sybase数据库不能操作,同时也不能添加日志文件,提示数据文件超过最大设备数(吃了集成商的亏了!),查看"number of devices"参数,是默认值,也就是最多只能添加10个设备,而现在已经都10个了。
说干就干,先停止数据库修改最大设备数(为问题埋下祸水,应该先对事务日志使用dump with no_truncate 方式删除,千万不要启动sybase数据库)。
修改$SYB_HOME/ASE_12.5/dbserver.cfg的"number of devices = 100",启动数据库,提示不能正确online数据库。
没有头绪,在网上搜索,网络还是个好东西,很快就有解决数据库不能Online的方法:将数据库质疑后,启动Sybase数据库,使用截断日志的方法Online数据库。
使用isql登录Server,需要使用SA帐号
1>sp_configure "allow updates to system tables",1 --让系统数据库可以更改
2>go
1>update master..sysdatabases
2>set status=-32768
3>where name="dbdata" --dbdata数据库处于质疑状态
4>go
1>shutdown with nowait
2>go |
重启Server,再用sa帐号登录到server上,注意观察系统日志,位于$SYB_HOME/ASE_12.5/install/dbserver.log,当系统完全启动后,进行以下操作。
1>update master..sysdatabase
2>set status=0
3>where name="dbdata"
4>go
1>sp_configure "allow updates",1
2>go |
重新设置数据库原有的选项。Online 数据库,数据库不能online。重试若干次,问题依旧。
分析问题:
此问题为数据库日志满导致数据库不能online数据库,应添加日志文件,保证日志能够正常写入。
正常状态下不能online 数据库,在质疑状态下才能online。在质疑状态下,将日志文件添加到数据库中,启动数据,依旧不能Online。在质疑状态下不能使用no_truncate方式截断日志,只能使用no_log方式。
质疑数据库,使用-32768模式启动数据库
1>dump trun '/backup/dbdatalog.bak' with no_log --此方法非常危险,不是万不得已,不要使用。 2>go 1>update master..sysdatabase set status=8 where name='dbname' --状态8为事务在检查点后截断日志 2>go 1>sp_configure "allow updates to system tables",0 2>go 1>shutdown
|
至此,数据库恢复正常,添加日志文件到dbdata数据库中,系统可以正常使用。
总结:
1.系统在安装配置完成后要做基本的参数调整,包括设备数、cache大小等。
2.系统出现问题有不能急于处理问题,应该对所处的问题进行详细的分析,避免走弯路。
阅读(4924) | 评论(1) | 转发(0) |