免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2447 | 回复: 5
打印 上一主题 下一主题

SYBASE 数据库问题 无法访问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-03-11 18:30 |只看该作者 |倒序浏览
打开数据库报错

Msg 921, Level 14, State 1:
Line1:
Database 'DName' has not been revovered yet - Please wait and try again

无法打开数据库!!!

请指点!!!


Errorlog 记录

00:00000:00001:2004/03/12 08:33:49.45 server  Database 'tempdb' is now online.
00:00000:00001:2004/03/12 08:33:49.84 server  Recovering database 'sybsystemprocs'.
00:00000:00001:2004/03/12 08:33:50.06 server  Checking external objects.
00:00000:00001:2004/03/12 08:33:50.08 server  The transaction log in the database

'sybsystemprocs' will use I/O size of 2 Kb.
00:00000:00001:2004/03/12 08:33:50.16 server  Database 'sybsystemprocs' is now online.
00:00000:00002:2004/03/12 08:33:50.20 kernel  network name 192.168.70.2, type ether, port

5000, filter NONE
00:00000:00001:2004/03/12 08:33:50.75 server  Recovering database 'dbname'.
00:00000:00001:2004/03/12 08:33:56.48 server  Redo pass: 6000 records done (16%); 30698

records left.
00:00000:00001:2004/03/12 08:33:56.66 server  Redo pass: 12000 records done (32%); 24698

records left.
00:00000:00001:2004/03/12 08:33:57.03 server  Redo pass: 18000 records done (49%); 18698

records left.
00:00000:00001:2004/03/12 08:33:57.23 server  Redo pass: 24000 records done (65%); 12698

records left.
00:00000:00001:2004/03/12 08:33:57.44 server  Redo pass: 30000 records done (81%); 6698

records left.
00:00000:00001:2004/03/12 08:33:57.69 server  Redo pass: 36000 records done (98%); 698

records left.
00:00000:00001:2004/03/12 08:33:57.81 server  Error: 3474, Severity: 21, State: 1
00:00000:00001:2004/03/12 08:33:57.81 server  During redo the page timestamp value is less

than old timestamp from log. Page #=3167, object id = 23, page timestamp=0000 03491be0. Log

old timestamp=0000 034bf28f.
00:00000:00001:2004/03/12 08:33:57.82 server  Error: 3414, Severity: 21, State: 1
00:00000:00001:2004/03/12 08:33:57.82 server  Database 'dbname' (dbid 4): Recovery failed.

Check the SQL Server errorlog for further information as to the cause.
00:00000:00001:2004/03/12 08:33:57.82 server  Recovery complete.
00:00000:00001:2004/03/12 08:33:57.82 server  SQL Server's default unicode sort order is

'binary'.
00:00000:00001:2004/03/12 08:33:57.82 server  SQL Server's default sort order is:
00:00000:00001:2004/03/12 08:33:57.82 server          'altnoacc_cp850' (ID = 39)
00:00000:00001:2004/03/12 08:33:57.82 server  on top of default character set:
00:00000:00001:2004/03/12 08:33:57.82 server          'cp850' (ID = 2).
00:00000:00001:2004/03/12 08:33:57.82 server  Master device size: 30 megabytes, or 15360

virtual pages. (A virtual page is 2048 bytes.)


服务能正常启动,但数据库无法启动!

论坛徽章:
0
2 [报告]
发表于 2004-03-12 16:54 |只看该作者

SYBASE 数据库问题 无法访问

你的数据库dbname没有online

论坛徽章:
0
3 [报告]
发表于 2004-03-12 17:00 |只看该作者

SYBASE 数据库问题 无法访问

:-) 你的数据库是什么版本

论坛徽章:
0
4 [报告]
发表于 2004-03-12 21:23 |只看该作者

SYBASE 数据库问题 无法访问

数据库回滚失败啊。

论坛徽章:
0
5 [报告]
发表于 2004-03-13 00:12 |只看该作者

SYBASE 数据库问题 无法访问

转贴:

    你按照下面的方法作一下,看是否能够正常启动起来。

1. 使用 install目录下 的 RUN 文件启动数据库服务器(如果服务已经启动,可跳过此步骤)
2. 使用isql连接进入数据库服务器
   isql -Usa -Ppasswd -S server_name
   1>;sp_configure 'allow update',1
   2>;go

   1>;use master
   2>;go
   1>;sp_helpdb DB_NAME
   2>;
   记下此处查询出的数据库选项 (例如:select into/bulkcopy等)
   
   1>;begin tran
   2>;go
   1>;update sysdatabases set status = -32768 where name = 'DB_NAME'   (注意:一定要加上数据库名称条件,切记,最好使用事务)
   2>;go
如果显示 (1 row affected),commit,否则 rollback
   1>;commit   
   2>;go

   1>;shutdown with nowait
   2>;go

3. 重新重复步骤1,启动数据库服务器,注意观察日志中是否显示 在 recovery database DB_NAME 时使用bypass状态,如果正常,这种情况下,数据库服务器应该能够完全启动

4. 使用isql连接进入数据库服务器
   isql -Usa -Ppasswd -S server_name
   1>;use master
   2>;go
   1>;dump tran DB_NAME with no_log ( dbcc rebuild_log(DBNAME,1,1) )
   2>;go

   1>;update sysdatabases set status = 0 where name = 'DB_NAME'   (注意:一定要加上数据库名称条件,切记)
   2>;go
   
   1>;shutdown with nowait
   2>;go

5. 重新重复步骤1,启动数据库服务器,注意观察日志中是否显示 recovery database DB_NAME 成功,DB_NAME数据库online

6. 恢复数据库选项
使用isql连接进入数据库服务器
   isql -Usa -Ppasswd -S server_name
   1>;use master
   2>;go
   1>;sp_dboption DB_NAME,'select into',true
   2>;go
   1>;use DB_NAME
   2>;go
   1>;checkpoint
   2>;go

如果有其他选项,依法处理

先试步骤四中的 dump tran with no_log 如果不行就用后面括号中那个命令 dbcc rebuild_log(DBNAME,1,1)
dbcc rebuild_log,如果还不行,只有恢复备份了

如果没有备份,只能在重新做1到3步骤,然后使用bcp将数据库中所有数据备份出来,然后重新创建数据库了。



强行截断日志的方法能够清除系统中日志的错误,让数据库正常online,但也有可能造成数据库中用户表甚至系统表的损坏,所以建议在数据库正常online后进行全库的DBCC检查(比如dbcc checkdb、dbcc checkalloc等)以确保正常运行。

论坛徽章:
0
6 [报告]
发表于 2004-03-13 11:20 |只看该作者

SYBASE 数据库问题 无法访问

谢谢大家,我按照Blackrose兄弟的步骤己能正常启动数据库

正如Blackrose所说,我只能做到第三步,第四步将status改为0后又出错,现在数据已经导出!

再次感谢大家!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP