关于Alter index的问题

TLJewel 2008-12-31 03:40:39
sql2000里,为了整理碎片,有个DBCC 的方法,在sql2005里是不是被alter index取代了,我想了解下,谁能帮我找下相应的文章,或者帮忙做下简介。

注:让我自己找的就算了,我会自己找的,不过我想尝试新的学习方法,就是在最有效的时间里找到有用的资料,我想应该比我自己找更能发现一些自己没有注意到的事情。
...全文
152 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
水族杰纶 2009-01-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 TLJewel 的帖子:]
sql2000里,为了整理碎片,有个DBCC 的方法,在sql2005里是不是被alter index取代了,我想了解下,谁能帮我找下相应的文章,或者帮忙做下简介。

注:让我自己找的就算了,我会自己找的,不过我想尝试新的学习方法,就是在最有效的时间里找到有用的资料,我想应该比我自己找更能发现一些自己没有注意到的事情。
[/Quote]
沒有被取代~~
fcuandy 2009-01-02
  • 打赏
  • 举报
回复
sql2005仍然提供了dbcc命令对索引碎片处理。

dbcc dbreindex 重建索引
dbcc indexdefrag 整理索引
lansz 2009-01-02
  • 打赏
  • 举报
回复
不好听的话就懒得说了

最有效的学习方法永远是先问帮助再问google,实在找不到答案的时候再上论坛灌水

在论坛上面问别人效率低不说,别人告诉你的要不是从帮助上copy,要不就只有只言片语,很多时候误导的成分会更大,对学习不会有太大的帮助

论坛只适合于答疑解惑,用别人的疑问和解答来弥补你经验的不足,根本不适合系统的学习

要明白在这个坛子里面大多数人回帖只是为了赚分,至于答案的质量是不会考虑太多的
dawugui 2009-01-01
  • 打赏
  • 举报
回复
备注
在 SQL Server 的早期版本中,用于每个表、每个索引行计数和页计数的值可能不正确。在特定情况下,其中的一个或多个值甚至会变为负值。DBCC CHECKDB 不检测这一问题。这不是由于数据库中存储的任何数据发生损坏而导致的,通常可通过运行 DBCC UPDATEUSAGE 命令来解决该问题。

在 SQL Server 2005 中,DBCC CHECKDB 得到增强,可以检测计数值之一变为负值这一情况。检测到上述问题后,DBCC CHECKDB 的输出会包含一个警告和一个建议,建议运行 DBCC UPDATEUSAGE 解决该问题。尽管看起来是由于将数据库升级到 SQL Server 2005 导致了该问题,但实际上升级之前便已存在这一情况。

注意:
使用 SQL Server 2005 创建的数据库中不会出现这一问题。



DBCC CHECKDB 不检查禁用的索引。有关禁用索引的详细信息,请参阅禁用索引。

关于其操作的有用总结是在内部运行 DBCC CHECKDB:

对数据库运行 DBCC CHECKALLOC


对数据库中的每个表和视图运行 DBCC CHECKTABLE


验证数据库中的 Service Broker 数据


对数据库运行 DBCC CHECKCATALOG


验证数据库中每个索引视图的内容


这意味着无需从 DBCC CHECKDB 单独运行 DBCC CHECKALLOC、DBCC CHECKTABLE 或 DBCC CHECKCATALOG。有关所执行检查的更多详细信息,请参阅这些命令的说明。

由于只能以单用户模式访问 Resource 数据库,所以不能直接对其运行 DBCC CHECKDB 命令。但是,当对 master 数据库执行 DBCC CHECKDB 时,也在内部对 Resource 数据库运行另一个 CHECKDB。这意味着 DBCC CHECKDB 可以返回额外结果。当没有设置选项或设置了 PHYSICAL ONLY 或 ESTIMATE ONLY 选项时,该命令返回额外结果集。有关资源数据库的详细信息,请参阅资源数据库。

DBCC CHECKDB 使用内部数据库快照提供必须执行这些检查的事务一致性。有关详细信息,请参阅了解稀疏文件大小和 DBCC (Transact-SQL) 中的“DBCC 内部数据库快照用法”部分。如果无法创建快照或指定了 TABLOCK,DBCC CHECKDB 将获取锁以获得所需一致性。在这种情况下,需要排他数据库锁才能执行分配检查,需要共享表锁才能执行表检查。

注意:
在 SQL Server 2005 中,对 tempdb 运行 DBCC CHECKDB 不会执行任何分配或目录检查,并且必须获取共享表锁才能执行表检查。这是由于为了提高性能,不能对 tempdb 使用数据库快照。这意味着无法获得所需的事务一致性。



如果 DBCC CHECKDB 报告了任何错误,建议从数据库备份还原数据库,而不运行具有一个 REPAIR 选项的 REPAIR。如果不存在备份,则运行修复将更正报告的错误。要使用的修复选项在报告的错误的末尾处指定。但是,通过使用 REPAIR_ALLOW_DATA_LOSS 选项更正错误可能需要删除某些页以及数据。

在某些情况下,可能会在数据库中输入对列的数据类型而言无效或越界的值。在 SQL Server 2000 中,DBCC CHECKDB 不对这些列值执行范围或完整性检查。但是,在 SQL Server 2005 中,DBCC CHECKDB 可以检测到对所有列数据类型都无效的列值。因此,对从 SQL Server 的早期版本升级的数据库运行带 DATA_PURITY 选项的 DBCC CHECKDB 可能会显示预先存在的列值错误。因为 SQL Server 2005 不会自动修复这些错误,所以必须手动更新这些列值。如果 CHECKDB 检测到此类错误,CHECKDB 将返回一个警告、错误号 2570 以及标识受影响的行和手动更正错误的信息。

修复操作可以在用户事务下执行,以使用户回滚所做的更改。如果回滚修复,数据库仍会包含错误,因而必须通过备份进行还原。修复完成后,备份数据库。

默认情况下,DBCC CHECKTABLE 对对象执行并行检查。并行度由查询处理器自动确定。最大并行度的配置与配置并行查询相同。若要限制 DBCC 检查可使用的处理器的最大数目,请使用 sp_configure。有关详细信息,请参阅max degree of parallelism 选项。

通过使用跟踪标志 2528 可以禁用并行检查。有关详细信息,请参阅跟踪标志 (Transact-SQL)。

参数
'database_name' | database_id | 0
要为其运行完整性检查的数据库的名称或 ID。如果未指定,或者指定为 0,则使用当前数据库。数据库名称必须符合标识符规则。

注意:
如果无法创建内部数据库快照,则对 master 运行 DBCC CHECKDB 时将失败。



NOINDEX
指定不应对用户表的非聚集索引执行会占用很大系统开销的检查。这将减少总执行时间。NOINDEX 不影响系统表,因为总是对系统表索引执行完整性检查。

REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD
指定 DBCC CHECKDB 修复发现的错误。指定的数据库必须处于单用户模式,才能使用以下修复选项之一。

REPAIR_ALLOW_ DATA_LOSS
尝试修复报告的所有错误。这些修复可能会导致一些数据丢失。

REPAIR_FAST
仅为保持向后兼容性而保留。

REPAIR_REBUILD
执行由 REPAIR_FAST 执行的所有修复,包括需要较长时间的修复(如重建索引)。执行这些修复时不会有丢失数据的危险。

注意:
仅将 REPAIR 选项作为最后手段使用。若要修复错误,建议您通过备份进行还原。修复操作不会考虑表本身或表之间可能存在的任何约束。如果指定的表与一个或多个约束有关,建议您在修复操作后运行 DBCC CHECKCONSTRAINTS。如果必须使用 REPAIR,请运行 DBCC CHECKDB 查找要使用的修复级别。如果将使用 REPAIR_ALLOW_DATA_LOSS 级别,建议您在运行 DBCC CHECKDB 之前备份数据库。



WITH
启用要指定的选项。

ALL_ERRORMSGS
显示每个对象不受限制的错误数。如果未指定 ALL_ERRORMSGS,则只显示每个对象前 200 条错误消息。按对象 ID 对错误消息排序,从 tempdb 中生成的那些消息除外。

NO_INFOMSGS
取消所有信息性消息。

TABLOCK
使 DBCC CHECKDB 获取锁,而不使用内部数据库快照。这包括一个短期数据库排他锁。TABLOCK 可使 DBCC CHECKDB 在负荷较重的数据库上运行得更快,但 DBCC CHECKDB 运行时会减少数据库上可获得的并发性。

ESTIMATEONLY
显示估计的 tempdb 空间大小,用于运行带有所有其他指定选项的 DBCC CHECKDB。不执行实际数据库检查。

PHYSICAL_ONLY
将检查限制为页和记录标头的物理结构完整性、B 树的物理结构以及数据库的分配一致性。旨在以较小的开销检查数据库的物理一致性,同时还检测会危及用户数据安全的残缺页、校验和错误和常见的硬件故障。在 SQL Server 2005 中,完整运行 DBCC CHECKDB 所花的时间比早期版本长得多。导致此行为发生的原因如下:

引入的逻辑检查更全面。


要检查的某些基础结构更为复杂。


在 SQL Server 2005 中引入了许多新的检查,以包含新增功能。


因此,在大型数据库上运行 DBCC CHECKDB 时,使用 PHYSICAL_ONLY 选项可以更大程度地缩短运行时间;所以,建议在生产系统中经常使用此选项。还建议定期执行 DBCC CHECKDB 的完整运行。这些运行的执行频率取决于各业务和生产环境特定的因素。PHYSICAL_ONLY 始终表示 NO_INFOMSGS,不能与任何修复选项一同使用。

DATA_PURITY
使 DBCC CHECKDB 检查数据库中是否存在无效或越界的列值。例如,DBCC CHECKDB 检测日期和时间值大于或小于 datetime 数据类型的可接受范围的列,或者小数位数或精度值无效的 decimal 或近似 numeric 数据类型列。

对于在 SQL Server 2005 中创建的数据库,默认情况下将启用列值完整性检查,并且不需要使用 DATA_PURITY 选项。对于从 SQL Server 的早期版本升级的数据库,默认情况下不启用列值检查,直到 DBCC CHECKDB WITH DATA_PURITY 已在数据库中正确运行为止。然后,DBCC CHECKDB 将默认检查列值完整性。有关从 SQL Server 的早期版本升级数据库对 CHECKDB 有何影响的详细信息,请参阅“备注”部分。

如果指定了 PHYSICAL_ONLY,则不执行列完整性检查。

dawugui 2009-01-01
  • 打赏
  • 举报
回复
示例

DBCC CHECKDB
检查指定数据库中所有对象的分配、结构和逻辑完整性。

A. 检查当前数据库和 AdventureWorks 数据库
下面的示例将对当前数据库和 AdventureWorks 数据库执行 DBCC CHECKDB。
-- Check the current database.
DBCC CHECKDB;
GO
-- Check the AdventureWorks database without nonclustered indexes.
DBCC CHECKDB ('AdventureWorks', NOINDEX);
GO

B. 检查当前数据库,取消信息性消息
以下示例检查当前数据库,并取消所有信息性消息。

DBCC CHECKDB WITH NO_INFOMSGS;
GO
dawugui 2009-01-01
  • 打赏
  • 举报
回复
2005仍然有DBCC CHECKDB 语句.在帮助中输入dbcc checkdb,里面有详细的介绍.
rucypli 2009-01-01
  • 打赏
  • 举报
回复
[Quote=引用楼主 TLJewel 的帖子:]
sql2000里,为了整理碎片,有个DBCC 的方法,在sql2005里是不是被alter index取代了,我想了解下,谁能帮我找下相应的文章,或者帮忙做下简介。

注:让我自己找的就算了,我会自己找的,不过我想尝试新的学习方法,就是在最有效的时间里找到有用的资料,我想应该比我自己找更能发现一些自己没有注意到的事情。
[/Quote]

百度google
liangCK 2008-12-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liangCK 的回复:]
联机丛书->查DBCC 的命令..然后打开了..如果该命令是被新的语法所取代..微软就会说明..该命令不再推荐使用..
[/Quote]

如果这样也不是最有效的方法..建议lz打电话给微软去问吧.
liangCK 2008-12-31
  • 打赏
  • 举报
回复
联机丛书->查DBCC 的命令..然后打开了..如果该命令是被新的语法所取代..微软就会说明..该命令不再推荐使用..
本系列课程分为,0-理论知识部分    0.1-oca_ocp_ocm相关知识内容(uploading)1-安装部分     1.1单实例命令行安装     1.2单实例图形安装     1.3rac安装     1.4rac(pdb架构)+dg 单实例安装(用rman的duplicate和rman备份2种方式搭建dg)     1.5rac(pdb架构)+rac dg2-迁移部分    2.1单实例之间的迁移    2.2单实迁移到rac    2.3rac迁移到单实例    2.4rac和rac之间的迁移。    2.5关于xtts的迁移方法的使用3-恢复部分   3.1单实例本地恢复   3.2rac本地恢复4-数据库升级部分   4.1 19.3升级到19.13   4.2 12.1.0.2升级到19.3   4.3 12.2.0.1升级到19.3   4.4 19.3的rac升级到19.135-数据库优化部分    5.1如何看懂执行计划    5.2 hash, nest loop,  merge的执行计划各自适用于那种场景?    5.3为什么要用直方图,19c的直方图有frency, balance,  top-frenkency, hybrid?允许最大的bucket是多少?6-数据库asm磁盘操作部分   6-1如何用一条命令迁移rac存储。   6-2如何用笨方法迁移rac存储。   6-3目前asm磁盘是external冗余级别,如何修改为normal的冗余级别。7-数据库工具部分   7.1oem如何进行安装,如何进行纳管数据库,如何使用   7.2如何用oem监控数据库 8-综合实战。   a库是11.2.0.3的单实例数据库,容量有20T。   b库是19.13的rac环境的pdb数据库,容量只有21T.   如何把a库的数据迁移到b库的pdb数据库?   这个综合实战非常考验大家,基本上囊括了数据库复制安装,数据库dg,数据库升级的方方面面。   大家可以自己先想想怎么实现。一课程主题手把手带大家进行实操,在实操中提升自己手把手带大家学习orace 19的ocm课程,学完本课程,至少具有3-5年oracle数据库水平。文档和视频is uploading. 二课程特色 学oracle,找阿伟阿伟出品,必属精品从实战出发,贴近实战,自己实战,实战为王,在实战中提升自己授人以鱼不如授人以渔通过此系列课程可以提高3-5年oracle水平交个朋友,物有所值,诚意满满走心课程,把自己在运维中的坑,提炼知识后,实战给大家 三课程内容 0.理论知识部分(上传中。。。)   0.1数据库监听(动态监听,静态监听,多个ip同时监听1521,一个ip监听多个service_name)   0.2rman 命令中的set rename datafile和 alter database  rename datafile 有啥区别?   0.3    ............1.数据库单实例安装  1.0 安装检查    1.0.1安装包检查    1.0.2修改系统参数    1.0.3数据库用户创建    1.0.4创建目录    1.0.5上传安装软件包    1.0.6修改oracle用户环境变量  1.1 rhel7系统图形安装oracle 19c单实例数据库  1.2 rhel7系统命令行安装       1.2.0命令行安装数据库软件       1.2.1命令行创建non cdb数据库实例       1.2.2命令行创建 cdb数据库实例2.rac数据库安装    1.课程结束成果演示          1.1 用workstation,安装一套rhel7+oracle19c+rac+multipath+共享存储+DNS服务器+DNS客户端+NTP服务器+NTP客户端的生产环境          1.2 怎样打oracle19c的rac补丁(包括GI补丁,oracle补丁,数据库补丁,OJVM补丁,bug补丁)     2.安装openfiler软件,模拟共享存储+配置多路径访问       2.1安装openfiler软件       2.2配置openfiler软件(配置2个虚拟网卡,模拟服务器的2个HBA卡)        2.3创建ocr磁盘       2.4创建mgmt磁盘       2.5创建数据文件磁盘       2.6创建归档日志磁盘     3.安装2台数据库服务器       3.1安装2台数据库服务器RHEL7.5       3.2配置服务器双网卡绑定+配置服务器心跳线     4.安装多路径软件识别共享存储中的磁盘        4.1安装服务器本地yum源        4.2安装iscsi软件,配置多路径配置文件,识别共享存储中的磁盘        4.3识别ocr磁盘        4.4识别mgmt磁盘        4.5识别数据文件磁盘        4.6识别归档日志磁盘     5.oracle19c的rac环境系统参数官方说明        5.1如何配置oracle19c的rac的系统参数(我们参考官方说明)        5.2oracle19c+rac环境Best Practices 官方说明文档     6.安装oracle19c+rac之前的准备工作        6.1修改/etc/hosts文件        6.2配置DNS服务器+DNS客户端+NTP服务器+NTP客户端        6.3创建用户和组        6.4创建目录        6.5修改用户环境变量        6.6安装相关软件包        6.7配置ssh互信        6.9禁用服务器透明大页     7.安装oracle+19c+rac软件       7.1安装GI软件       7.2创建ASM磁盘,主要是数据文件磁盘和归档日志磁盘       7.3安装数据库软件       7.4创建数据库实例       7.5日常常用维护集群命令(启停数据库,启停集群,查看监听,教同学们怎样不死记命令,而且命令还正确)     8.打补丁     8.1打GI和ORACLE的操作系统补丁      8.2打OJVM补丁      8.3打ORA600的bug补丁     9.课程总结和成果演示     9.1课程总结和成果演示3.rac+dg(单实例)数据库安装(pdb架构)     3.1.1dg知识点讲解     3.1.2配置dg监听,密码文件,参数文件。     3.1.2通过rman的duplicate命令进行dg搭建1。     3.1.3通过rman的duplicate命令进行dg搭建2     3.1.4进行数据库切换需要的配置。     3.1.5数据库正常switch over     3.1.6数据库如何fail over     3.1.7dg库failover以后通过闪回快速恢复dg     3.1.8dg库failover以后通过新主库的控制文件快速恢复dg     3.1.9备库归档缺失如何进行解决。     3.1.10recover database和recover standby database是否可以在dg中使用?     3.1.11如何通过rman的备份进行搭建dg。     3.1.12dg库使用静态监听无法监听pdb数据库的service问题如何进行解决?   4.rac+rac dg的实战步骤(pdb架构)(上传中。。。)5.19c单实例数据库通过rman备份进行异机迁移到单实例数据库     5.1通过备份脚本进行数据,归档,控制文件备份     5.2通过备份脚本进行归档,控制文件备份       (注意源库备份目录是/backup/db和/backup/ar)     5.3传输备份文件到目标库        (传输备份文件到目标库的/home/oracle/bk目录)     5.4利用参数文件启动数据库到nomount     5.5利用备份集恢复控制文件,并启动数据库到mount     5.6通过restore database恢复数据库        5.6.1注册目标库备份集到控制文件        5.6.2启动数据库到mount状态,确定recover database的序列号     5.7recover database        5.7.1通过rman 进行recover database        5.7.2通过sql 命令行进行 recover database;     5.8.打开数据库          5.8.1解决打开数据库后,sys用户无法远程监听登录问题          5.8.2修改数据库动态参数启动数据库     5.9.备份的扩展             5.9.1如何知道备份集里面有哪些归档             5.9.2如何从这些备份集中提取归档             5.9.3进行异机数据库迁移时,如何逐步应用归档,并且如何open read only数据库后,继续应用归档             5.9.4为何要进行 open read only进行提前打开验证。               5.10.rman迁移备份的补充             5.10.1如何再rman中设置数据文件,在线日志生成路径。               类似如下命令                    run  6单实例数据库无数据丢失通过rman备份异机迁移到rac数据库和rac数据库通过rman迁移到rac数据库      6.1单实例源库进行数据库升级           19.3的源库升级到19.13版本(包括打数据库补丁和ojvm补丁)      6.2.传输备份文件到目标库           传输备份文件到目标库的/home/oracle/bk目录     6.3.利用参数文件启动数据库到nomount     6.4.利用备份集恢复控制文件,并启动数据库到mount        6.5.通过restore database恢复数据库           注册目标库备份集到控制文件           启动数据库到mount状态,确定recover database的序列号     6.6.recover database          通过rman 进行recover database          通过sql 命令行进行 recover database;     6.7.单实例数据库恢复完成后,配置为rac数据库           注册数据库到集群          修改数据库参数文件到asm     6.8.迁移rac数据库到rac数据库。           单实例数据库异机迁移到rac和,rac数据库异机迁移到rac有啥不一样。           根据上面理论,实施rac数据库异机恢复到rac7数据库本地恢复系列     7.1单实例数据库本地恢复     7.2rac数据库本地恢复8综合实战(uploading)     7.1实战课题:        有一台11.2.0.3的单实例数据库A,数据库容量有20T,无备份。        如何迁移到新搭建的rac环境B(数据库版本是19.13),并且是迁移到rac的pdb数据库中,并且rac数据库的asm容量只有21T.        这次实战包含的知识点。        1-如何在环境B复制数据库A的软件,最好进行复制,因为数据库A的11.2.0.3打了很多补丁,如果安装11.2.0.3软件,会造成版本不一致。        2-如何搭建11.2.0.3的单实例dg。        3-dg归档缺失如何解决。        4-如何升级11.2.0.3单实例到11.2.0.4单实例        5-如何升级11.2.0.4单实例到19.3单实例        6-如何升级19.3单实例到19.13单实例。        7-如何迁移19.13单实例数据库到19.13的rac的pdb数据库中。9数据库升级系列     8.1 单实例19c数据库升级到19.13版本。     8.2 单实例12.2.0.1数据库升级到19.13版本。     8.3 单实例12.1.0.2数据库升级到19.13版本。     8.4 19c数据库rac升级到19.13版本。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧