Chinaunix首页 | 论坛 | 博客
  • 博客访问: 878942
  • 博文数量: 219
  • 博客积分: 4813
  • 博客等级: 上校
  • 技术积分: 2359
  • 用 户 组: 普通用户
  • 注册时间: 2005-10-31 21:54
个人简介

All right, waiting for you to die, I'll laugh ...

文章分类

全部博文(219)

文章存档

2020年(1)

2016年(3)

2014年(4)

2013年(4)

2012年(4)

2011年(49)

2010年(126)

2009年(6)

2008年(16)

2007年(4)

2006年(1)

2005年(1)

分类: Sybase

2007-06-02 11:16:54

 数据库服务不能启动
 如何查找数据库启动失败原因
在实际环境中,数据库Server无法启动的原因很多,本文仅列出了几种常见的情况,供您参考。

首先,应检查Server的日志文件。不同版本缺省的日志文件如下(其中为Sybase Server的名称:
UNIX:
11.0*: $SYBASE/install/errorlog
11.5* 或 11.9*: $SYBASE/install/.log
12.0*SYBASE/ $SYBASE_ASE/install/.log
NT:
11.0* 11.5* 或 11.9*: %SYBASE%installerrorlog
12.0*: %SYBASE%ASE-12_0installerrorlog

·        CASE 1:
basis_dlock: file '/sybase/master.dat' already in use by a SQL Server
kernel kdconfig: unable to read primary master device
kernel kiconfig: read of config block failed
检查server是否已经启动( showserver, ps -u sybase 或NT service )
·        CASE 2:
dopen: open '/sybase/master.dat' failed, permission denied
kernel kdconfig: unable to read primary master device
kernel kiconfig: read of config block failed
检查master设备文件的所有者及权限

·        CASE 3:
ninit: All master network listeners have failed. Shutting down
检查network ip 及 port配置 ( netstat -a )

·        CASE 4:
kernel:kscsinit: connectivity library error. Operation: cs_ctx_alloc().
o        检查操作系统参数是否已经修改并重新启动操作系统 (参见安装手册)
若操作系统异常宕机,ASE未启动而$SYBASE/.krg已经存在, 删除该文件

 简单故障及排除方法
服务器启动失败,报告不能创建共享内存(UNIX平台):
解决方法:
检查Sybase主目录下的文件,将所有文件的所有者改为sybase帐户。
编辑sybase主目录下的名为ServerName.cfg文件,找到total memory的一行,检查其配置值是否过大。
重新启动数据库服务器。
·        服务器启动失败,报告不能建立网络监听(UNIX平台):
解决方法:
编辑Sybase主目录下的名为interfaces文件,检查相应服务器的网络端口是否和其它的服务器重复或使用的是系统已经使用的端口;
检查/etc/hosts的主机名和IP地址,对照interfaces中的主机名,是否存在冲突。
重新启动数据库服务器。
·        服务器启动失败,报告不能打开master设备文件(UNIX平台):
解决方法:
检查$SYBASE/$SYBASE_ASE/RUN_ServerName中的master设备文件的位置;
检查master设备文件路径及访问权限;
重新启动数据库服务器。

 master数据库日志满了,server无法启动,怎么办 (error 1105)

[ERROR]
Can't allocate space for object 'syslogs' in database 'master' because the 'system' segment is full.
If you ran out of space in syslogs, dump the transaction log. Otherwise, use ALTER DATABASE or sp_extendsegment
to increase the size of the segment.
[WORKAROUND]
1.在RUN_servername的文件中添加标识 : -T3607
(编辑RUN_servername文件,在文件末尾添加以上标识)
2.启动ASE
(要直接运行文件RUN_servername,且该运行窗口在执行以下操作时不能关闭)
3.截断日志
1>dump tran master with no_log
2>go
4.停止ASE服务
1>shutdown
2>go
5.删除RUN_servername文件末尾的标识 : -T3607
6.重新启动ASE

 SQL Server 10.x配置内存过大、Server不能启动时怎么办?         
 SQL Server使用的内存与机器的内存总数有一定的比例关系。如果Server使用内存太小,影响到SQL Server的性能,但内存配置过大超过一定比例时,导致SQL Server不能启动。
  在ISQL中,用sp_configure “memory”可以看到你的Server现在使用的内存大小。这个数字单位为Page,每一个Page为2K。参数memory在启动Server时被读入内存。所以memory被修改之后,必须shutdown Server,再重新启动Server,新的参数才生效。
1>sp_configure "memory",number_of_memory
2>go
1>reconfigure with override
2>go
1>shutdown with nowait
2>go  
  如果新的内存配置太大,SQL Server不能启动,那么必须修改Master设备上的内存配置参数。
  在$SYBASE/install目录下,使用buildmaster命令
  $buildmaster -d/path/master.dat -y cmemsize = XXX  
  其中XXX为内存页数。如果新的内存大小合适,SQL Server可以启动。        
数据库被挂起
如何解决数据库被挂起的问题(error 926)
  现象:Error 926
     Severity Level 14
     Error Message Text
     Database 'xx' cannot be opened - it has been marked SUSPECT by recover Explanation
   (1) 当你使用Transact_SQL命令操作这个数据库的数据时, 出现这个信息, 这是一个严重的错误, 如果你要使用这个数据库的数据, 必须改正这个错误.
   (2) 启动Backup Server, 后备master数据库

  1>dump database master to "/usr/sybase/master.dup"
  2>go
   (3) 用isql登录到ASE, 须用sa帐号 (本文以pubs2数据库为例)
  1>sp_configure "allow updates", 1
  2>go
  1>begin tran
  2>go
  1>use master
  2>go
  1>update sysdatabases
  2>set status = -32768
  3>Where name="pubs2"
  4>go
   如果得到(1 row affected),则
  1>commit
  2>go
   否则
  1>rollback
  2>go
(4)重新启动ASE.

注:ASE重新启动之后,当发现数据库本身存在不可恢复的问题时,如数据页损坏等,且没有完好的数据库备份,一定要用bcp...out备份用户数据库数据。此时,以下步骤省略,并按照“如何删除坏的用户数据库”文章删除此数据库。之后重建此数据库,恢复备份。
否则,按以下步骤继续操作:

  用sa帐号注册到ASE.
  1>begin tran
  2>go
  1>use master
  2>go
  1>update sysdatabases
  2>set status=0
  3>Where name="pubs2"
  4>go
  如果得到(1 row affected),则
  1>commit
  2>go
   否则
1>rollback
  2>go

  1>sp_configure "allow updates" ,0
  2>go
   (5)重新启动ASE.
(6) 如果你的数据库原来有dboption(例如"select into","trunc log on chkpt"等), 你需要重新设置这些option.

(7) 当数据库已经恢复可使用状态后,运行dbcc命令检查数据库的一致性(参照“如何检查数据库中数据一致性”文章)

(8) 备份用户数据库
   例如:
  1>dump database pubs2 to "/usr/sybase/pubs2.dup"
  2>go


阅读(5954) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~