发布网友 发布时间:2022-04-30 01:38
共3个回答
懂视网 时间:2022-04-09 08:56
”,因为看过官方文档知道怎么用,手头正好有坏库,正好做个示范~我们先看一下DBCC CHECKDB的结果 ,目的只是告诉你这是一个有坏页的数据库!
好了,那我们做一下备份看看!
正常的备份,不加 checksum 成功备份!
加上checksum备份,失败!
好像果然和微软文档说的一样!看到这有些看官会想,这不和我做CHECKDB差不多了么?
博主别的不多就是坏库多! 我们再拿一个库试一下!
我们先看一下DBCC CHECKDB的结果 ,目的只是告诉你也这是一个有坏页的数据库!
我们用checksum 备份一下
哦??成功了???这是啥意思??
我们先来看一下 backupset的结果 :
那么损坏的页没check出来?我们再看一下 suspect_pages
suspect_pages里只查出了Test 库的坏页,那我XB28_3库的坏页哪里去了?
突然想到 suspect_pages 里面的数据只是 823 错误或 824 错误而失败的页!
而且使用checksum系统表会被漏掉,本文中XB28_3库的坏页就是一个object_id = 60的 系统表!
而且并不是数据库中所有的页都会被叫上页校验和,当页损坏发生时,IO系统可不会区分损坏的页是有页校验和还是没有校验和的。所以使用BACKUP ... WITH CHECKSUM就有可能导致一些损坏页不被发现。
这也说明备份时使用checksum不能完全取代DBCC checkDB的作用,这和Paul Randal大神的文章一致 : A SQL Server DBA myth a day: (27/30) use BACKUP WITH CHECKSUM to replace DBCC CHECKDB
--------------博客地址---------------------------------------------------------------------------------------
Expert 诊断优化系列 http://www.cnblogs.com/double-K/
-----------------------------------------------------------------------------------------------------
总结 :备份的checksum 选项可以用来发现数据库是否损坏,但不是所有类型的坏页都可以发现。
看官们的疑问:backup with checksum 可以用来取代DBCC checkDB。
这个观点是不正确的,一些逻辑一致性错误checksum是没法发现的!
数据库损坏不是很常见,很多DBA工作好多年都没有遇到,但是做好CHECKDB检查还是很必要的!万一出现你没有发现就比较悲剧了!
PS : 差异备份也可以使用checksum,但只会校验差异部分~
----------------------------------------------------------------------------------------------------
注:此文章为原创,欢迎转载,请在文章页面明显位置给出此文链接!
若您觉得这篇文章还不错请点击下右下角的推荐,非常感谢!
数据库备份checksum选项你会用么?
标签:
热心网友 时间:2022-04-09 06:04
校验和(Checksum)热心网友 时间:2022-04-09 07:22
Z6确实属于新一代的motorola linux了Z6的QTE如果我没猜错的话,应该和E2很接近的,可以利用Lasly的E2 EZX SDK进行尝试与以前的EZX不同,Z6是2.6.10内核,不叫montavista xxx版本,而是mobilinux4.1以前的EZX使用的是cramfs格式来保存刷机包smg文件,而Z6使用的是squashfs格式。如何从sbf获得smg文件?你可以使用winhex查找hsqs头部来获得,这样比较麻烦,但同时你可以记录下原smg所在的位置方便改sbf时替换或者使用RSD Lite进行假刷机,在loading ram downloader的进度未完成时拷出生成的smg文件,然后拨掉数据线避免喜刷刷要给Z6改包,需要给你的PC LINUX安装squashfs支持你可以google搜得squashfs的源代码进行安装(可能需要对内核进行patch和重新编译)简单地,使用编译好的安装包进行安装,例如我的ubuntu就是直接使用synaptic(新立得)安装的使用mount -o loop -t squashfs <smgfile> <mountpoint>挂载smg文件tar zcvf <arch.tar.gz> <mountpoint>umount <mountpoint>tar zxvf <arch.tar.gz> -C ./修改刷机包的过程与EZX基本类似。但根文件系统已有较大不同,需探索一番使用mksquashfs <mountpoint> <newsmgfile>来生成新的smg文件在尾部添加FF内容,使新的smg文件达到原smg大小(要是生成就超过,那就删点你的东西吧,呵呵)我分解的z6_cmcc_nolock_r60_g_80.31.17r各smg文件列表如下:cg36=rootfscg43=setupcg44=secure setup*cg52=resource未发现这几个smg存在像EZX一样的FF头部,各squashfs的smg文件均可直接挂载*:需要注意的是:cg44包含0x800尾部,呵呵,这个很意外直接用winhex拷原版cg44的尾部,替换生成的smg的尾部吧。制作完smg文件后需要进行的是刷机包sbf的替换和修改先将你的修改的smg的内容替换进sbf里原smg的位置,这个较简单比较重要的是checksum的替换,这关系到你的sbf能否正确刷入,完成checksum校验各smg 的 checksum 保存在sbf文件内的0x750~0x1000位置使用checksum <smgfile>来获得checksum值,注意,得出的值是反向的,如得到ab cd,则应写入/查找 cd ab* checksum.exe作者是yan0以下是我拆的版本的各smg checksum值及值的位置:cg36.smg 85 A5 @ 0x7F4cg43.smg 26 F5 @ 0x8B8cg44.smg 1A 7A @ 0x8D4cg46.smg 65 4C @ 0x90Ccg52.smg 05 EB @ 0x9E4