Sybase ASE DBCC

原创 2004年07月31日 23:52:00

我们知道,在数据库系统的开发和应用中,必须保证数据库的完整性和一致性。当数据库出现了严重错误;当我们怀疑数据库受到破坏(如无法用drop命令删除数据库或对象,使用某个表时出现“不可靠数据”的信息等);当用户改变了Server的缺省排序的顺序或改变了字符集而需要检查;当SA对系统做定期检查;这些时候,我们都需要使用数据库一致性检查工具(Database Consistenecy Checker,简称DBCC)。DBCC是一个实用命令集,用来检查一个数据库的逻辑一致性及物理一致性。在开发和应用中,DBCC是我们经常要使用的命令。

  DBCC命令的格式如下 

dbcc 
(checktable ((表名|表标识( [, skip_ncindex] ) | 
checkdb [(数据库名[, skip_ncindex] )] | 
checkalloc [ (数据库名[, fix | nofix] )] | 
tablealloc( {表名|表标识} 
[,{full |optimized |fast |null} 
[, fix |nofix] ]]) | 
indexalloc ( {表名|表标识},索引标识
[,{full |optimezed | fast | null} 
[, fix |nofix ]] ) | 
checkcatalog [ (数据库名)] | 
dbrepair(数据库名,dropdb ) | 
reindex({表名|表标识} ) | 
fix_text({表名|表标识) } 

  dbcc的权限,对于checktable,fix_text和reindex是缺省赋给表的属主,对于checkdb,checkalloc,checkcatalog,dbrepair,indexalloc和tablealloc,是缺省赋给数据库属主的。DBO自动获得DBCC命令和全部选项的权限。该权限不可转授。此外,dbcc在数据库是活动时运行,除了dbrepair选项和带有fix选项的dbcc checkalloc以外。

  checktable选项

  checktable是用来对一个指定的表做检查,确保索引和数据页正确地连接,索引按正确的顺序存储,所有指针的一致性,每页上数据信息的合理性,页偏移的合理性。如果日志段在它自己的(日志)设备上,对syslogs表使用dbcc checktable命令可以报告已使用的和剩余的日志空间,使用skip_ncindex选项使得dbcc checktable跳过对用户表上非聚簇索引(nonclustered index)的检查。缺省是检查所有的索引。

  例1.检查日志使用的空间量和未用的空间量:

dbcc checktable (syslogs) 

  若日志段在日志设备上,则会返回如下信息:

checking syslogs 
The total number of data page in the table is 1. 
NOTICE:Space used on the log segment is 0.20 Mbytes, 0.13%. 
NOTICE:Space free on the log segment is 153.4Mbytes,99.87%. 
DBCC execution Completed.If dbcc printed error messages, 
Contact a user with SA role. 

  若日志不在它自己的设备上,则会显示下列信息:

NOTICE:Notification of log space used/free. 
Can not be reported because the log segment is not on its own device. 
例2. dbcc checktable (titles) 
The total number of data page in this table is 3. 
Table has 18 data rows. 
DBCC execution Completed. If DBCC printed error messages. contact a user with SA role. 

  checkdb选项

  运行checkdb选项同checktable检查的内容一样,但它是对一指定数据库中的每张表都做这样的检查。若未指定数据库名,checkdb检查当前的数据库。checkdb返回的信息,也同于checktable。

  checkalloc选项

  checkalloc是检查指定数据库,看其所有正确分配的页和尚未分配的页的情况。若未指定数据库名,则checkalloc检查当前数据库。checkalloc会返回已分配的和使用的空间数量。checkalloc的缺省模式为nofix,要使用fix选项,必须把数据库置于单用户模式。

 例:

dbcc checkalloc (pubs2) 



alloc page 0 (#of extent=32 used pages=68 ref pages=68) 
alloc page 256 (# of extent=32 used pages=154 ref pages=154) 
alloc page 512 (# of extent=28 used pages=184 ref pages=184) 
alloc page 768 (# of extent=1 used pages=1 ref pages=1) 
total (# of extent=93 used pages=407 ref pages=407) in this database. 
DBCC execution completed.If dbcc printed error message, 
Contact a user with System Adminstrator (SA) role. 

  tablealloc选项

  tablealloc检查指定的表以确保所有页都被正确地分配。它是checkalloc的缩小版本。对单张表进行相同的完整性检查。使用tablealloc可以生成三种类型的报表:full,optimized和fast。full选项相当于表一级的checkalloc;它报告各种类型的分配错误。optimized选项基于表的对象分配映像(OAM)页里列出的分配页生成报告。它并不报告,也不能整理OAM页里没有列出的在分配页上没有引用的扩展(extent)。如果没有指明类型,或使用了null,则optimized选项是缺省的设置。fast选项,并不生成分配报告,但生成一个被引用但并没有在扩展里分配的页的额外的报告。fix|nofix选项决定tablealloc 是否整理表中发现的分配错误。对于所有的表,缺省为fix,但系统表除外,它们的缺省为nofix。要对系统表使用fix选项,必须首先将数据库置成单用户模式。

例:

dbcc tablealloc(titles) 
显示信息如下: 
The default report option of OPTIMIZED is used for this run. The default fix option of FIX.is used for this run. 



Total #of extent=3 
Alloc page 256 (# of extent=1 used pages=2 ref pages=2). 
Alloc page 256(# of extent=1 used pages=2 ref pages=2) 
Alloc page 256 (# of extent=1 used pages=2 ref pages=2) 
Total (# of extent=3 used pages=8 ref pages=8) in this database. 

  indexalloc 选项

  indexalloc检查指定的索引,确保所有的页都被正确地分配,它是checkalloc的缩小版本,对单独一条索引指定同样的完整性检查。其中各选项与tablealloc相同。

  checkcatalog选项

  checkcatalog选项用于检查系统表内,系统表之间的一致性。例如:它确保在syscolumns表中的每一(数据)类型在systypes表中都有一个相匹配的记录;对于sysobjects中的每个表和视图在syscolumns表中应有关于它们每一列的描述记录;确保在syslogs中的最后一个检查点是有效的。checkcatalog也报告任何已定义的段。若不指定数据库名,则检查当前数据库。

  dbrepair选项

  dbrepair(数据库名,dropdb)选项是删除一个受破坏的数据库。受破坏的数据库是不能用drop database命令删除的,drop database只能删除正常的数据库,当执行dbrepair命令时,任何用户(包括执行此命令的用户)都不得使用正被删除的数据库。该选项要在master库中运行。

  reindex选项

  reindex选项通过运行dbcc checktable的“fast”执行方式检查用户表上索引的完整性。如果它检测出索引有问题则会删除并重建索引。在SQL Server的排列顺序改变之后,SA或表属主应该执行这一选项。此选项不能在用户定义的事务中运行。

例:

dbcc reindex (titles) 
返回信息:One or more indexes corrupt.They will be rebuilt. 

  fix_text选项

  SQL Server的字符集由单字节转变为多字节后,fix_text选项用于升级文本值。SQL Server的字符集由单字节转变为多字节字符集会使文本数据的管理更加复杂。由于文本值可能较大足以覆盖若干页,SQL Server必须能处理(通过页约束)可能横跨页的字符。为做到这点,服务器需要在每一文本页上添加一些信息。SA或表属主必须在文本数据的每一个表上运行dbcc fix_text,以计算所需要的新页数。

  总之,DBCC命令所返回的信息能准确地反映数据库及它的各个对象的状态,是我们检测数据库的好帮手

Sybase ASE XA分布式事务支持

默认Sybase ASE安装是不支持XA的,必须从Sybase那里获取DTM License才可以。而且默认安装SYSAM服务也是不启动的,SYSAM服务是管理Sybase ASE内各种协议的服务。 ...
  • ItJavawfc
  • ItJavawfc
  • 2015年01月30日 09:28
  • 865

SybaseASE系统表的应用

SybaseASE系统表的应用 一、 问题背景 在排查江西、湖南地区数字法院系统数据库CPU高和慢SQL问题时,发现系统中有很多简单的全表扫描SQL,原因是一些子表外键没有索引导致。 添加缺失外健索引...
  • wangzhen3798
  • wangzhen3798
  • 2017年05月31日 10:37
  • 237

Sybase数据库组成和特点

为了方便我们更好地了解Sybase数据库,本文介绍下Sybase数据库的组成和特点的相关知识。         Sybase数据库的特点         1.它是基于客户/服务器体系结构的...
  • wanghuan203
  • wanghuan203
  • 2014年01月26日 15:16
  • 1639

Sybase ASE 基础(1)

本文介绍一下Sybase的一些基础知识,其中有一部分是所有关系型数据库通用的。 本人不保证内容的正确性。环境:Sybase ASE 15.51.数据库的对象: 数据库的对象主要有以下几种 表...
  • frost_007
  • frost_007
  • 2016年05月08日 12:12
  • 222

Sybase ASE的字符集

转自 :http://tech.ccidnet.com/art/9871/20070413/1060729_1.html 1. 概念   一、什么是字符集? 字符集是字符(包含字母,数字,...
  • jingkite
  • jingkite
  • 2013年08月20日 11:14
  • 468

SYBASE字符集的配置

一、修改客户端字符集 查看/sybase/locales/locales.dat  %sybase%/locales/locales.dat 找到对应操作系统下的字符集配置,如win...
  • xuepiaohan2006
  • xuepiaohan2006
  • 2014年03月18日 15:00
  • 648

解决Sybase库显示中文乱码问题

使用Sybase Central打开sybase库中的内容,如果显示乱码,可以使用如下的方法解决。      注意:服务器安装后,要先设置字符集,然后再添加数据,如果已有数据,修改字符集,会将原来的...
  • kingmax54212008
  • kingmax54212008
  • 2015年02月05日 18:55
  • 4688

命令行下安装sybase

授权方式:署名,非商业用途,保持一致,转载时请务必以超链接(http://www.fwolf.com/blog/post/357)的形式标明文章原始出处和作者信息及本声明。 开始之前 先把...
  • duanbeibei
  • duanbeibei
  • 2014年10月25日 19:46
  • 2967

SYBASE ASE 基础知识及安装(完善中)

1.ASE体系架构   一个ASE Server 其实就是oracle中所说的实例(instance),在创建实例的时候其实就必须将系统库(master,model,tempdb,sybsyst...
  • lileizhang
  • lileizhang
  • 2013年12月13日 18:00
  • 975

Sybase数据库大量数据导出Excel

应客户要求,导出数据库中的数据为Excel,只在一个Sheet中,Excel中的内容要与数据库里的内容一致(主要针对日期型数据)。             由于之前接触过POI,对POI的一些特性还是...
  • shanhuijava
  • shanhuijava
  • 2013年09月17日 14:34
  • 1839
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Sybase ASE DBCC
举报原因:
原因补充:

(最多只允许输入30个字)