版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 PAGE 29Oraclle坏块故故障总结 最近处处理了两次次典型的oora-0015788,oraa-011115,oora-0011100故障,一一次是平湖湖索引块坏坏,一次是是黄山数据据文件坏、blobb数据块坏坏。平湖的警告告日志文件件中有以下下信息: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应用软件可可以正常使使用,偶尔尔会报错oora-0015788。排错过程登录数据库库检查:selecct coount(*) ffrom ep_ttablee t ww
3、heree pttimetrunnc(syysdatte)-330 annd allarmttype=07841663selecct coount(*) ffrom ep_ttablee t42810062看来全表扫扫描正常selecct ffrom ep_ttablee t wwheree pttimetrunnc(syysdatte)-333 annd allarmttype=0 annd roownumm100001索引扫描报报错了,推推断为索引引上有坏块块!继续查: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运气真好重重建相关索索引后数据据库就恢复复了。黄山坏块故故障就比较较复杂了,硬盘坏导致多个数据文件的多个块故障,其中还有blob对象。Countt(*)一一张表报错错:查询某张表表系统事件中中有报错:磁盘管理中中报错:Dell的的服务器,22块72GG硬盘,没没有做
5、raaid,88i数据库库没有备份份。(上图图磁盘3为为移动硬盘盘)初步检查到到这里我感感觉这次坏坏的严重了了,恢复可可能比较麻麻烦。整理一下思思路:不要随意重重启记录损坏的的数据信息息导出可用数数据更换故障硬硬盘重做系统及及数据库恢复数据重传丢失的的数据(我我们的系统统架构可以以这样做)排错过程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+这个区有有多少个bblockk-1查到故障段段为LOBBSEGMMENT类类型,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当时因为没没有记录,所所以我随便便举例: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;这个块无法法找出bllob段的的rowiid。本想想找后我可可以按照rrowidd清空故障障的bloob数据。选择一个范范围继续找找: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;还是没有找找到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;还没找到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省略一些结结果集AAAA666AAIIAAFkk5JAAAG37700814611833620099-10-26 119:477:080查到以下记记录时出错错,看来按照照rowiid清空故故障的bllob数据据不行AAAA666AAIIAAFkk5JAAAGROWIDD_TYPPE: 1OBJECCT_NUUMBERR: 33770RELATTIVE_FNO: 8BLOCKK_NUMMBER: 144618333ROW_NNU
14、MBEER: 6可以从obbj#,rrfilee#,bllock#,roww#计算得得到理论上上的rowwid Obj# 37700Rfilee# 8Blockk# 144618442Row# 0实际上就是是将十进制制数转化成成64进制制数,当然然,从二进进制转化的的规则比较较简单点。将二进制数数从右到左左,6个bbit一组组,然后将将这6个bbit组转转成10进进制数,就就是AZZ azz 099 + /这64个个字符的位位置(从00开始),替替换成baase644的字符即即可。roowid是是basee64编码码的,用AAZ aaz 009 + /共664个字符符表示。AA表示0,BB表示
15、1,a表示26,0表示52,+表示62,/表示63可以将其看做一个64进制的数。obj#=37700转换成二二进制,补补足成6位位basee64编码码,左边填填0,结果果为AAAAA66rfilee#=8=0010000=I,补补足成3位位,得到AAAIblockk#=144618442=0001001 1001100 1110001 0100010=5 366 57 18,补足足成6位,得得到AAFFk5Srow#=0,3位位AAA合起来就是是AAAAA66AAAIAAFFk5SAAAA但是不要忘忘了,这次次坏的是bblob它它会跨多个个块的。所所以这条理理论rowwid没有有找到!举例子补
16、充充说明: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没有任何数数据时: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大小的图图片后结果: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检查表建在在那个数据据
29、文件那个个块上SELECCT DISTTINCTT dbmms_roowid.rowiid_reelatiive_ffno(rrowidd) AS FFile, dbbms_rrowidd.rowwid_bblockk_nummber(rowiid) AS BBlockk FROMM ep_ttablee; FFileBlocck71110看起来这个个表存放在在文件号77,块号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$我已经往这这个段里存存放了一张张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根据上一步步查出来的的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看来它跨越越了6号数数据文件的的9号块到到7号数据据文件的7777号块块根据rowwid反过过来验证一一下块信息息: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也就是说如如果bloob字段发发生坏块,可能坏块的block_id为273,但是要查找记录的rowid的话需要前后跨越一段block_id才有可能找到,例如这里的110。而从obj#,rfile#,block#,row#计算得到理论上的r
40、owid可能不存在。回到黄山坏坏块故障上上:SELECCT COOUNT(*) FROMM EP_PECCC WHEERE TTO_CHHAR(PPTIMEE,YYYYYMMMDD) 2200911125 ANDD TO_CHHAR(PPTIMEE,YYYYYMMMDD) 2200911127;ERRORR 位于第第 1 行行:ORA-0011155: 从文文件 8 读取块时时出现 IIO 错误误 (块 # 144618442)ORA-0011100: 数据据文件 88: EE:ORRADATTADZZJCUUSERSS02.DDBFORA-2270911: skkgfqiio: 无无法进行
41、I/O 操作OSD-0040066: ReeadFiile() 失败,无法自文文件读取O/S-EErrorr: (OOS 233) 数据据错误 (循环冗余余检查)。验证了这个个时间段区区间内的数数据有坏块块!Selecct coount(*) ffrom EP_PPECC t whhere PTIMMETO_DATEE(2000910026 220:488:57,yyyyymmmdd HHH24:MI:SSS)没有报错结论:144618333块为 2200911026 20:447:577到 2000910026 220:488:57 之间。同同时我也偷偷懒了没有有继续查找找因为连着着坏了好多
42、多块。恢复完数数据库后重重传这段时时间的记录录就行了!备份时只需需把期间的的数据备份份出来就可可以。DELETTE frrom EEP_PEECC tt wheere PPTIMEETTO_DAATE(2009910011 00:00:000,yyyyymmddd HH224:MII:SS)和用户沟通通了一下,把把以前的过过期记录全全部删除后来发现另另外一张表表EP_TTABLEE导出时也也有坏块。即将导出指指定的表通通过常规路路径 . . 正正在导出表表 EPP_TABBLEEXP-0000566: ORRACLEE 错误 11155 出现ORA-0011155: 从文文件 8 读取块时时出
43、现 IIO 错误误 (块 # 122003338)ORA-2270700: skkgfdiisp: 异步读取取/写入失失败OSD-0040166: 查询询非同步 I/O 请求发生生错误.O/S-EErrorr: (OOS 233) 数据据错误 (循环冗余余检查)。ORA-0011155: 从文文件 8 读取块时时出现 IIO 错误误 (块 # 122003338)ORA-2270700: skkgfdiisp: 异步读取取/写入失失败OSD-0040166: 查询询非同步 I/O 请求发生生错误.O/S-EErrorr: (OOS 233) 数据据错误 (循环冗余余检查)。导出成功终终止,但出
44、出现警告。同理处理。找到坏块所所在记录的的时间段后后exp时时跳过。后面的恢复复处理就不不写了。特别注意:试过dbmms_reepairr,但是ddbms_repaair找不不到错误的的记录。试过ALTTER SSYSTEEM SEET EVVENTSS 100231 tracce naame cconteext fforevver,llevell 10; 也不不能成功。奇怪了,只只能猜硬盘盘坏的太厉厉害,产生生了物理坏坏道。RMAN 可以备备份包含损损坏数据块块的数据文文件,通过过设置 set maxccorruupt 可以跳过过指定个数数的坏块来来避免备份份失败。 RMAN sett ma
45、xxcorrrupt for dataafilee 1 tto 10;在 Oraacle99i中可以以用 RRMAN来来执行块级级的恢复,而而且恢复期期间数据文文件可以是是联机状 态。RMMAN通过过 Bllock Mediia Reecoveery(简简称 BMMR)来执执行块级恢恢复操作。假设我们们在查 询询一个 Oraccle 表的时候候接收到下下面的错误误:ERRROR 位于第 1 行:ORA-015778: OORACLLE 数数据块损坏坏(文件号号 5,块块号 997) ORA-0011100: 数据文文件 55: E:xxxxx.dbbf那么我们就就可以在 RMAAN中用 BLO
46、OCKREECOVEER 命令令来修复:RMANN BLLOCKRRECOVVER DDATAFFILE 5 BLLOCK997; 启启动 bblockkrecoover 于 03-99月 -06 正正在启动全全部恢复目目录的 resyync完成成全部 resyync使用用通道 ORA_DISKK_1通道道 ORRA_DIISK_11: 正在从从数据文件件副本 EE:xxxxx.bbak 恢恢复块 正正在开始介介质的恢复复完成介质质的恢复完完成 bblockkrecoover 于 03-99月 -06块恢复 BBlockk Meddia RRecovvery (BMRR),块是是恢复的最最小单
47、元,通通过块可以以减少恢复复 时间,而而且数据文文件可以在在线。恢复复块的时候候,必须指指定具体的的块号,如如:RMAAN bblockkrecooverddataffile 6 bllock 3;具体体请见 4.7.4 块块媒体恢复复 Bllock Mediia Reecoveery (BBMR)1)指示RRMAN从从文件的最最新备份集集或映像副副本中还原原与恢复一一个指定的的数据块: RRMAN bloockreecoveer daatafiile 77 bloock 55;2)BLOOCKREECOVEER命令可可以接受若若干文件中中的一列数数据块: RRMAN bloockreecov
48、eer daatafiile 77 bloock 55,6,77 dattafille 9 blocck 211,25;3)从指定定备份集中中还原数据据块 RRMAN bloockreecoveer daatafiile 77 bloock 55 froom baackuppset 10399;4)从使用用标记指定定的备份中中还原数据据块 RRMAN bloockreecoveer daatafiile 77 bloock 55 froom taag moonthlly_whhole;5)使用至至少已生成成一周的备备份来还原原和恢复前前一个备份份操作发现现受损的所所有数据块块: RRMAN b
49、loockreecoveer coorrupptionn lisst unntil timee syssdatee - 77;注意:此处处关键字UUNTILL并非表示示不完全恢恢复!这个个关键字意意味着必须须从特定日日期(序列列号或SCCN)之前前生成的备备份中还原原数据块。下面系统的的总结一下下坏块故障障的处理:数据库出现现坏块现象象是指:在在Oraccle数据据库的一个个或多个数数据块内出出现内容混混乱的现象象。由于正正常的数据据块都有固固定的合法法内容格式式,坏块的的出现,导导致数据库库进程无法法正常解析析数据块的的内容,进进而使数据据库进程报报错乃至挂挂起,并级级联导致整整个数据库库实
50、例出现现异常。一坏块的的产生原因因坏块产生的的原因大致致有以下几几种:1.1 硬硬件问题Oraclle进程在在处理一个个数据块时时,首先将将其读入物物理内存空空间,在处处理完成后后,再由特特定进程将将其写回磁磁盘;如果果在这个过过程中,出出现内存故故障,CPPU计算失失误,都会会导致内存存数据块的的内容混乱乱,最后反反映到写回回磁盘的数数据块内容容有误。同同样,如果果存储子系系统出现异异常,数据据块损坏也也就随之出出现了。1.2 操操作系统BBUG由于Oraacle进进程对数据据块的读写写,都是以以操作系统统内核调用用(sysstem calll)的方式式完成的,如如果操作系系统在内核核调用存
51、在在问题,必必然导致OOraclle进程写写入非法的的内容。1.3 操操作系统的的I/O错错误或缓冲冲问题1.4 内内存或paagingg问题Oraclle软件BBUGOraclle软件特特定版本上上,可能出出现导致数数据块的内内容出现异异常BUGG。1.5 非非Oraccle进程程扰乱Orraclee共享内存存区域如上文所述述,在当数数据块的内内容被读入入主机的物物理内存时时,如果其其他非Orraclee进程,对对Oraccle使用用的共享内内存区域形形成了扰乱乱,最终导导致写回磁磁盘的数据据块内容混混乱。1.6 异异常关机,掉掉电,终止止服务异常关机,掉掉电,终止止服务使进进程异常终终止,
52、而破破坏数据块块的完整性性,导致坏坏块产生。注:这也是是为什么突突然断电会会导致数据据库无法启启动由上可见,坏坏块的形成成原因复杂杂。当出现现坏块时,为为了找到确确切的原因因,需要大大量的分析析时间和排排查操作,甚甚至需要多多次重现才才能找出根根本原因。但当故障障发生在生生产系统上上,我们为为了减少停停机时间,会会尽快实施施应急权变变措施以保保证系统的的可用性,这这样就破坏坏了故障现现场,对根根本原因的的分析因而而也更加困困难了。二坏块的的预防坏块问题破破坏性大,但但并非不可可预防。2.1 在在M网网站,Orraclee定期发布布基于特定定软件版本本的“已知问题题(knoown iissuee
53、s)说明明”。对于可可能导致坏坏块的Orraclee软件BUUG,在OOraclle公司内内部,是作作为高严重重级别的问问题进行处处理,在“已知问题题(knoown iissuees)说明明”中,这些些BUG以以严重(NNoticcablee)问题标标出(标记记为*或+),部分分问题,OOraclle还会发发布警告(Alerrt)通告告。在文档档中,Orraclee会提供相相应的补丁丁或应对措措施。2.2 OOraclle提供备备份恢复工工具Reecoveery MManagger,提提供了扫描描文件检查查坏块的功功能。在Recooveryy Mannagerr界面中,使使用:RMAN BAC
54、CKUP CHECCK LOOGICAAL VAALIDAATE DDATAFFILE n ;可以检查数数据文件是是否包含坏坏块,同时时并不产生生实际的备备份输出。2.3 DDbv工具具检查注:因为ddbv要求求filee后面跟的的必须是一一个文件扩扩展名,所所以如果用用裸设备存存储的,就就必须使用用ln链接接裸设备到到一个文件件,然后再再用dbvv对这个链链接文件进进行检查。ANALYYZE TTABLEE tabblenaame VVALIDDATE STRUUCTURRE CAASCADDE它执行坏块块的检查,但但是不会标标记坏块为为corrrupt,检检测的结果果保存在UUSER_DU
55、MPP_DESST目录下下的用户ttracee文件中。2.4 利利用expp工具导出出整个数据据库可以检检测坏块对以下情况况的坏块是是检测不出出来的:HWM以上上的坏块是是不会发现现的索引中存在在的坏块是是不会发现现的数据字典中中的坏块是是不会发现现的结合数据库库性能综合合考虑dbb_bloock_ccheckksum和和db_bblockkchecckingg参数。当我们使用用Recooveryy Mannagerr进行实际际的数据库库备份时,同同时也就进进行了坏块块检查。但但要注意的的是,在线线使用Reecoveery MManagger扫描描坏块和备备份时,需需要数据库库运行在归归档模式
56、(aarchiive llog),否否则只能在在数据库未未打开的情情况下进行行。对于操操作系统问问题和硬件件故障,则则需要相应应厂商的配配合支持。同时,避避免在数据据库主机运运行其他用用户进程,避避免异常停停机,也会会减少坏块块发生的几几率。三坏块故故障的识别别遇到坏块问问题时,数数据库的异异常表现通通常有:报告ORAA-015578错误误。报告Oraa-11110错误。报告ORAA-006600错误误,其中,第第一个参数数为20000-80000,CCachee layyer 22000 40000,Trransaactioon laayer 40000 60000,Daata llayer
57、r 60000 - 80000。Tracee文件中出出现Corrruptt bloock ddba: 0 x1660c59958 . fouund。分析对象失失败。后台进程,如DBWWR,LGGWR出现现长时间异异常等待,如如“LGWRR waiit foor reedo ccopy”。四Oraacle数数据块损坏坏恢复总结结可以用DBBV 命令令来检测是是否有坏块块:在恢复前使使用DBVV命令检查查数据文件件是否存在在坏块dbv ffile=d:ooraclleorradattamyydbRRONLYY.DBFF bloocksiize=88192查看数据坏坏块所在数数据文件号号及块号可可以
58、对表进进行一次全全表扫描,如如:selecct coount(*) ffrom tabllenamme;关于DBVV 命令的的具体使用用,请参考考blogg:http:/tiannlesooftwaare/aarchiive/22009/12/116/500151664.asspx4.1 没没有备份的的情况下:4.1.11、使用eexp/iimp恢复复在这种情况况下肯定会会造成数据据的丢失,在在这种情况况下应采取取将数据导导出然后重重建表再进进行导入的的方法,来来尽量恢复复损坏数据据块中的数数据,但是是在有坏块块的情况下下是不允许许导出的,如如下命令:Exp ttest/testt fille
59、=t.dmp tablles=tt;导出命令在在执行中会会报ORAA-015578错误误,在这错错误提示中中会提示那那个文件号号的文件以以及这个文文件中的哪哪个块被损损坏,如:ORA015778:ORRACLEE 数据块块损坏(文文件号 44,块号 35)针对以上的的提示首先先查询那些些对象被损损坏: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;如果被损坏坏的块是索索引,通常常可以通过过索引重建建来解决,如如果损坏的的是数据(ssegmeent_ttype为为tablle),那那么通过设设置如下内内部事件使使得Expp操作跳过过坏块。Alterr sesssionn sett eveents=102231 ttracee namme coontexxt fooreveer,leevel 10;然后重新执执行导出命命令,导出出相关的表表,然后执执行Droop Taable命命令删除相相关表,之之后重建表表最后导入入数据。4.1.22、使用DDBMS_REPAAIR恢复复用DBMSS_REPPAIR当当然也
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论