Sybase的SYSLOGS日志满了进不了系统,如何清除日志启动系统

本文介绍了解决业务系统数据库无法正常启动的问题步骤。首先通过配置允许更新系统表;其次修改数据库状态重启服务;再处理满事务日志问题;最后恢复数据库状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

业务系统数据库不能正常启动,对于这一类问题,我们按照如下步骤解决:

第一步,启用allow updates to system tables这样可以使具有系统管理员角色的用户能够改变系统表并可创建和修改系统表的存储过程,其中系统表包括master数据库中所有Sybase提供的表以及用户数据库中所有以“sys”开头的表和在sysobjects表中其ID值小于或等于100的表。系统表的不正确变更会导致数据库损坏和数据丢失,修改系统表时务必要使用begin transaction来保护数据库不受可能损坏数据库的错误影响,完成修改后应立即禁用allow updates to system tables

 

1>sp_configure "allow update",1

2>go

第二步,Adaptive Server中的每个数据库在sysdatabases中都有相应的一行,安装Adaptive Server后,master数据库、model数据库、sybsystemprocstempdb数据库在sysdatabases中都将有相应的条目,如果已经安装审计功能,sybsecurity数据库也将在其中有相应的条目。修改sysdatabases表,将testdb的状态修改为-32768,然后在关闭Adaptive Server后重新启动Adaptive Server

 

1> update sysdatabases set status=-32768 where name = "testdb"

2>go

1>     shutdown

2>     go

 

第三步,由于事务日志已经很满,不能使用常规方法转储此事务日志,如果使用了dump transactiondump transaction with truncate_only命令,而命令又由于日志空间不足失败时,可以使用dump transaction的特殊选项with no_log,此选项可截断事务日志而不记录转储事务事件。所有dump tran with no_log都将在Adaptive Server错误日志中进行报告,这些消息包括执行此命令的用户ID、指示成功或失败的消息,no_log是唯一生成错误日志消息的转储选项。但是这个选项(包括with truncate_only)没有提供任何方法可恢复自从上次例行转储后提交的事务。

1>     use testdb

2>     go

1>     dump tran testdb with no_log

2>     go

 

第四步,修改sysdatabases表,将testdb的状态恢复为0然后禁用allow updates to system tables

1>     use master

2>     go

1>     update sysdatabases set status = 0 where name = "testdb"

2>     go

1>     sp_configure "allow update",0

2>     go

 

 

转载于:https://my.oschina.net/ytliyang/blog/681228

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值