xietong007 发表于 2014-05-26 11:03

突然掉电导致sybase master库异常求救

我们一台服务器上周突然掉电后,sybase就无法启动了,启动日志如下:

00:00000:00000:2014/05/26 18:36:30.57 serverProc header memory allocated 40632 pages for each per engine cache
00:00000:00000:2014/05/26 18:36:33.40 serverSize of the 8K memory pool: 1625680 Kb
00:00000:00000:2014/05/26 18:36:33.40 serverMemory allocated for the default data cache cachelet 1: 1625680 Kb
00:00000:00000:2014/05/26 18:36:33.40 kernelEnabling Linux Native Kernel asynchronous disk I/O strategy.
00:00000:00000:2014/05/26 18:36:33.40 kernelEnabling batch I/O using Linux Native Kernel asynchronous disk I/O strategy.
00:00000:00000:2014/05/26 18:36:33.40 kernelInitializing virtual device 0, '/zxindata/sybase/data/master.dat' with dsync 'off'.
00:00000:00000:2014/05/26 18:36:33.40 kernelVirtual device 0 started using asynchronous (with DIRECTIO) i/o.
00:00000:00000:2014/05/26 18:36:33.40 serverLoaded default Unilib conversion handle.
00:00000:00000:2014/05/26 18:36:33.41 kernelEither the config parameter 'use security services' is set to 0, or ASE does not support use of external security mechanisms on this platform. The Security Control Layer will not be initialized. No external security mechanisms will be supported.
00:00000:00000:2014/05/26 18:36:33.42 kernelBegin processing to generate RSA keypair.
00:00000:00000:2014/05/26 18:36:33.43 kernelUnix interval timer enabled for sysclk interrupts.
00:00000:00000:2014/05/26 18:36:33.46 kernelCompleted processing to generate RSA keypair.
00:00000:00000:2014/05/26 18:36:33.46 kernelEncryption provider initialization succeeded on engine 0.
00:00000:00000:2014/05/26 18:36:33.46 kernelengine 0, os pid 2229online
00:00000:00000:2014/05/26 18:36:33.46 serverNo active traceflags
00:00000:00001:2014/05/26 18:36:33.47 kernellibomni1 - Component Integration Services: using 'Sybase Client-Library/15.0/P-EBF16721 ESD #18/DRV.15.0.7/Linux x86_64/Linux 2.4.21-27.ELsmp x86_64 Native Threads/BUILD1500-116/OPT/Sun Mar 22 23:34:35 2009'
00:00000:00001:2014/05/26 18:36:33.47 serverOpening Master Database ...
00:00000:00001:2014/05/26 18:36:33.48 serverLoading ASE's default sort order and character set
00:00000:00001:2014/05/26 18:36:33.49 serverRecovering database 'master'.
00:00000:00001:2014/05/26 18:36:33.49 serverStarted estimating recovery log boundaries for database 'master'.
00:00000:00001:2014/05/26 18:36:33.49 serverDatabase 'master', checkpoint=(3017, 19), first=(3017, 19), last=(3017, 37).
00:00000:00001:2014/05/26 18:36:33.49 serverCompleted estimating recovery log boundaries for database 'master'.
00:00000:00001:2014/05/26 18:36:33.49 serverStarted ANALYSIS pass for database 'master'.
00:00000:00001:2014/05/26 18:36:33.49 serverCompleted ANALYSIS pass for database 'master'.
00:00000:00001:2014/05/26 18:36:33.49 serverLog contains all committed transactions until 2014/05/24 00:30:56.23 for database master.
00:00000:00001:2014/05/26 18:36:33.49 serverStarted REDO pass for database 'master'. The total number of log records to process is 19.
00:00000:00001:2014/05/26 18:36:33.49 serverError: 3474, Severity: 21, State: 1
00:00000:00001:2014/05/26 18:36:33.49 serverDuring redo the page timestamp value is less than old timestamp from log. Page #=241, object id = 30, page timestamp=0000 10000f703. Log old timestamp=0000 10000f713. Log record marker = (3017, 21).
00:00000:00001:2014/05/26 18:36:33.49 serverCannot recover the master database, exiting.
00:00000:00001:2014/05/26 18:36:33.49 kernelueshutdown: exiting


尝试了在RUN_xxx文件中加入-T3607参数后启动,并使用dump tran master with no_log命令,该命令也无效:

1> dump tran master with truncate_only
2> go
Msg 4237, Level 16, State 1:
Line 1:
Cannot dump master database's log as distributed transaction resolution is not
complete yet. Please retry later.

还请各位大侠看看有没有什么办法恢复?

谢谢!


ceozenliu 发表于 2014-05-26 15:52

用-T3607進去後,試一下:dbcc rebuild_log(master,1,1)

xietong007 发表于 2014-05-26 16:20

ceozenliu 发表于 2014-05-26 15:52 static/image/common/back.gif
用-T3607進去後,試一下:dbcc rebuild_log(master,1,1)


sybase@SCP2:~/ASE-15_0/install> isql -Usa -P'db10$ZTE'
1> dbcc rebuild_log(master,1,1)
2> go
Database 1 has not been opened so rebuild of log is impossible.
DBCC execution completed. If DBCC printed error messages, contact a user with
System Administrator (SA) role.


试了一下这种办法,提示无法重建log,因为数据库没有打开。 还有没有其他什么招呢? 谢谢!

ceozenliu 发表于 2014-05-26 16:48

如果有備份的master,就重建master,如果沒有的話,那麼就要聯繫sybase了

xietong007 发表于 2014-05-26 16:52

ceozenliu 发表于 2014-05-26 16:48 static/image/common/back.gif
如果有備份的master,就重建master,如果沒有的話,那麼就要聯繫sybase了

你好! 目前就是没有master的备份文件。所以看看有没有其他什么办法恢复。

ceozenliu 发表于 2014-05-26 17:43

這個方法有風險,請參考:http://blog.csdn.net/andkylee/article/details/5004536

ceozenliu 发表于 2014-05-26 17:49

可以再試一下這個方法:
以-T3607進去
一、dbcc checkdb (master)
二、dbcc checktable (sysobjects)
三、dbcc checktable (syslogs)
四、dbcc checktable (sysdatabases)
五、shutdown→restart

試一下吧!

hobbylu 发表于 2014-05-26 18:59

-T3607
dbcc rebuild_log(1,1,1)

jp_1129 发表于 2014-05-26 19:56

sybase数据库error 3474的解决。
3474错误:"During redo the page timestamp value is less than old timestamp from log.Page……"

isql -Usa -P -Ssybase :
1>sp_configure "allow updates",1
2>go

1>update sysdatabases set status=-32768 where name="xtsum"
2>go
1>shutdown
2>go
重新启动数据库服务。
isql -Usa -P -Ssybase
1>dbcc rebuild_log(xtsum,0,0)
2>go
1>dbcc rebuild_log(xtsum,1,1)
2>go
1>shutdown
2>g
重新启动数据库服务器
isql -Usa -P -Ssybas
1>update sysdatabases set status=12 where name="xtsum"
2>g
1>sp_configure "allow updates",0
2>
1>shutdown
2>
重启数据库后,恢复正常,rebuild log工作完成。

返回结果查询
select 'truncate table ' + name from sysobjects where type = 'U' and name like 'Tbt_Mk%Up'


SYBASE3414错误处理:
解决办法:
重建数据库日志,方法如下:
 (1)赋予sa用户sybase_ts_role的角色
isql -Usa -P
1>sp_role "grant","sybase_ts_role",sa
2>go
1>quit

(2)将数据库置为"bypass recovery"状态
isql -Usa -P
1>sp_configure "allow updates",1
2>go
1>use master
2>go
1>update sysdatabases set status=-32768
2>where name="database_name"
3>go
1>shutdown with nowait r`;m'H!
2>go
(3)rebuild数据库日志
重启Server
isql -Usa -P q=7$ |_.
1>use master
2>go
1>dbcc rebuild_log(database_name,1,1)
2>go
1>shutdown with nowait
2>go
(4)重启server
1>use master
2>go
1>update sysdatabases set status=0 where name="database_name"
2>go
1>sp_configure "allow updates",0
2>go
1>shutdown with nowait
2>go
(5)在重启server之后,如果数据库恢复正常,rebuild log工作将会成功完成,否则要恢复数据库备份,使用dump database或bcp命令。参见http://blog.chinaunix.net/uid-7509663-id-25471.html

andkylee 发表于 2014-05-27 00:21

dbcc rebuild_log(1,1,1)不好使的话, 修改页面吧。
页: [1] 2
查看完整版本: 突然掉电导致sybase master库异常求救