日志满造成的故障
数据库在≡运行中,有一个大事务,比如→删除一个表(drop table),把数据库的日志撑满了,数@据库报错,不再运行。这是一个经常出现♀的问题,如果操作不当,比如停机(shutdown)那就挺♀危险的.
处理这类故障,最直接最安︼全的办法是增加"日志空间":
alter datbase your_db_name log on your_db_dev=xxxM
如果重启了,服∮务器就会报错,这个库就因为没有recovery而不可用,这时就需要修改系统表,把这个库的状态改为-32768,然后』清除日志。步骤如下:
1)sp_configure "allow updates",1
2)update master.sysdatabases set status = -32768 where name = "your_db_name"重启服务;
3)dump tran you_database_name with no_log
4)update master.sysdatabases set status = 0 where name ="your_db_name"
再重启服务,一般情况,ASE系统就可以使用了.
另外有几个注意事〓项:
1)如果日志中数据量很大,启动的时间可能很长,几十分钟,甚至更长;
2)日志满的是master数据库,那么需要打flag -T3607来代替直接改sysdatbases表;
3)如果用上述办法还不能修复,那就要从操作系统层面删除数据日志,这就有风险,必要是要通过bcp备份重要的↙表。