99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀數(shù)據(jù)損壞了,你知道不知道?
數(shù)據(jù)損壞了,你知道不知道?
2016-08-04
收藏

數(shù)據(jù)損壞了,你知道不知道?

數(shù)據(jù)分析損壞隨時可能發(fā)生在任何人身上,沒有任何辦法可保證它不會發(fā)生。DBA的職責(zé)是,盡量盡早發(fā)現(xiàn)損壞,并及時處理。我在之前的文章《DBA 五大致命失誤:你的數(shù)據(jù)可靠嗎?》中提到過,數(shù)據(jù)受損是災(zāi)難事件中的一部分,現(xiàn)在單獨拿出來討論,希望大家能夠重視它的重要性。大多數(shù)DBA沒有豐富經(jīng)驗如何處理損壞,因為這并不是定期會遇到的問題。真正發(fā)生時,關(guān)鍵措施之一就是迅速找到損壞的數(shù)據(jù)所在。如果不這樣做,可能會導(dǎo)致無法從損壞之處進(jìn)行恢復(fù),并且不丟失數(shù)據(jù),相反,可能有時會丟失大量數(shù)據(jù)。


SQL Server提供了很多內(nèi)置的方法幫助檢測損壞。 我在之前一文介紹了用于備份和恢復(fù)的CHECKSUM選項,并在以后會介紹頁校驗(page verification)選項?,F(xiàn)在要介紹的是使用DBCC CHECKDB命令或其他DBCC CHECK命令進(jìn)行基本的數(shù)據(jù)完整性檢查。


DBA再忙,但至少應(yīng)該定期檢查所有數(shù)據(jù)庫的完整性。經(jīng)常被DBA忽視的是“定期檢查”?;謴?fù)受損數(shù)據(jù)不丟失任何數(shù)據(jù),并將停機時間最小化,這就意味著要對部分或整個數(shù)據(jù)庫進(jìn)行備份。但是,如果你備份的數(shù)據(jù)庫已經(jīng)受損(沒有使用CHECKSUM選項),那你得到的就是受損的備份。如果這個受損備份長時間沒有被發(fā)現(xiàn),你不太可能有一個好的、未損壞的備份,并能夠把數(shù)據(jù)庫恢復(fù)到當(dāng)前時間。


即使是在磁帶上長期存儲,你可能也需要及時檢查備份是否有損壞。也有可能你并沒有從受損點之后的所有日志文件,以致你無法把數(shù)據(jù)庫恢復(fù)至當(dāng)前。這可能意味著相當(dāng)多的數(shù)據(jù)會丟失。至少,如果通過異地存儲進(jìn)行恢復(fù),可能造成長時間的宕機。最糟的情況是,大多數(shù)(或全部)的數(shù)據(jù)可能丟失。曾有過這樣的公司因為發(fā)生類似的事件,造成最后公司倒閉。


雖然DBCC CHECKDB WITH REPAIR_ALLOW_DATA_LOSS這個選項操作簡單,但自動修復(fù)損壞應(yīng)該作為最后不得已的選擇。這個選項通過重新分配受損頁進(jìn)行修復(fù),但如果數(shù)據(jù)頁一旦消失了,就永久消失了。在無法快速查找損壞,也沒有未受損的有效備份時,很多DBA可能會采用這種方法。但,這是DBA很嚴(yán)重的疏忽之處,不及時檢測受損數(shù)據(jù),會讓自己時刻面臨被炒的危險。


數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }