文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>sybase 删了部分库记录引起offline的修复记录

sybase 删了部分库记录引起offline的修复记录

时间:2009-06-20  来源:ulj

134.207.88.15 Sybase系统表相关
Posted by dbsos on 五月 18, 2009
其他
1. 只有在master数据库中才能有的系统表
系统表名 表中的内容
Sysconfigures 一行记录了用户可设置的配置参数
Syscurconfigs 有关SQL Server当前正使用的配置参数情况
Sysdatabases 一行记录了SQL Server中的一个数据库
Sysdevices 一行记录了数据库的每一磁带转储设备,磁盘转储设备,数据库设备和磁盘分区
设备和磁盘分区
Syslocks 有关动态锁的情况
Syslogins 一行记录了每一有效的SQL Server的用户帐号
Sysmessages 一行记录了每一系统错误或警告
Sysprocesses 有关Server进程的情况
Sysremotelogins 一行记录了一个远程用户
Sysservers 一行记录了一个远程SQL Server
2. Sysusages 一行记录了分配给一个数据库的每一个磁盘分析 系统表名 表中的内容
Sysalternates 一行记录了SQL Server用户在当前数据库中的标识
syscoumns 一行记录了一个表或视图的每一列,一个存储过程的每一参数
syscomments 一行或多行记录了每一视图、规则、缺省值、触发器和存储过程
sysdepends 一行记录了由一个过程、视图或触发器所参照的每一过程,视图或表
Syskeys 一行记录了每一主码,外码或公用码
Syslogs
sysobjects 一行记录了每一表、视图、存储过程、日志、规则、缺省值、触发器和临时表(仅在tempdb中)
sysprocedures 一行记录了每一视图、规则、缺省、触发器和过程
syprotects 记录用户的权限信息
sysegments 一行记录了每一片段(命名的的磁盘分片汇集)
systypes 一行记录了每一由系统提供的和用户定义的数据类型
sysusers 一行记录了一个数据库的合法用户,或用户组
下面是某次删了表的库记录的恢复过程,这个ZTECDMA共有5个data(三个在同一设备上data02,前两个300M,后一个200M,另一个在data03 1000M,data04 300M)和5个log在log1上每个50M
1> select * from sysusages where dbid=db_id('ZTECDMA')
2> go
 dbid   segmap      lstart      size        vstart      pad    unreservedpgs
         crdate                    
 ------ ----------- ----------- ----------- ----------- ------ -------------
         --------------------------
     11           3           0       38400   168540160   NULL             0
               四月 20 2009  2:50PM
     11           4       38400        6400   184677376   NULL          6375
               四月 20 2009  2:50PM
     11           3       44800       38400   167925760   NULL             0
               五月  6 2009 11:45AM
     11           3       83200       25600   168693760   NULL             0
               五月  6 2009 11:45AM
     11           4      108800        6400   184574976   NULL          6375
               五月  6 2009 11:46AM
     11           4      115200        6400   184702976   NULL          6375
               五月  6 2009 11:46AM
     11           3      121600      128000   201326592   NULL             0
               六月 19 2009  8:40AM
     11           3      249600       38400   218103808   NULL         38250
               六月 20 2009 12:23AM
     11           4      288000        6400   184728576   NULL          6375
               六月 20 2009 12:23AM
重起后出错(可能好像原因删错了一个有数据的lstart=83200  , 不过我把所有删的的都恢复先)    
查看库状态(我的是320,log时显0:00000:00001:2009/06/20 02:15:28.96 server  Error: 926, Severity: 14, State: 1
00:00000:00001:2009/06/20 02:15:28.96 server  Database 'ZTECDMA' cannot be opened. An earlier attempt at recovery marked it 'suspect'. Check the SQL Server errorlog for information as to the cause.
00:00000:00001:2009/06/20 02:15:28.97 server  Continuing recovery with the next database.)
select name,status from sysdatabases
听说status列0和4是正常的,其它不正常
  下面这张表,比较直观说明了这些数字代表的意义。对于320这个状态,是256和64两个状态的和,对于一般大家说得12,就是设置了'select'和'trunc'这两个数据选项之后相加的值。
Decimal        Hex                Status
1        0x01                Upgrade started on this database
2        0x02                Upgrade has been successful
4        0x04                select into/bulkcopy Can be set by user
8        0x08                trunc log on chkpt
16        0x10                no chkpt on recovery
32        0x20                Database created with for load option,
                        or crashed while loading database,
                        instructs recovery not to proceed
64        0x04                Recovery started for all databases to be recovered
256        0x100                database suspect
                        Not recovered
                        Cannot be opened or used
                        Can be dropped only with dbcc dbrepair
512        0x200                ddl in tran
1024        0x400                read only
2048        0x800                dbo use only
4096        0x1000                    single user
8192        0x2000                        allow nulls by default
删除记录
(9 rows affected)
1> sp_configure 'allow updates',1
2> go
 Parameter Name                 Default     Memory Used Config Value
         Run Value   Unit                 Type      
 ------------------------------ ----------- ----------- ------------
         ----------- -------------------- ----------
 allow updates to system tables           0           0           1
                   1 switch               dynamic   
(1 row affected)
Configuration option changed. The SQL Server need not be rebooted since the
option is dynamic.
Resulting configuration value and memory use have not changed from previous
values: new configuration value 1, previous value 1.
(return status = 0)
1> begin tran
2> go
1> delete from sysusages where dbid=db_id('ZTECDMA') and lstart=288000
2> go
(1 row affected)
1> delete from sysusages where dbid=db_id('ZTECDMA') and lstart=249600
2> go
(1 row affected)
1> delete from sysusages where dbid=db_id('ZTECDMA') and lstart=121600
2> go
(1 row affected)
1> delete from sysusages where dbid=db_id('ZTECDMA') and lstart=108800
2> go
(1 row affected)
1> delete from sysusages where dbid=db_id('ZTECDMA') and lstart=83200
2> go
(1 row affected)
1> commit tran
2> go
1> sp_configure 'allow update',0
2> go

恢复记录
insert into sysusages (dbid,segmap,lstart,size,vstart,pad,unreservedpgs,crdate) values (11,3,83200,25600,168693760,NULL,0,"2009-5-6 11:45:39.776" )
insert into sysusages (dbid,segmap,lstart,size,vstart,pad,unreservedpgs,crdate) values (11,4,108800,6400,184574976,NULL,6375,"2009-5-6 11:46:35.746" )
insert into sysusages (dbid,segmap,lstart,size,vstart,pad,unreservedpgs,crdate) values (11,3,121600,128000,201326592,NULL,0,"2009-6-19 8:40:35.746" )
insert into sysusages (dbid,segmap,lstart,size,vstart,pad,unreservedpgs,crdate) values (11,3,249600,38400,218103808,NULL,38250,"2009-6-20 2:13:35.746" )
insert into sysusages (dbid,segmap,lstart,size,vstart,pad,unreservedpgs,crdate) values (11,4,288000 ,6400,184728576,NULL,6275,"2009-6-20 2:13:35.746" )
然后进行下面的更新操作(参考直面改库名)
(sp_configure "allow updates", 1
reconfigure with override
update master..sysdatabases set status =-32768 Where name="ZTECDMA"
shutdown with nowait
update master..sysdatabases set status=0  Where name="ZTECDMA"
sp_configure "allow updates", 1
reconfigure with override
shutdown with nowait )
可能你的数据库 被置疑 了
检查硬件、系统有无问题
然后:
解决数据库被标记为“suspect”的方法  
  
  现象: Error 926
  Severity Level 14
  Error Message Text
  Database 'xx' cannot be opened - it has been marked SUSPECT by recover Explanation    当你使用Transact_SQL命令这个数据库的数据时,出现这个信息,这是一个严重的错误,如果你要使用这个数据库的数据,必须改正这个错误。Action   用ISQL登录到SQL Server,须用SA帐号 1>sp_configure "allow updates", 1
2>go
2>reconfigure with override
2>go
1>update master..sysdatabases
2>set status =-32768
3>Where name="database_name" database_name是 你 的 数 据 库 名
4>go
1>shutdown with nowait
2>go 
  这时重新启动SQL Server,再有SA帐号注册到SQL Server。 1>update master..sysdatabases
2>set status=0
3>Where name="database_name" database_name 是 你 的 数 据 库 名
4>go
1>sp_configure "allow updates" ,1
2>go
1>reconfigure with override
2>go 
  如果你的数据库原来有dboption,你需要重新设置这些option。 以下参考一
sybase数据库offline修改(2009-01-14 11:33:37)标签:sybase 数据库 杂谈   分类:数据库
isql连接数据库时,
1> use hkschdb
2> go
出现提示sybase Database 'hkschdb' is currently offline.
解决办法:
isql连接数据库,以sa用户登陆.
1>sp_configure "allow updates",
1
2>go
1>reconfigure with
override
2>go
1>use master
2>go
1>update
master..sysdatabases
2>set status=-32768
3>where name='hkschdb'
4>go
1>shutdown with nowait 2>go
重新启动后,isql连接数据库,以sa用户登录。
1>use master
2>go
1>update master..sysdatabases
2>set status=0
3>where name='hkschdb'
4>go
1>online database hkschdb
2>go
1>sp_configure "allow updates", 1
2>go
1>reconfigure with override
以下参考二
下面的另一种之前试过但无效(可能没恢复sysausages)
2004-3-12 11:26 caosohu
怎样修复OFFLINE的数据库
不好意思,上面贴子写错了!
sp_configure 'allow updates to system tables',1
go
重新启动ASE
update sysdatabase set status=-32768 where name='dbname'
go
重新启动ASE
update sysdatabase set status=8 where name='dbname'
go
sp_configure 'allow updates to system tables',0
go
重新启动ASE。
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载