发新话题
打印

[新手资料] Sybase数据库问题集

Sybase数据库问题集

Q.如何解决数据库被标记为"suspect"的问题之一( 一般解决方案)?

  A.现象: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_dump.19991201"

  2>go

  (3) 用isql登录到SQL Server, 须用sa帐号 (本文以pubs2数据库为例)

  1>sp_configure "allow updates", 1

  2>go

  1>begin tran

  2>go

  1>update master..sysdatabases

  2>set status = -32768

  3>Where name="pubs2"

  4>go

  如果得到(1 row affected),则

  1>commit

  2>go

  否则

  1>rollback

  2>go

  (4.1)如果条件允许,bcp out用户数据或dump用户数据库

  (5.1)这时重新启动SQL Server, 再有sa帐号注册到SQL Server.

  1>begin tran

  2>go

  1>update master..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

TOP

(4) 如果你的数据库原来有dboption(例如"select into","trunc log on chkpt"等), 你需要重新设置

  这些option..

  (5) 运行dbcc命令检查数据库的一致性

  isql -Usa -P -i dbcc.sql -o dbcc.out

  dbcc.sql文件示例:

  dbcc checkdb("pubs2")

  go

  dbcc checkalloc("pubs2")

  go

  dbcc checkcatalog("pubs2")

  go

  grep Msg dbcc.out

  6) 后备用户数据库

  1>dump database pubs2 on "/usr/sybase/pubs2_dump.19991201"

  2>go

  Q.如何解决数据库被标记为"suspect"的问题之二( 数据库设备损坏时的解决方案 )?

  A.现象: 926错误产生的原因有几种。本文讨论当数据库设备初始化失败( 设备文件丢失或文件读写权限

  不正确 )时,导致数据库恢复失败,出现926错误的情况。

  (1) 请先恢复数据库设备及读写权限。

  (2) 启动Backup Server, 后备master数据库

  1>dump database master to "/usr/sybase/master_dump.19991201"

  2>go

  3) 用isql登录到SQL Server, 须用sa帐号 (本文以pubs2数据库为例)

  1>sp_configure "allow updates", 1

  2>go

  1>begin tran

  2>go

  1>update master..sysdatabases

  2>set status = status - 256

  3>Where name="pubs2"

  4>go

  如果得到(1 row affected),则

  1>commit

  2>go

  否则

  1>rollback

  2>go

TOP

4) 重新启动SQL Server, 运行dbcc命令检查数据库的一致性编辑生成dbcc.sql文件:

  dbcc checkdb("pubs2")

  go

  dbcc checkalloc("pubs2")

  go

  dbcc checkcatalog("pubs2")

  go

  isql -Usa -P -i dbcc.sql -o dbcc.out

  grep Msg dbcc.out

  (5) 后备用户数据库

  1>dump database pubs2 on "/usr/sybase/pubs2_dump.19991201"

  2>go

  Q.如何解决ASE11.5装载或备份数据库报3230的错误?

  A.用sp_dropdevice或sybase central删除逻辑设备后,不重启服务器,不回收虚拟设备号,重用它建立

  设备,新建数据库。这时dump&load数据库会出3230错误。这是ASE11.5的BUG,过去不重新启动服务器,

  老的虚拟设备号不能使用,现在服务器不提示错误。但dump&load数据库会出现3230错误。

  解决办法是重启服务器,3230错便会消失。

  Q.如何删除坏的用户数据库?(以pubs2为例)

  A.当使用drop database无法删除数据库时,使用本文所示方法可以删除。

  (1)使用isql以sa注册SQL server

  (2)设置允许修改系统表

  1>sp_configure "allow updates",1

  2>go

  (3)把 要删除的用户数据库置为"suspect"状态

  1>use master

  2>go

  1>begin tran

  2>go

  1>update sysdatabases set status=256

  2>where name="pubs2"

  3>go

  如果得到(1 row affected),则

  1>commit

  2>go

  否则

  1>rollback

  2>go

  (4)重启server,并用isql以sa注册。

  (5)删除数据库

  1>dbcc dbrepair(pubs2,dropdb)

  2>go

  (6)恢复允许修改系统表

  1>sp_configure "allow updates",0

  2>go

  (7)结束

TOP

发新话题