Oracle壞塊故障葵花寶典_第1頁(yè)
Oracle壞塊故障葵花寶典_第2頁(yè)
Oracle壞塊故障葵花寶典_第3頁(yè)
Oracle壞塊故障葵花寶典_第4頁(yè)
Oracle壞塊故障葵花寶典_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 PAGE 29Oraclle壞塊故故障總結(jié) 最近處處理了兩次次典型的oora-0015788,oraa-011115,oora-0011100故障,一一次是平湖湖索引塊壞壞,一次是是黃山數(shù)據(jù)據(jù)文件壞、blobb數(shù)據(jù)塊壞壞。平湖的警告告日志文件件中有以下下信息:ORA-1120122: errror on aauto execcute of jjob 221ORA-0015788: ORRACLEE datta bllock corrrupteed (ffile # 100, bllock # 255586110)ORA-0011100: daata ffile 10: D:ORACCLEOO

2、RADAATABBSUSSERS004.DBBFORA-1120122: errror on aauto execcute of jjob 11ORA-0015788: ORRACLEE datta bllock corrrupteed (ffile # 166, bllock # 266240666)ORA-0011100: daata ffile 16: D:ORACCLEOORADAATABBSUSSERS110.DBBF應(yīng)用軟件可可以正常使使用,偶爾爾會(huì)報(bào)錯(cuò)oora-0015788。排錯(cuò)過(guò)程登錄數(shù)據(jù)庫(kù)庫(kù)檢查:selecct coount(*) ffrom ep_ttablee t ww

3、heree pttimetrunnc(syysdatte)-330 annd allarmttype=07841663selecct coount(*) ffrom ep_ttablee t42810062看來(lái)全表掃掃描正常selecct ffrom ep_ttablee t wwheree pttimetrunnc(syysdatte)-333 annd allarmttype=0 annd roownumm100001索引掃描報(bào)報(bào)錯(cuò)了,推推斷為索引引上有壞塊塊!繼續(xù)查:selecct owwner,filee_id,segmment_namee, seegmennt_tyype, bloc

4、ck_idd, bllockssfroom dbba_exxtenttswheree fiile_iid=166 andd bloock_iid= 262240666;OWNERRFILE_IDSEGMEENT_NNAMESEGMEENT_TTYPEBLOCKK_IDBLOCKKSBS16VHINOOINDEXX2624006616運(yùn)氣真好重重建相關(guān)索索引后數(shù)據(jù)據(jù)庫(kù)就恢復(fù)復(fù)了。黃山壞塊故故障就比較較復(fù)雜了,硬盤壞導(dǎo)致多個(gè)數(shù)據(jù)文件的多個(gè)塊故障,其中還有blob對(duì)象。Countt(*)一一張表報(bào)錯(cuò)錯(cuò):查詢某張表表系統(tǒng)事件中中有報(bào)錯(cuò):磁盤管理中中報(bào)錯(cuò):Dell的的服務(wù)器,22塊72GG硬盤,沒(méi)沒(méi)有做

5、raaid,88i數(shù)據(jù)庫(kù)庫(kù)沒(méi)有備份份。(上圖圖磁盤3為為移動(dòng)硬盤盤)初步檢查到到這里我感感覺(jué)這次壞壞的嚴(yán)重了了,恢復(fù)可可能比較麻麻煩。整理一下思思路:不要隨意重重啟記錄損壞的的數(shù)據(jù)信息息導(dǎo)出可用數(shù)數(shù)據(jù)更換故障硬硬盤重做系統(tǒng)及及數(shù)據(jù)庫(kù)恢復(fù)數(shù)據(jù)重傳丟失的的數(shù)據(jù)(我我們的系統(tǒng)統(tǒng)架構(gòu)可以以這樣做)排錯(cuò)過(guò)程selecct * fromm dbaa_exttentss wheere ffile_id=88 andd 146618422 bettweenn bloock_iid annd bllock_id+bblockks-11BSSYS_LOB0000000037770C000017$LOBSSEGME

6、ENTUSERRS3457708146118421310072168解釋:bllock_id+bblockks-1=14611842+這個(gè)區(qū)有有多少個(gè)bblockk-1查到故障段段為L(zhǎng)OBBSEGMMENT類類型,SYYS_LOOB000000033770CC000117$。selecct dll.tabble_nname,dl.SSEGMEENT_NNAME fromm dbaa_lobbs dll wheere ddl.owwner= BS wwheree dl.SEGMMENT_NAMEE= SSYS_LLOB0000000037700C000017$查到有壞塊塊的表為EP_PECCC。

7、接著查出這這張表的llob索引引段Selecct A.TTABLEE_NAMME,A.COLUUMN_NNAME,B.SEEGMENNT_NAAME,BB.SEGGMENTT_TYPPE,B.HEADDER_FFILE,B.HEEADERR_BLOOCK,BB.BYTTES from DBA_LOBSS A,DDBA_SSEGMEENTS B wheree A.IINDEXX_NAMME=B.SEGMMENT_NAMEE ANDD A.TTABLEE_NAMME=EEP_PEECC當(dāng)時(shí)因?yàn)闆](méi)沒(méi)有記錄,所所以我隨便便舉例:1EP_TABLLETHIRRDPICCTSYS_IL0000005527

8、388C000018$LOBIINDEXX71556553362EP_TABLLEPANOORAMAAPICTTSYS_IL0000005527388C000017$LOBIINDEXX71396553363EP_TABLLEPLATTEPICCTSYS_IL0000005527388C000016$LOBIINDEXX7123655336selecct rowwid fromm BS.EP_PPECC wheere dbmss_rowwid.rrowidd_to_absoolutee_fnoo(rowwid,BS,EP_PPECC)=8 and dbmss_rowwid.rrowidd_bl

9、oock_nnumbeer(roowid)=146618422;這個(gè)塊無(wú)法法找出bllob段的的rowiid。本想想找后我可可以按照rrowidd清空故障障的bloob數(shù)據(jù)。選擇一個(gè)范范圍繼續(xù)找找:selecct roowid,T.PTTIME,T.PLLATEPPICT,T.PAANORAAMAPIICT fromm BS.EP_PPECC T wheere ddbms_rowiid.roowid_to_aabsollute_fno(rowiid,BBS,EP_PPECC)=8 and dbmss_rowwid.rrowidd_bloock_nnumbeer(roowid) BETTWEEN

10、N 146618400 ANDD 146618422;還是沒(méi)有找找到selecct roowid, dbmms_roowid.rowiid_obbjectt(rowwid) obj_id, dbms_rowiid.roowid_relaativee_fnoo(rowwid) df#, dbms_rowiid.roowid_blocck_nuumberr(rowwid) blknnum, dbms_rowiid.roowid_row_numbber(rrowidd) roowno ,T.PPTIMEE,T.AALARMMTYPEE,T.PPLATEEPICTT,T.PPANORRAMAPPICT

11、from EP_PPECC T whhere dbmss_rowwid.rrowidd_to_absoolutee_fnoo(rowwid,BS,EP_PPECC)=88 ANND dbbms_rrowidd.rowwid_bblockk_nummber(rowiid) BBETWEEEN 114618842 AAND 14611842 +10244;還沒(méi)找到selecct roowid, dbmms_roowid.rowiid_obbjectt(rowwid) obj_id, dbms_rowiid.roowid_relaativee_fnoo(rowwid) df#, dbms_rowii

12、d.roowid_blocck_nuumberr(rowwid) blknnum, dbms_rowiid.roowid_row_numbber(rrowidd) roowno ,T.PPTIMEE,T.AALARMMTYPEE,T.PPLATEEPICTT,T.PPANORRAMAPPICTfrom EP_PPECC T whhere dbmss_rowwid.rrowidd_to_absoolutee_fnoo(rowwid,BS,EP_PPECC)=88 ANND dbbms_rrowidd.rowwid_bblockk_nummber(rowiid) BBETWEEEN 1146177

13、42 AAND 14611842;終于找到了了一些AAAA666AAIIAAFkkrSAAAJ37700814600946920099-10-26 119:400:080省略一些結(jié)結(jié)果集AAAA666AAIIAAFkk5JAAAG37700814611833620099-10-26 119:477:080查到以下記記錄時(shí)出錯(cuò)錯(cuò),看來(lái)按照照rowiid清空故故障的bllob數(shù)據(jù)據(jù)不行AAAA666AAIIAAFkk5JAAAGROWIDD_TYPPE: 1OBJECCT_NUUMBERR: 33770RELATTIVE_FNO: 8BLOCKK_NUMMBER: 144618333ROW_NNU

14、MBEER: 6可以從obbj#,rrfilee#,bllock#,roww#計(jì)算得得到理論上上的rowwid Obj# 37700Rfilee# 8Blockk# 144618442Row# 0實(shí)際上就是是將十進(jìn)制制數(shù)轉(zhuǎn)化成成64進(jìn)制制數(shù),當(dāng)然然,從二進(jìn)進(jìn)制轉(zhuǎn)化的的規(guī)則比較較簡(jiǎn)單點(diǎn)。將二進(jìn)制數(shù)數(shù)從右到左左,6個(gè)bbit一組組,然后將將這6個(gè)bbit組轉(zhuǎn)轉(zhuǎn)成10進(jìn)進(jìn)制數(shù),就就是AZZ azz 099 + /這64個(gè)個(gè)字符的位位置(從00開始),替替換成baase644的字符即即可。roowid是是basee64編碼碼的,用AAZ aaz 009 + /共664個(gè)字符符表示。AA表示0,BB表示

15、1,a表示26,0表示52,+表示62,/表示63可以將其看做一個(gè)64進(jìn)制的數(shù)。obj#=37700轉(zhuǎn)換成二二進(jìn)制,補(bǔ)補(bǔ)足成6位位basee64編碼碼,左邊填填0,結(jié)果果為AAAAA66rfilee#=8=0010000=I,補(bǔ)補(bǔ)足成3位位,得到AAAIblockk#=144618442=0001001 1001100 1110001 0100010=5 366 57 18,補(bǔ)足足成6位,得得到AAFFk5Srow#=0,3位位AAA合起來(lái)就是是AAAAA66AAAIAAFFk5SAAAA但是不要忘忘了,這次次壞的是bblob它它會(huì)跨多個(gè)個(gè)塊的。所所以這條理理論rowwid沒(méi)有有找到!舉例子補(bǔ)

16、充充說(shuō)明:selecct * fromm dbaa_lobbs dll wheere ddl.owwner=TESST1TESSTT_LOOGRZSYS_LOB0000000527226C000002$TESTTSYS_IL0000005527266C000002$81922900NOYESYESNOT APPLLICABBLE NO2TESSTEP_TTABLEEPLATTEPICCTSYS_LOB0000000527338C000016$TESTTSYS_IL0000005527388C000016$81922900NOYESYESNOT APPLLICABBLE NO3TESSTEP_T

17、TABLEEPANOORAMAAPICTTSYS_LOB0000000527338C000017$TESTTSYS_IL0000005527388C000017$81922900NOYESYESNOT APPLLICABBLE NO4TESSTEP_TTABLEETHIRRDPICCTSYS_LOB0000000527338C000018$TESTTSYS_IL0000005527388C000018$81922900NOYESYESNOT APPLLICABBLE NO5TESSTEP_PPECCPLATTEPICCTSYS_LOB0000000527446C000016$TESTTSYS_

18、IL0000005527466C000016$81922900NOYESYESNOT APPLLICABBLE NO6TESSTEP_PPECCPANOORAMAAPICTTSYS_LOB0000000527446C000017$TESTTSYS_IL0000005527466C000017$81922900NOYESYESNOT APPLLICABBLE NO7TESSTEP_PPECCTHIRRDPICCTSYS_LOB0000000527446C000018$TESTTSYS_IL0000005527466C000018$81922900NOYESYESNOT APPLLICABBLE

19、NO沒(méi)有任何數(shù)數(shù)據(jù)時(shí):selecct dll.TABBLE_NNAME,dl.CCOLUMMN_NAAME,dde.seegmennt_naame,dde.seegmennt_tyype,dde.FIILE_IID,dee.BLOOCK_IID frrom ddba_eextennts dde,dbba_loobs ddl whhere de.oownerr=TEEST and ddl.OWWNER=TESST and dde.seegmennt_naame=ddl.SEEGMENNT_NAAME1T_LLOGRZSYS_LOB0000000527226C000002$LOBSSEGMEENT

20、7172EP_TABLLEPLATTEPICCTSYS_LOB0000000527338C000016$LOBSSEGMEENT71133EP_TABLLEPANOORAMAAPICTTSYS_LOB0000000527338C000017$LOBSSEGMEENT71294EP_TABLLETHIRRDPICCTSYS_LOB0000000527338C000018$LOBSSEGMEENT71455EP_PECCCPLATTEPICCTSYS_LOB0000000527446C000016$LOBSSEGMEENT71776EP_PECCCPANOORAMAAPICTTSYS_LOB000

21、0000527446C000017$LOBSSEGMEENT71937EP_PECCCTHIRRDPICCTSYS_LOB0000000527446C000018$LOBSSEGMEENT7209向EP_TTABLEE表的PLAATEPIICT字段段,插入一一張9MBB大小的圖圖片后結(jié)果:1T_LLOGRZSYS_LOB0000000527226C000002$LOBSSEGMEENT7172EP_TABLLEPLATTEPICCTSYS_LOB0000000527338C000016$LOBSSEGMEENT71133EP_TABLLEPLATTEPICCTSYS_LOB0000000527

22、338C000016$LOBSSEGMEENT72734EP_TABLLEPLATTEPICCTSYS_LOB0000000527338C000016$LOBSSEGMEENT72815EP_TABLLEPLATTEPICCTSYS_LOB0000000527338C000016$LOBSSEGMEENT72896EP_TABLLEPLATTEPICCTSYS_LOB0000000527338C000016$LOBSSEGMEENT72977EP_TABLLEPLATTEPICCTSYS_LOB0000000527338C000016$LOBSSEGMEENT73058EP_TABLLEPLA

23、TTEPICCTSYS_LOB0000000527338C000016$LOBSSEGMEENT73139EP_TABLLEPLATTEPICCTSYS_LOB0000000527338C000016$LOBSSEGMEENT732110EPP_TABBLEPLATTEPICCTSYS_LOB0000000527338C000016$LOBSSEGMEENT732911EPP_TABBLEPLATTEPICCTSYS_LOB0000000527338C000016$LOBSSEGMEENT733712EPP_TABBLEPLATTEPICCTSYS_LOB0000000527338C00001

24、6$LOBSSEGMEENT734513EPP_TABBLEPLATTEPICCTSYS_LOB0000000527338C000016$LOBSSEGMEENT735314EPP_TABBLEPLATTEPICCTSYS_LOB0000000527338C000016$LOBSSEGMEENT736115EPP_TABBLEPLATTEPICCTSYS_LOB0000000527338C000016$LOBSSEGMEENT736916EPP_TABBLEPLATTEPICCTSYS_LOB0000000527338C000016$LOBSSEGMEENT737717EPP_TABBLEPL

25、ATTEPICCTSYS_LOB0000000527338C000016$LOBSSEGMEENT738518EPP_TABBLEPLATTEPICCTSYS_LOB0000000527338C000016$LOBSSEGMEENT6919EPP_TABBLEPLATTEPICCTSYS_LOB0000000527338C000016$LOBSSEGMEENT739320EPP_TABBLEPLATTEPICCTSYS_LOB0000000527338C000016$LOBSSEGMEENT613721EPP_TABBLEPLATTEPICCTSYS_LOB0000000527338C0000

26、16$LOBSSEGMEENT752122EPP_TABBLEPLATTEPICCTSYS_LOB0000000527338C000016$LOBSSEGMEENT626523EPP_TABBLEPLATTEPICCTSYS_LOB0000000527338C000016$LOBSSEGMEENT764924EPP_TABBLEPLATTEPICCTSYS_LOB0000000527338C000016$LOBSSEGMEENT639325EPP_TABBLEPLATTEPICCTSYS_LOB0000000527338C000016$LOBSSEGMEENT777726EPP_TABBLEP

27、LATTEPICCTSYS_LOB0000000527338C000016$LOBSSEGMEENT652127EPP_TABBLEPANOORAMAAPICTTSYS_LOB0000000527338C000017$LOBSSEGMEENT712928EPP_TABBLETHIRDDPICTTSYS_LOB0000000527338C000018$LOBSSEGMEENT714529EPP_PECCCPLATTEPICCTSYS_LOB0000000527446C000016$LOBSSEGMEENT717730EPP_PECCCPANOORAMAAPICTTSYS_LOB000000052

28、7446C000017$LOBSSEGMEENT719331EPP_PECCCTHIRRDPICCTSYS_LOB0000000527446C000018$LOBSSEGMEENT7209查testt用戶bllob容量量:selecct sum(dde.BYYTES/10244/10244) froom dbba_exxtentts dee,dbaa_lobbs dll wheere dde.owwner=TESST AND ddl.OWWNER=TESST AND dde.seegmennt_naame=ddl.seegmennt_naame10.3775顯示10MMB檢查表建在在那個(gè)數(shù)據(jù)據(jù)

29、文件那個(gè)個(gè)塊上SELECCT DISTTINCTT dbmms_roowid.rowiid_reelatiive_ffno(rrowidd) AS FFile, dbbms_rrowidd.rowwid_bblockk_nummber(rowiid) AS BBlockk FROMM ep_ttablee; FFileBlocck71110看起來(lái)這個(gè)個(gè)表存放在在文件號(hào)77,塊號(hào)1110的地地方查找存放圖圖片的bllob段:selecct dee.seggmentt_namme,dee.EXTTENT_ID,dde.FIILE_IID,dee.BLOOCK_IID,dee.BYTTES,dde.

30、BLLOCKSS,de.relaativee_fnoo froom dbba_exxtentts dee wheere dde.owwner=TESST and dde.seegmennt_naame=SYS_LOB0000000527338C000016$我已經(jīng)往這這個(gè)段里存存放了一張張9MB的的圖片,占占用了以下下塊。 SSEGMEENT_NNAME EXTEENT_IIDFILEE_IDBLOCCK_IDDBYTEESBLOCCKSRELAATIVEE_FNOO1SYSS_LOBB000000527738C0000166$07113655336872SYSS_LOBB0000005277

31、38C0000166$17273655336873SYSS_LOBB000000527738C0000166$27281655336874SYSS_LOBB000000527738C0000166$37289655336875SYSS_LOBB000000527738C0000166$47297655336876SYSS_LOBB000000527738C0000166$57305655336877SYSS_LOBB000000527738C0000166$67313655336878SYSS_LOBB000000527738C0000166$77321655336879SYSS_LOBB00

32、0000527738C0000166$873296553368710SYYS_LOOB000000522738CC000116$973376553368711SYYS_LOOB000000522738CC000116$1073456553368712SYYS_LOOB000000522738CC000116$1173536553368713SYYS_LOOB000000522738CC000116$1273616553368714SYYS_LOOB000000522738CC000116$1373696553368715SYYS_LOOB000000522738CC000116$1473776

33、553368716SYYS_LOOB000000522738CC000116$1573856553368717SYYS_LOOB000000522738CC000116$166910488576128618SYYS_LOOB000000522738CC000116$17739310488576128719SYYS_LOOB000000522738CC000116$18613710488576128620SYYS_LOOB000000522738CC000116$19752110488576128721SYYS_LOOB000000522738CC000116$20626510488576128

34、622SYYS_LOOB000000522738CC000116$21764910488576128723SYYS_LOOB000000522738CC000116$22639310488576128624SYYS_LOOB000000522738CC000116$23777710488576128725SYYS_LOOB000000522738CC000116$246521104885761286根據(jù)上一步步查出來(lái)的的BLOCCK_IDD一陣狂找,終終于找到了了selecct rowiid, ddbms_rowiid.roowid_objeect(rrowidd) obbj_idd, dbm

35、s_rowiid.roowid_relaativee_fnoo(rowwid) df#, dbms_rowiid.roowid_blocck_nuumberr(rowwid) blknnum, dbms_rowiid.roowid_row_numbber(rrowidd) roowno ,T.PPTIMEE,T.AALARMMTYPEE,T.PPLATEEPICTT,T.PPANORRAMAPPICTfrom ep_ttablee T whhere dbmss_rowwid.rrowidd_to_absoolutee_fnoo(rowwid,TESST,EP_TTABLEE)=7 AND dd

36、bms_rowiid.roowid_blocck_nuumberr(rowwid) BETWWEEN 1 AND 113; RROWIDDOBJ_IDDF#BLKNNUMROWNNOPTIMMEALARRMTYPPEPLATTEPICCTPANOORAMAAPICTT1AAAAM4CAAAHAAAAABuuAAA5273387110020099-11-29 222:511:580看來(lái)它跨越越了6號(hào)數(shù)數(shù)據(jù)文件的的9號(hào)塊到到7號(hào)數(shù)據(jù)據(jù)文件的7777號(hào)塊塊根據(jù)rowwid反過(guò)過(guò)來(lái)驗(yàn)證一一下塊信息息:declaarev_rowwid_ttype numbber;v_OBJJECT_NUMBBER nn

37、umbeer;v_RELLATIVVE_FNNO nuumberr;v_BLOOCK_NNUMBEERE_FFNO nnumbeer;v_ROWW_NUMMBER numbber;beginndbms_rowiid.roowid_infoo(rowwid_iin = AAAAM4CCAAHAAAAABBuAAAA,roowid_typee = v_roowid_typee,objject_numbber = v_OBJEECT_NNUMBEER,relattive_fno = vv_RELLATIVVE_FNNO,bllock_numbber = v_BLOCCK_NUUMBERRE_FNNO

38、,roow_nuumberr = v_ROOW_NUUMBERR);dbms_outpput.pput_lline(ROWWID_TTYPE: |to_charr(v_rrowidd_typpe);dbms_outpput.pput_lline(OBJJECT_NUMBBER: |to_cchar(v_OBBJECTT_NUMMBER);dbms_outpput.pput_lline(RELLATIVVE_FNNO: |tto_chhar(vv_RELLATIVVE_FNNO);dbms_outpput.pput_lline(BLOOCK_NNUMBEER: |tto_chhar(vv_BLO

39、OCK_NNUMBEERE_FFNO);dbms_outpput.pput_lline(ROWW_NUMMBER: |to_charr(v_RROW_NNUMBEER);end;/ROWIDD_TYPPE: 1OBJECCT_NUUMBERR: 5527388RELATTIVE_FNO: 7BLOCKK_NUMMBER: 1110ROW_NNUMBEER: 0也就是說(shuō)如如果bloob字段發(fā)發(fā)生壞塊,可能壞塊的block_id為273,但是要查找記錄的rowid的話需要前后跨越一段block_id才有可能找到,例如這里的110。而從obj#,rfile#,block#,row#計(jì)算得到理論上的r

40、owid可能不存在?;氐近S山壞壞塊故障上上:SELECCT COOUNT(*) FROMM EP_PECCC WHEERE TTO_CHHAR(PPTIMEE,YYYYYMMMDD) 2200911125 ANDD TO_CHHAR(PPTIMEE,YYYYYMMMDD) 2200911127;ERRORR 位于第第 1 行行:ORA-0011155: 從文文件 8 讀取塊時(shí)時(shí)出現(xiàn) IIO 錯(cuò)誤誤 (塊 # 144618442)ORA-0011100: 數(shù)據(jù)據(jù)文件 88: EE:ORRADATTADZZJCUUSERSS02.DDBFORA-2270911: skkgfqiio: 無(wú)無(wú)法進(jìn)行

41、I/O 操作OSD-0040066: ReeadFiile() 失敗,無(wú)法自文文件讀取O/S-EErrorr: (OOS 233) 數(shù)據(jù)據(jù)錯(cuò)誤 (循環(huán)冗余余檢查)。驗(yàn)證了這個(gè)個(gè)時(shí)間段區(qū)區(qū)間內(nèi)的數(shù)數(shù)據(jù)有壞塊塊!Selecct coount(*) ffrom EP_PPECC t whhere PTIMMETO_DATEE(2000910026 220:488:57,yyyyymmmdd HHH24:MI:SSS)沒(méi)有報(bào)錯(cuò)結(jié)論:144618333塊為 2200911026 20:447:577到 2000910026 220:488:57 之間。同同時(shí)我也偷偷懶了沒(méi)有有繼續(xù)查找找因?yàn)檫B著著壞了好多

42、多塊?;謴?fù)完數(shù)數(shù)據(jù)庫(kù)后重重傳這段時(shí)時(shí)間的記錄錄就行了!備份時(shí)只需需把期間的的數(shù)據(jù)備份份出來(lái)就可可以。DELETTE frrom EEP_PEECC tt wheere PPTIMEETTO_DAATE(2009910011 00:00:000,yyyyymmddd HH224:MII:SS)和用戶溝通通了一下,把把以前的過(guò)過(guò)期記錄全全部刪除后來(lái)發(fā)現(xiàn)另另外一張表表EP_TTABLEE導(dǎo)出時(shí)也也有壞塊。即將導(dǎo)出指指定的表通通過(guò)常規(guī)路路徑 . . 正正在導(dǎo)出表表 EPP_TABBLEEXP-0000566: ORRACLEE 錯(cuò)誤 11155 出現(xiàn)ORA-0011155: 從文文件 8 讀取塊時(shí)時(shí)出

43、現(xiàn) IIO 錯(cuò)誤誤 (塊 # 122003338)ORA-2270700: skkgfdiisp: 異步讀取取/寫入失失敗OSD-0040166: 查詢?cè)兎峭?I/O 請(qǐng)求發(fā)生生錯(cuò)誤.O/S-EErrorr: (OOS 233) 數(shù)據(jù)據(jù)錯(cuò)誤 (循環(huán)冗余余檢查)。ORA-0011155: 從文文件 8 讀取塊時(shí)時(shí)出現(xiàn) IIO 錯(cuò)誤誤 (塊 # 122003338)ORA-2270700: skkgfdiisp: 異步讀取取/寫入失失敗OSD-0040166: 查詢?cè)兎峭?I/O 請(qǐng)求發(fā)生生錯(cuò)誤.O/S-EErrorr: (OOS 233) 數(shù)據(jù)據(jù)錯(cuò)誤 (循環(huán)冗余余檢查)。導(dǎo)出成功終終止,但出

44、出現(xiàn)警告。同理處理。找到壞塊所所在記錄的的時(shí)間段后后exp時(shí)時(shí)跳過(guò)。后面的恢復(fù)復(fù)處理就不不寫了。特別注意:試過(guò)dbmms_reepairr,但是ddbms_repaair找不不到錯(cuò)誤的的記錄。試過(guò)ALTTER SSYSTEEM SEET EVVENTSS 100231 tracce naame cconteext fforevver,llevell 10; 也不不能成功。奇怪了,只只能猜硬盤盤壞的太厲厲害,產(chǎn)生生了物理壞壞道。RMAN 可以備備份包含損損壞數(shù)據(jù)塊塊的數(shù)據(jù)文文件,通過(guò)過(guò)設(shè)置 set maxccorruupt 可以跳過(guò)過(guò)指定個(gè)數(shù)數(shù)的壞塊來(lái)來(lái)避免備份份失敗。 RMAN sett ma

45、xxcorrrupt for dataafilee 1 tto 10;在 Oraacle99i中可以以用 RRMAN來(lái)來(lái)執(zhí)行塊級(jí)級(jí)的恢復(fù),而而且恢復(fù)期期間數(shù)據(jù)文文件可以是是聯(lián)機(jī)狀 態(tài)。RMMAN通過(guò)過(guò) Bllock Mediia Reecoveery(簡(jiǎn)簡(jiǎn)稱 BMMR)來(lái)執(zhí)執(zhí)行塊級(jí)恢恢復(fù)操作。假設(shè)我們們?cè)诓?詢?cè)円粋€(gè) Oraccle 表的時(shí)候候接收到下下面的錯(cuò)誤誤:ERRROR 位于第 1 行:ORA-015778: OORACLLE 數(shù)數(shù)據(jù)塊損壞壞(文件號(hào)號(hào) 5,塊塊號(hào) 997) ORA-0011100: 數(shù)據(jù)文文件 55: E:xxxxx.dbbf那么我們就就可以在 RMAAN中用 BLO

46、OCKREECOVEER 命令令來(lái)修復(fù):RMANN BLLOCKRRECOVVER DDATAFFILE 5 BLLOCK997; 啟啟動(dòng) bblockkrecoover 于 03-99月 -06 正正在啟動(dòng)全全部恢復(fù)目目錄的 resyync完成成全部 resyync使用用通道 ORA_DISKK_1通道道 ORRA_DIISK_11: 正在從從數(shù)據(jù)文件件副本 EE:xxxxx.bbak 恢恢復(fù)塊 正正在開始介介質(zhì)的恢復(fù)復(fù)完成介質(zhì)質(zhì)的恢復(fù)完完成 bblockkrecoover 于 03-99月 -06塊恢復(fù) BBlockk Meddia RRecovvery (BMRR),塊是是恢復(fù)的最最小單

47、元,通通過(guò)塊可以以減少恢復(fù)復(fù) 時(shí)間,而而且數(shù)據(jù)文文件可以在在線?;謴?fù)復(fù)塊的時(shí)候候,必須指指定具體的的塊號(hào),如如:RMAAN bblockkrecooverddataffile 6 bllock 3;具體體請(qǐng)見 4.7.4 塊塊媒體恢復(fù)復(fù) Bllock Mediia Reecoveery (BBMR)1)指示RRMAN從從文件的最最新備份集集或映像副副本中還原原與恢復(fù)一一個(gè)指定的的數(shù)據(jù)塊: RRMAN bloockreecoveer daatafiile 77 bloock 55;2)BLOOCKREECOVEER命令可可以接受若若干文件中中的一列數(shù)數(shù)據(jù)塊: RRMAN bloockreecov

48、eer daatafiile 77 bloock 55,6,77 dattafille 9 blocck 211,25;3)從指定定備份集中中還原數(shù)據(jù)據(jù)塊 RRMAN bloockreecoveer daatafiile 77 bloock 55 froom baackuppset 10399;4)從使用用標(biāo)記指定定的備份中中還原數(shù)據(jù)據(jù)塊 RRMAN bloockreecoveer daatafiile 77 bloock 55 froom taag moonthlly_whhole;5)使用至至少已生成成一周的備備份來(lái)還原原和恢復(fù)前前一個(gè)備份份操作發(fā)現(xiàn)現(xiàn)受損的所所有數(shù)據(jù)塊塊: RRMAN b

49、loockreecoveer coorrupptionn lisst unntil timee syssdatee - 77;注意:此處處關(guān)鍵字UUNTILL并非表示示不完全恢恢復(fù)!這個(gè)個(gè)關(guān)鍵字意意味著必須須從特定日日期(序列列號(hào)或SCCN)之前前生成的備備份中還原原數(shù)據(jù)塊。下面系統(tǒng)的的總結(jié)一下下壞塊故障障的處理:數(shù)據(jù)庫(kù)出現(xiàn)現(xiàn)壞塊現(xiàn)象象是指:在在Oraccle數(shù)據(jù)據(jù)庫(kù)的一個(gè)個(gè)或多個(gè)數(shù)數(shù)據(jù)塊內(nèi)出出現(xiàn)內(nèi)容混混亂的現(xiàn)象象。由于正正常的數(shù)據(jù)據(jù)塊都有固固定的合法法內(nèi)容格式式,壞塊的的出現(xiàn),導(dǎo)導(dǎo)致數(shù)據(jù)庫(kù)庫(kù)進(jìn)程無(wú)法法正常解析析數(shù)據(jù)塊的的內(nèi)容,進(jìn)進(jìn)而使數(shù)據(jù)據(jù)庫(kù)進(jìn)程報(bào)報(bào)錯(cuò)乃至掛掛起,并級(jí)級(jí)聯(lián)導(dǎo)致整整個(gè)數(shù)據(jù)庫(kù)庫(kù)實(shí)

50、例出現(xiàn)現(xiàn)異常。一壞塊的的產(chǎn)生原因因壞塊產(chǎn)生的的原因大致致有以下幾幾種:1.1 硬硬件問(wèn)題Oraclle進(jìn)程在在處理一個(gè)個(gè)數(shù)據(jù)塊時(shí)時(shí),首先將將其讀入物物理內(nèi)存空空間,在處處理完成后后,再由特特定進(jìn)程將將其寫回磁磁盤;如果果在這個(gè)過(guò)過(guò)程中,出出現(xiàn)內(nèi)存故故障,CPPU計(jì)算失失誤,都會(huì)會(huì)導(dǎo)致內(nèi)存存數(shù)據(jù)塊的的內(nèi)容混亂亂,最后反反映到寫回回磁盤的數(shù)數(shù)據(jù)塊內(nèi)容容有誤。同同樣,如果果存儲(chǔ)子系系統(tǒng)出現(xiàn)異異常,數(shù)據(jù)據(jù)塊損壞也也就隨之出出現(xiàn)了。1.2 操操作系統(tǒng)BBUG由于Oraacle進(jìn)進(jìn)程對(duì)數(shù)據(jù)據(jù)塊的讀寫寫,都是以以操作系統(tǒng)統(tǒng)內(nèi)核調(diào)用用(sysstem calll)的方式式完成的,如如果操作系系統(tǒng)在內(nèi)核核調(diào)用存

51、在在問(wèn)題,必必然導(dǎo)致OOraclle進(jìn)程寫寫入非法的的內(nèi)容。1.3 操操作系統(tǒng)的的I/O錯(cuò)錯(cuò)誤或緩沖沖問(wèn)題1.4 內(nèi)內(nèi)存或paagingg問(wèn)題Oraclle軟件BBUGOraclle軟件特特定版本上上,可能出出現(xiàn)導(dǎo)致數(shù)數(shù)據(jù)塊的內(nèi)內(nèi)容出現(xiàn)異異常BUGG。1.5 非非Oraccle進(jìn)程程擾亂Orraclee共享內(nèi)存存區(qū)域如上文所述述,在當(dāng)數(shù)數(shù)據(jù)塊的內(nèi)內(nèi)容被讀入入主機(jī)的物物理內(nèi)存時(shí)時(shí),如果其其他非Orraclee進(jìn)程,對(duì)對(duì)Oraccle使用用的共享內(nèi)內(nèi)存區(qū)域形形成了擾亂亂,最終導(dǎo)導(dǎo)致寫回磁磁盤的數(shù)據(jù)據(jù)塊內(nèi)容混混亂。1.6 異異常關(guān)機(jī),掉掉電,終止止服務(wù)異常關(guān)機(jī),掉掉電,終止止服務(wù)使進(jìn)進(jìn)程異常終終止,

52、而破破壞數(shù)據(jù)塊塊的完整性性,導(dǎo)致壞壞塊產(chǎn)生。注:這也是是為什么突突然斷電會(huì)會(huì)導(dǎo)致數(shù)據(jù)據(jù)庫(kù)無(wú)法啟啟動(dòng)由上可見,壞壞塊的形成成原因復(fù)雜雜。當(dāng)出現(xiàn)現(xiàn)壞塊時(shí),為為了找到確確切的原因因,需要大大量的分析析時(shí)間和排排查操作,甚甚至需要多多次重現(xiàn)才才能找出根根本原因。但當(dāng)故障障發(fā)生在生生產(chǎn)系統(tǒng)上上,我們?yōu)闉榱藴p少停停機(jī)時(shí)間,會(huì)會(huì)盡快實(shí)施施應(yīng)急權(quán)變變措施以保保證系統(tǒng)的的可用性,這這樣就破壞壞了故障現(xiàn)現(xiàn)場(chǎng),對(duì)根根本原因的的分析因而而也更加困困難了。二壞塊的的預(yù)防壞塊問(wèn)題破破壞性大,但但并非不可可預(yù)防。2.1 在在M網(wǎng)網(wǎng)站,Orraclee定期發(fā)布布基于特定定軟件版本本的“已知問(wèn)題題(knoown iissuee

53、s)說(shuō)明明”。對(duì)于可可能導(dǎo)致壞壞塊的Orraclee軟件BUUG,在OOraclle公司內(nèi)內(nèi)部,是作作為高嚴(yán)重重級(jí)別的問(wèn)問(wèn)題進(jìn)行處處理,在“已知問(wèn)題題(knoown iissuees)說(shuō)明明”中,這些些BUG以以嚴(yán)重(NNoticcablee)問(wèn)題標(biāo)標(biāo)出(標(biāo)記記為*或+),部分分問(wèn)題,OOraclle還會(huì)發(fā)發(fā)布警告(Alerrt)通告告。在文檔檔中,Orraclee會(huì)提供相相應(yīng)的補(bǔ)丁丁或應(yīng)對(duì)措措施。2.2 OOraclle提供備備份恢復(fù)工工具Reecoveery MManagger,提提供了掃描描文件檢查查壞塊的功功能。在Recooveryy Mannagerr界面中,使使用:RMAN BAC

54、CKUP CHECCK LOOGICAAL VAALIDAATE DDATAFFILE n ;可以檢查數(shù)數(shù)據(jù)文件是是否包含壞壞塊,同時(shí)時(shí)并不產(chǎn)生生實(shí)際的備備份輸出。2.3 DDbv工具具檢查注:因?yàn)閐dbv要求求filee后面跟的的必須是一一個(gè)文件擴(kuò)擴(kuò)展名,所所以如果用用裸設(shè)備存存儲(chǔ)的,就就必須使用用ln鏈接接裸設(shè)備到到一個(gè)文件件,然后再再用dbvv對(duì)這個(gè)鏈鏈接文件進(jìn)進(jìn)行檢查。ANALYYZE TTABLEE tabblenaame VVALIDDATE STRUUCTURRE CAASCADDE它執(zhí)行壞塊塊的檢查,但但是不會(huì)標(biāo)標(biāo)記壞塊為為corrrupt,檢檢測(cè)的結(jié)果果保存在UUSER_DU

55、MPP_DESST目錄下下的用戶ttracee文件中。2.4 利利用expp工具導(dǎo)出出整個(gè)數(shù)據(jù)據(jù)庫(kù)可以檢檢測(cè)壞塊對(duì)以下情況況的壞塊是是檢測(cè)不出出來(lái)的:HWM以上上的壞塊是是不會(huì)發(fā)現(xiàn)現(xiàn)的索引中存在在的壞塊是是不會(huì)發(fā)現(xiàn)現(xiàn)的數(shù)據(jù)字典中中的壞塊是是不會(huì)發(fā)現(xiàn)現(xiàn)的結(jié)合數(shù)據(jù)庫(kù)庫(kù)性能綜合合考慮dbb_bloock_ccheckksum和和db_bblockkchecckingg參數(shù)。當(dāng)我們使用用Recooveryy Mannagerr進(jìn)行實(shí)際際的數(shù)據(jù)庫(kù)庫(kù)備份時(shí),同同時(shí)也就進(jìn)進(jìn)行了壞塊塊檢查。但但要注意的的是,在線線使用Reecoveery MManagger掃描描壞塊和備備份時(shí),需需要數(shù)據(jù)庫(kù)庫(kù)運(yùn)行在歸歸檔模式

56、(aarchiive llog),否否則只能在在數(shù)據(jù)庫(kù)未未打開的情情況下進(jìn)行行。對(duì)于操操作系統(tǒng)問(wèn)問(wèn)題和硬件件故障,則則需要相應(yīng)應(yīng)廠商的配配合支持。同時(shí),避避免在數(shù)據(jù)據(jù)庫(kù)主機(jī)運(yùn)運(yùn)行其他用用戶進(jìn)程,避避免異常停停機(jī),也會(huì)會(huì)減少壞塊塊發(fā)生的幾幾率。三壞塊故故障的識(shí)別別遇到壞塊問(wèn)問(wèn)題時(shí),數(shù)數(shù)據(jù)庫(kù)的異異常表現(xiàn)通通常有:報(bào)告ORAA-015578錯(cuò)誤誤。報(bào)告Oraa-11110錯(cuò)誤。報(bào)告ORAA-006600錯(cuò)誤誤,其中,第第一個(gè)參數(shù)數(shù)為20000-80000,CCachee layyer 22000 40000,Trransaactioon laayer 40000 60000,Daata llayer

57、r 60000 - 80000。Tracee文件中出出現(xiàn)Corrruptt bloock ddba: 0 x1660c59958 . fouund。分析對(duì)象失失敗。后臺(tái)進(jìn)程,如DBWWR,LGGWR出現(xiàn)現(xiàn)長(zhǎng)時(shí)間異異常等待,如如“LGWRR waiit foor reedo ccopy”。四Oraacle數(shù)數(shù)據(jù)塊損壞壞恢復(fù)總結(jié)結(jié)可以用DBBV 命令令來(lái)檢測(cè)是是否有壞塊塊:在恢復(fù)前使使用DBVV命令檢查查數(shù)據(jù)文件件是否存在在壞塊dbv ffile=d:ooraclleorradattamyydbRRONLYY.DBFF bloocksiize=88192查看數(shù)據(jù)壞壞塊所在數(shù)數(shù)據(jù)文件號(hào)號(hào)及塊號(hào)可可以

58、對(duì)表進(jìn)進(jìn)行一次全全表掃描,如如:selecct coount(*) ffrom tabllenamme;關(guān)于DBVV 命令的的具體使用用,請(qǐng)參考考blogg:http:/tiannlesooftwaare/aarchiive/22009/12/116/500151664.asspx4.1 沒(méi)沒(méi)有備份的的情況下:4.1.11、使用eexp/iimp恢復(fù)復(fù)在這種情況況下肯定會(huì)會(huì)造成數(shù)據(jù)據(jù)的丟失,在在這種情況況下應(yīng)采取取將數(shù)據(jù)導(dǎo)導(dǎo)出然后重重建表再進(jìn)進(jìn)行導(dǎo)入的的方法,來(lái)來(lái)盡量恢復(fù)復(fù)損壞數(shù)據(jù)據(jù)塊中的數(shù)數(shù)據(jù),但是是在有壞塊塊的情況下下是不允許許導(dǎo)出的,如如下命令:Exp ttest/testt fille

59、=t.dmp tablles=tt;導(dǎo)出命令在在執(zhí)行中會(huì)會(huì)報(bào)ORAA-015578錯(cuò)誤誤,在這錯(cuò)錯(cuò)誤提示中中會(huì)提示那那個(gè)文件號(hào)號(hào)的文件以以及這個(gè)文文件中的哪哪個(gè)塊被損損壞,如:ORA015778:ORRACLEE 數(shù)據(jù)塊塊損壞(文文件號(hào) 44,塊號(hào) 35)針對(duì)以上的的提示首先先查詢那些些對(duì)象被損損壞:Selecct taablesspacee_namme,seegmennt_tyype,oownerr,seggmentt_namme Frrom ddba_eextennts WWheree fille_idd=4 aand 335 beetweeen bllock_id aand bblock

60、k_id+bloccks-11;如果被損壞壞的塊是索索引,通常??梢酝ㄟ^(guò)過(guò)索引重建建來(lái)解決,如如果損壞的的是數(shù)據(jù)(ssegmeent_ttype為為tablle),那那么通過(guò)設(shè)設(shè)置如下內(nèi)內(nèi)部事件使使得Expp操作跳過(guò)過(guò)壞塊。Alterr sesssionn sett eveents=102231 ttracee namme coontexxt fooreveer,leevel 10;然后重新執(zhí)執(zhí)行導(dǎo)出命命令,導(dǎo)出出相關(guān)的表表,然后執(zhí)執(zhí)行Droop Taable命命令刪除相相關(guān)表,之之后重建表表最后導(dǎo)入入數(shù)據(jù)。4.1.22、使用DDBMS_REPAAIR恢復(fù)復(fù)用DBMSS_REPPAIR當(dāng)當(dāng)然也

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論