|
实用技巧
SYBASE数据库故障恢复几例
郑州铁路局计算中心
郑明
----
[本文为摘略,全文可下载,Zip 10KB]
----
一、引言
----
铁路电子售票系统的建设中,采用的都是SYBASE数据库,在车站具体使用的过程中,发现了一些问题,干扰了售票工作的正常进行。笔者在处理这些问题时,积累了一些经验和技巧,现整理归纳如下,以供将来大家遇到这些问题时,不用走弯路,使生产系统迅速恢复。
----
二、故障一
----
1、现象
----
SYBASE数据库启动后,无法正常使用,各种命令均不能使用。
----
2、分析
----
SYBASE数据库有一个日志文件/u/sybase/install/errorlog,它记载了所有有关数据库方面的出错信息,经检查其中有如下出错信息:
... ...
----
从该信息中可以明显看到,数据库启动时无法打开sybsystemprocs库,该库被标志为“挂起”。
----
Sybsystemprocs库主要是存放系统的存储过程,SYBASE数据库提供的系统命令均在此库中,它的损坏必然导致数据库无法正常使用了。
----
3、解决办法
----
(1) 修改SYBASE.cfg文件,设置SYBASE数据库允许修改系统参数
----
$ vi SYBASE.cfg
----
查找“allow updates”,将其值修改为1(缺省为0)
----
allow updates to system tables = DEFAULT该为1
----
重新启动数据库
----
(2)用isql登录到SQL Server, 修改master库的系统表sysdatabases中对应sybsystemprocs库的status的值为-32768,通知SYBASE强行启动sybsystemprocs库
... ...
----
(3) 重新启动数据库正常后,再将SYBASE.cfg文件中“allow updates ”的值改为0。
这样sybsystemprocs库被挂起的故障就解决了。
----
三、故障二
----
1、现象
----
此现象表现在我们的双机热备系统(SCO UNIX)中,SYBASE系统在一台主机上运行一段时间后(几个小时、一天、二天,无规律),切换到另一台主机上,运行一段时间后,又切换到这台主机上运行,如此频繁切换。
----
2、分析
----
刚开始一直认为是公用磁盘柜的问题,后来又怀疑双机热备软件被一些错误的信号引起切换,经盘柜公司的技术人员和我仔细检查,查明引起双机软件切换的原因是因为RUN_SYBASE进程掉下造成的。那么是什么原因使SYBASE系统进程掉下呢?检查SYBASE的日志文件errorlog,发现有如下的错误信息:
... ...
----
每一次故障时,这些错误信息都与执行CS_Fetch_Alien_Train24存储过程有关。执行该存储过程后导致SYBASE的内部堆栈出现问题,进而使SYBASE数据库系统进程掉下。
----
3、解决办法
----
问题出在CS_Fetch_Alien_Train24存储过程!经查该存储过程结构为两层循环:
... ...
----
在内层循环中定义了3个变量,会不会是在多次循环中,这几个局部变量耗尽堆栈所至?我们将循环内变量的定义移到两层循环的外面试一下。具体做法是:
... ...
----
经过这样处理后,该系统日夜运行至今,再没有出现该类型的错误。
----
四、结束语
----
SYBASE数据库系统应该是一个稳定的系统,但是从以上的故障二中,我们也看到了,应用程序的出错也可能引起整个数据库系统的崩溃。象这样的系统出错,不是配置双机、RAID盘等硬件容错技术就能解决的。我建议各级维护人员要加强重要数据的备份,一旦在计算机出现重大故障时能迅速恢复,将损失降到最低,从而确保车站铁路售票生产系统的不间断运行。
|