zoukankan      html  css  js  c++  java
  • Sybase ASE无响应的又一个情况

        昨天下午,客户那边的系统管理员给我电话,说有套系统的SYBASE数据库最近有点怪,总是时不时莫名其妙地就忽然卡死,有可能一下子就自动恢复了,也有可能后面一直卡住,只好重启。根据客户反映的状况,初步判断可能的原因:1、数据库的日志空间满了,导致所有进程被挂起。2、临时数据库(tempdb)空间满,导致所有进程全部都挂起。3、出现大面积的阻塞,导致绝大部分的进程都被阻塞了,处在无响应的状态。4、连接数(number of user connections)达到上限,导致新的连接无法得到响应。

        没几分钟,客户那边就发了日志跟数据库的XXX.cfg配置文件过来了。经过对日志文件进行分析,发现数据库几乎一直都在日志文件里刷出这样的信息:Attempt by user 39 to dump xact on db ABC with NO_LOG。该日志是在执行dump transaction XXX with no_lo的时候才会发生的操作,因此基本可以判断肯定是跟ABC库的日志段的情况有关系了。
        经过与客户初步进一步沟通后,决定直接到现场进行排查。到了现场以后,通过查看日志段的情况:sp_helpsegment ‘logsegment',发现日志信息存在问题,居然可用空间已经变成了负数。再进一步检查该数据库的相关选项,发现该数据库已经打开了自动截断日志的开关,再加上日志段的可用信息已经错误,导致了数据库一直不断地想去尝试执行dump transaction XXX with no_log去截断日志。
            问题解决办法:修正日志段可用页数的错误,重算日志段的可用信息。
            解决过程:
            1、打开系统表更改的开关.    sp_configure 'allow update',1
            sp_configure "allow updates", 1 
       go 
            2、修改数据库状态
      1>use master
      2>go
      1>update sysdatabases 
      2>set status = -32768 
      3>Where name="ABC" 
      4>go
           3、关闭数据库
           4、在启动文件中最后一行回车换行并添加启动参数:-T7408
           5、重启数据库
           6、关闭系统表更改的开关.    sp_configure 'allow update',0
           7、恢复数据库正常状态:
           8、修改数据库状态
      1>use master
      2>go
      1>update sysdatabases 
      2>set status = 0
      3>Where name="ABC" 
      4>go
           9、手工截断日志:dump transaction ABC with truncate_only
           10、检查是否恢复正常:sp_helpsegment ‘logsegment'
    -------------------------------------------- 快乐地度过每一天,踏实、认真地做好每一件事。
  • 相关阅读:
    [开源]WinForm 控件使用总结
    类型转换一种处理方式
    [算法]斐波那契数列
    [算法]1 − 2 + 3 − 4 + …
    [算法]冒泡排序
    [开源]基于Log4Net简单实现KafkaAppender
    基于Log4Net本地日志服务简单实现
    项目打jar包,怎么把第三放jar包一起打入
    将博客搬至CSDN
    将字段转换为阿拉伯数字
  • 原文地址:https://www.cnblogs.com/o0JSP/p/3511902.html
Copyright © 2011-2022 走看看