付費下載
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Oracle壞塊故障總結(jié)最近處理了兩次典型的ora-01578,ora-01115,ora-01110故障,一次是平湖索引塊壞,一次是黃山數(shù)據(jù)文件壞、blob數(shù)據(jù)塊壞。平湖的警告日志文件中有以下信息:ORA-12012: error on auto execute of job 21ORA-01578: ORACLE data block corru pted (file # 10, block # 2558610)ORA-01110: data file 10: 'D:ORACLEORADATABSUSERS04.DBF'ORA-12012: error on auto ex
2、ecute of job 1ORA-01578: ORACLE data block corrup ted (file # 16, block # 2624066)ORA-01110: data file 16: 'D:ORACLEORADATABSUSERS10.DBF'應(yīng)用軟件可以正常使用,偶爾會報錯ora-01578。40排錯過程登錄數(shù)據(jù)庫檢查:P timevtr un c(sysdate)-30 and alarmt yp e=0select coun t(*) from ep _table t where784163select coun t(*) from ep _
3、table t4281062看來全表掃描正常ptime<trunc(sysdate)-31and ptime>trunc(sysdate)-33 and alarmtype=0 andselect from ep_table t whererown um<10001索引掃描報錯了,推斷為索引上有壞塊!繼續(xù)查:select own er,file_id,segme nt_n ame, segme nt_type, block_id, blocksfrom dba_exte ntswhere file_id=16 and block_id<=2624066 and (blo
4、ck_id + blocks- 1) >= 2624066;oWnEIfile id|segment_naMsegment_ty:EblOCKIDBLOCKSbs16VhINOI1 index12624066 1I16 1運氣真好重建相關(guān)索引后數(shù)據(jù)庫就恢復(fù)了。黃山壞塊故障就比較復(fù)雜了, 硬盤壞導(dǎo)致多個數(shù)據(jù)文件的多個塊故障,其中還有blob對象。Count(*) 一張表報錯:KCftA-tflllSL fXff S At 識為tl出fcMJ1*1#噸OftA.-OllW:81 'E; OltA>1 A50nzSERS(V,0ft'O*A-i?WJi 也寸*:OSIHW
5、J喻mdFiln責(zé)比無陀0支帯斥中O-frrot t tX 2SJ ftSff視(fliW兀#ttflh忙互二)II查詢某張表XI廠可幫助凹I系統(tǒng)事件中有報錯:9件詳謂fifi日亂BTli- 黃説. 用尸CM) 計S機(jī)©£W9'lL-ie 10:43 警吿r/AIPEESVEt東iS;尖別: 事件IBDiik無5L1JS堆電).聶件洋換A日菲賞型惜課 用尸QP:函 itMffl ETSIEVIlCT):蠱迷):2009-11-270 27Bisk無事悴ID- 74I設(shè)無ic沾HuMdiiklMmi會壞塊磁盤管理中報錯:(Ci)(D:)10.04 Ge NTFS10.
6、00 (a NTFS帕刖MTFS狀畜良軒系鶴)狀靳良茯狀;良弼(有危陶狀態(tài)良呼市曙)膽)M.35 GB NTFSST6e.3SGeKfll931.51 GB hHFS 狀Sfe好sxS31 51 GB聯(lián)機(jī)Dell的服務(wù)器,2塊72G硬盤,沒有做raid,8i數(shù)據(jù)庫沒有備份。(上圖磁盤3為移動硬盤) 初步檢查到這里我感覺這次壞的嚴(yán)重了,恢復(fù)可能比較麻煩。整理一下思路:1、2、3、4、5、6、不要隨意重啟記錄損壞的數(shù)據(jù)信息導(dǎo)出可用數(shù)據(jù)更換故障硬盤重做系統(tǒng)及數(shù)據(jù)庫恢復(fù)數(shù)據(jù)7、重傳丟失的數(shù)據(jù)(我們的系統(tǒng)架構(gòu)可以這樣做)排錯過程select * from dba_exte nts where file_
7、id=8 and 1461842 betwee n block_id and block_id+blocks-11 BS SYS_LOB0000003770C00017$LOBSEGMENT USERS 3457081461842 131072168解釋:block_id+blocks-1= 1461842+ 這個區(qū)有多少個 block-1 查到故障段為 LOBSEGMENT 類型,SYS_L0B0000003770C00017$。select dl.table_name,dl.SEGMENT_NAME from dba_lobs dl where dl.owner=' BS'
8、 where dl.SEGMENT_NAME-SYS LOB0000003770C00017$'查到有壞塊的表為 EP PECC。接著查出這張表的lob索引段SelectA.TABLE_NAME,A.COLUMN_NAME,B.SEGMENT_NAME,B.SEGMENT_T YP E,B.HEADER_FILE,B.HEADER. BLOCK,B.BYTES from DBA_LOBS A,DBA_SEGMENTS Bwhere AN DEX_NAME=B.SEGMENT_NAME AND A.TABLE_NAME='EP_ PECC'當(dāng)時因為沒有記錄,所以我隨便舉例
9、:1EP_TABLETHIRD PICTSYS_IL0000052738C00018$LOBINDEX7155655362EP_TABLEPANORAMA PICT SYS_IL0000052738C00017$LOBINDEX7139 655363EP_TABLEP LATE PICTSYS_IL0000052738C00016$LOBINDEX712365536select rowidfrom BS.EP_ PECCwhere dbms_rowid.rowid_to_absolute_fno(rowid,'BS','EP_ PECC')=8 and dbms
10、_rowid.rowid_block_ nu mber(rowid)=1461842;這個塊無法找出blob段的rowid。本想找后我可以按照 rowid清空故障的blob數(shù)據(jù)。選擇一個范圍繼續(xù)找:select rowid,T. PTIME,T .P LATE PICT,T .P ANORAMA PICTfrom BS.EP_ PECC Twhere dbms_rowid.rowid_to_absolute_fno(rowid,'BS','E P_P ECC')=8 and dbms_rowid.rowid_block_ nu mber(rowid)BETWEE
11、N 1461840 AND 1461842;還是沒有找到select rowid, dbms_rowid.rowid_object(rowid) obj_id,dbms_rowid.rowid_relative_fno(rowid) df#,dbms_rowid.rowid_block_ nu mber(rowid) blk num, dbms_rowid.rowid_row_ number(rowid) row no ,T.P TIME,T.ALARMT YP E,T .P LATE PICT,T .P ANORAMA PICTfromEP_P ECCT where dbms_rowid.r
12、owid_to_absolute_fno(rowid,'BS','EP_ PECC')=8dbms_rowid.rowid_block_ number(rowid) BETWEEN 1461842 AND1461842 +1024;還沒找到ANDselect rowid, dbms_rowid.rowid_object(rowid) obj_id,dbms_rowid.rowid_relative_fno(rowid) df#,dbms_rowid.rowid_block_ nu mber(rowid) blk num, dbms_rowid.rowid_row
13、_ number(rowid) row no ,T.P TIME,T.ALARMT YP E,T .P LATE PICT,T .P ANORAMA PICTfrom EP_P ECC T where dbms_rowid.rowid_to_absolute_fno(rowid,'BS','EP_ PECC')=8 dbms_rowid.rowid_block_ number(rowid) BETWEEN 1461742 AND1461842;AND終于找到了一些AAAA66AAIAAFkrSAAJ377081460946 92009-10-26 19:40:0
14、80 <BLOB> <BLOB>省略一些結(jié)果集AAAA66AAIAAFk5JAAG377081461833 62009-10-26 19:47:080 <BLOB> <BLOB>查到以下記錄時出錯,看來按照 rowid清空故障的blob數(shù)據(jù)不行AAAA66AAIAAFk5JAAGROWID TYPE:1OBJECT_NUMBER: RELATIVE_FNO: BLOCK_NUMBER: ROW NUMBER:37701461833可以從obj#,file#,block#,row#計算得到理論上的rowidObj# 3770Rfile# 8Bloc
15、k# 1461842Row# 0實際上就是將十進(jìn)制數(shù)轉(zhuǎn)化成64進(jìn)制數(shù),當(dāng)然,從二進(jìn)制轉(zhuǎn)化的規(guī)則比較簡單點。將二進(jìn)制數(shù)從右到左,6個bit 一組,然后將這6個bit組轉(zhuǎn)成10進(jìn)制數(shù),就是 AZ az 09 + /這64個字符的位 置(從0開始),替換成base64的字符即可。rowid是base64編碼的,用 AZ az 09 + /共64個字符表示。A表 示0, B表示1 ,a表示26,0表示52,+表示62, /表示63可以將其看做一個 64進(jìn)制的數(shù)。obj#=3770轉(zhuǎn)換成二進(jìn)制,補足成6位base64編碼,左邊填 0,結(jié)果為 AAAA66rfile#=8=001000=I ,補足成 3
16、位,得到 AAIblock#=1461842=000101 100100 111001 010010=5 36 57 18,補足成 6 位,得到 AAFk5S row#=0 , 3 位 AAA合起來就是 AAAA66AAIAAFk5SAAA但是不要忘了,這次壞的是 blob它會跨多個塊的。所以這條理論rowid沒有找到!舉例子補充說明:select *from dba lobs dlwhere dl.ow ner='TEST'TESTT LOG RZ SYSL0B0000052726C00002$ TESTSYS_IL0000052726C00002$8192900TEST81
17、92TESTNO YES YES NOT APPLICABLEEP_TABLE900EP_TABLENOPLATE PICT SYS_LOB0000052738C00016$ TEST NO YES YES NOT APPLICABLESYS_IL0000052738C00016$NOPANORAMA PICT SYS_LOB0000052738C00017$TESTSYS_IL0000052738C00017$8192TESTEP_TABLE900NO YES YES NOT APPLICABLENOTHIRD PICT SYS_LOB0000052738C00018$ TEST SYS_I
18、L0000052738C00018$8192900NO YES YES NOT APPLICABLENOTEST8192EP_PECC900PLATE PICT SYS_LOB0000052746C00016$ TEST SYS_IL0000052746C00016$ NO YES YES NOT APPLICABLENOTESTEP_PECCPANORAMA PICT SYS_LOB0000052746C00017$TESTSYS_IL0000052746C00017$8192900NO YES YES NOT APPLICABLENOTEST EP_PECCTHIRD PICT SYS_L
19、OB0000052746C00018$ TEST SYS_IL0000052746C00018$8192900NO YES YES NOT APPLICABLENO沒有任何數(shù)據(jù)時:selectdl.TABLE_NAME,dl.COLUMN_NAME,de.segme nt_n ame,de.segme nt_typ e,de.FILE_ID,de.BLOCK_ID fromdba_exte ntsde,dba_lobsdl wherede.ow ner= 'TEST' and'TEST'dl.OWNER= 'TEST'andde.segme nt
20、_n ame=dl.SEGMENT_NAMET_LOG RZEP TABLEEP TABLESYS_LOB0000052726C00002$ LOBSEGMENT 717P LATE PICT SYS_LOB0000052738C00016$ LOBSEGMENT 7P ANORAMA PICT SYS_LOB0000052738C00017$LOBSEGMENT1137129EP TABLEEP PECCEP PECCTHIRD PICT SYS_LOB0000052738C00018$ LOBSEGMENTP LATE PICT SYS_LOB0000052746C00016$ LOBSE
21、GMENTP ANORAMA PICT SYS LOB0000052746C00017$LOBSEGMENT1451777193EP PECCTHIRD PICT SYS_LOB0000052746C00018$ LOBSEGMENT209EP_TABLE表的P LATE PICT字段,插入一張 9MB大小的圖片后結(jié)果:1T_LOG RZSYS_LOB0000052726C00002$ LOBSEGMENT7172EP_TABLEP LATE PICTSYS_LOB0000052738C00016$LOBSEGMENT71133EP_TABLEP LATE PICTSYS_LOB0000052
22、738C00016$LOBSEGMENT72734EP_TABLEP LATE PICTSYS_LOB0000052738C00016$LOBSEGMENT72815EP_TABLEP LATE PICTSYS_LOB0000052738C00016$LOBSEGMENT72896EP_TABLEP LATE PICTSYS_LOB0000052738C00016$LOBSEGMENT72977EP_TABLEP LATE PICTSYS_LOB0000052738C00016$LOBSEGMENT73058EP_TABLEP LATE PICTSYS_LOB0000052738C00016$
23、LOBSEGMENT73139EP_TABLEP LATE PICTSYS_LOB0000052738C00016$LOBSEGMENT732110EP_TABLEP LATE PICTSYS_LOB0000052738C00016$LOBSEGMENT732911EP_TABLEP LATE PICTSYS_LOB0000052738C00016$LOBSEGMENT733712EP_TABLEP LATE PICTSYS_LOB0000052738C00016$LOBSEGMENT734513EP_TABLEP LATE PICTSYS_LOB0000052738C00016$LOBSEG
24、MENT735314EP_TABLEP LATE PICTSYS_LOB0000052738C00016$LOBSEGMENT736115EP_TABLEP LATE PICTSYS_LOB0000052738C00016$LOBSEGMENT736916EP_TABLEP LATE PICTSYS_LOB0000052738C00016$LOBSEGMENT737717EP_TABLEP LATE PICTSYS_LOB0000052738C00016$LOBSEGMENT738518EP_TABLEP LATE PICTSYS_LOB0000052738C00016$LOBSEGMENT6
25、919EP_TABLEP LATE PICTSYS_LOB0000052738C00016$LOBSEGMENT739320EP_TABLEP LATE PICTSYS_LOB0000052738C00016$LOBSEGMENT613721EP_TABLEP LATE PICTSYS_LOB0000052738C00016$LOBSEGMENT752122EP_TABLEP LATE PICTSYS_LOB0000052738C00016$LOBSEGMENT626523EP_TABLEP LATE PICTSYS_LOB0000052738C00016$LOBSEGMENT764924EP
26、_TABLEP LATE PICTSYS_LOB0000052738C00016$LOBSEGMENT639325EP_TABLEP LATE PICTSYS_LOB0000052738C00016$LOBSEGMENT777726EP_TABLEP LATE PICTSYS_LOB0000052738C00016$LOBSEGMENT652127EP_TABLEP ANORAMA PICT SYS_LOB0000052738C00017$LOBSEGMENT728EP_TABLETHIRD PICTSYS_LOB0000052738C00018$LOBSEGMENT714529EP_P EC
27、CP LATE PICTSYS_LOB0000052746C00016$LOBSEGMENT717730EP_P ECCP ANORAMA PICT SYS_LOB0000052746C00017$LOBSEGMENT731EP_P ECCTHIRD PICTSYS_LOB0000052746C00018$LOBSEGMENT7209129193查test用戶blob容量:select sum (de.BYTES/ 1024 / 1024 ) from dba_extentsde,dba_lobs dl wheredl.OWNER= 'TEST'AND de.segme nt_
28、n ame=dl.segme nt_n amede.ow ner='TEST' AND10.375顯示10MB檢查表建在那個數(shù)據(jù)文件那個塊上SELECT DISTINCT dbms_rowid.rowid_relative_fno(rowid ) AS "File",dbms_rowid.rowid_block_ number(rowid ) AS "Block"FROM ep_table;File Block7110看起來這個表存放在文件號7,塊號110的地方查找存放圖片的blob段:selectde.segme nt_n ame,de
29、.EXTENT_ID,de.FILE_ID,de.BLOCK_ID,de.BYTES,de.BLOCKS,de.relative_fn o from dba extents dewhere de.owner='TEST'and'SYS LOB0000052738C00016$'de.segme nt_n ame=我已經(jīng)往這個段里存放了一張9MB的圖片,占用了以下塊。SEGMENT NAMEEXTENT ID FILE IDBLOCK IDBYTESBLOCKS RELATIVE FNOSYS LOB0000052738C00016$ 011365536SYS L
30、OB0000052738C00016$ 1273655363SYS_丄OB0000052738C00016$2728165536874SYS_丄OB0000052738C00016$3728965536875SYS_LOB0000052738C00016$4729765536876SYS_LOB0000052738C00016$5730565536877SYS_LOB0000052738C00016$6731365536878SYS_LOB0000052738C00016$7732165536879SYS_LOB0000052738C00016$87329655368710SYS_LOB000
31、0052738C00016$97337655368711SYS_LOB0000052738C00016$107345655368712SYS_LOB0000052738C00016$117353655368713SYS_LOB0000052738C00016$127361655368714SYS_LOB0000052738C00016$137369655368715SYS_LOB0000052738C00016$147377655368716SYS_LOB0000052738C00016$157385655368717SYS_LOB0000052738C00016$16691048576128
32、618SYS_LOB0000052738C00016$1773931048576128719SYS_LOB0000052738C00016$1861371048576128620SYS_LOB0000052738C00016$1975211048576128721SYS_LOB0000052738C00016$2062651048576128622SYS_LOB0000052738C00016$2176491048576128723SYS_LOB0000052738C00016$2263931048576128624SYS_LOB0000052738C00016$237777104857612
33、8725SYS_LOB0000052738C00016$24652110485761286終于找到了rowid ) objid.根據(jù)上一步查出來的 BLOCK_ID 一陣狂找,select rowid , dbms_rowid.rowid_object(dbms_rowid.rowid_relative_fno( dbms_rowid.rowid_block_ number( dbms_rowid.rowid_row_ number(rowid )rown o ,T .P TIME,T.ALARMT YP E,T .P LATE PICT,T.PANORAMA PICT from ep_tab
34、le T where dbms_rowid.rowid_to_absolute_f no(rowidrowid)df#,)blk num,rowid , 'TEST' ,EP_TABLE' )= '7' ANDdbms_rowid.rowid_block_ number(rowid ) BETWEEN1 AND 113 ;ROWID OBJ_ID DF# BLKNUMROWNO P TIMEALARMTYPEP LATE PICT P ANORAMA PICT1 AAAM4CAAHAAAABuAAA527387110 02009-11-29 22:51:
35、580 <BLOB> <BLOB>看來它跨越了 6號數(shù)據(jù)文件的9號塊到7號數(shù)據(jù)文件的777號塊根據(jù)rowid反過來驗證一下塊信息:declarev_rowid_t ype nu mber; v_OBJECT_NUMBER nu mber; v_RELATIVE_FNO number; v_BLOCK_NUMBERE_FNO nu mber; v_ROW_NUMBER number; begin dbms_rowid.rowid _in fo(rowid _in v_OBJECT_NUMBER, relative_fno => v_RELATIVE_FNO,bloc
36、k_number v_ROW_NUMBER);dbms_out put .p ut_li ne('ROWID_T YPE: dbms_out put.p ut_li ne('OBJECT_NUMBER: dbms_out put. pu t_li ne('RELATIVE_FNO: dbms_out put. pu t_li ne('BLOCK_NUMBER: dbms_out put .p ut_li ne('ROW_NUMBER: end;/=> 'AAAM4CAAHAAAABuAAA',rowid_t ype=>=>
37、; v_rowid_type,object_number =>v_BLOCK_NUMBERE_FNO,row_number'|to_char(v_rowid_t yp e);'|to_char(v_OBJECT_NUMBER);'|to_char(v_RELATIVE_FNO);'|to_char(v_BLOCK_NUMBERE_FNO);'|to_char(v_ROW_NUMBER);=>ROWID_T YPE:1OBJECT_NUMBER: RELATIVE_FNO: BLOCK_NUMBER: ROW_NUMBER: 也就是說如果blo
38、b段block_id才有可能找到,例如這里的5273871100字段發(fā)生壞塊,可能壞塊的block_id為273,但是要查找記錄的rowid的話需要前后跨越一110。而從obj#,rfile#,block#,row# 計算得到理論上的rowid可能不存在?;氐近S山壞塊故障上:SELECT COUNT(*)FROM EP_P ECC WHERE TO_CHAR (P TIME,'YYYYMMDD') >'20091125' ANDTO_CHAR (P TIME,'YYYYMMDD') <'20091127:ERROR位于第1行:
39、ORA-01115:從文件8讀取塊時出現(xiàn)IO錯誤(塊# 1461842)ORA-01110:數(shù)據(jù)文件 8:'E:ORADA TADZJCUSERS02.DBF'ORA-27091: skgfqio:無法進(jìn)行 I/O 操作OSD-04006: ReadFileO 失敗,無法自文件讀取O/S-Error: (OS 23)數(shù)據(jù)錯誤(循環(huán)冗余檢查)。驗證了這個時間段區(qū)間內(nèi)的數(shù)據(jù)有壞塊!Select count(*) from EP_PECC t where PTIME< TO_DATE('20091027 20:47:57','yyyymmdd HH24:
40、MI:SS') ANDP TIME >TO_DATE('20091026 20:48:57','yyyymmdd HH24:MI:SS') 沒有報錯 結(jié)論:1461833塊為20091026 20:47:57至U 20091026 20:48:57之間。同時我也偷懶了沒有繼續(xù)查找因為連著壞了 好多塊。恢復(fù)完數(shù)據(jù)庫后重傳這段時間的記錄就行了!備份時只需把期間的數(shù)據(jù)備份出來就可以。DELETE from EP_PECC t where PTIME< TO_DATE('2009102620:48:57','yyyymmdd
41、HH24:MI:SS') ANDP TIME >TO_DATE('20091001 00:00:00','yyyymmdd HH24:MI:SS')和用戶溝通了一下,把以前的過期記錄全部刪除即將導(dǎo)出指定的表通過常規(guī)路徑.正在導(dǎo)出表EXP-00056: ORACLEORA-01115:從文件ORA-27070: skgfdis p:后來發(fā)現(xiàn)另外一張表 EP TABLE導(dǎo)出時也有壞塊。EP_TABLE錯誤1115出現(xiàn)8讀取塊時出現(xiàn) IO錯誤(塊# 1200338)異步讀取/寫入失敗OSD-04016:查詢非同步I/O請求發(fā)生錯誤.O/S-Error:
42、(OS 23)數(shù)據(jù)錯誤(循環(huán)冗余檢查)。ORA-01115:從文件8讀取塊時出現(xiàn) IO錯誤(塊# 1200338)ORA-27070: skgfdisp:異步讀取/寫入失敗請求發(fā)生錯誤. (循環(huán)冗余檢查)。OSD-04016:查詢非同步I/OO/S-Error: (OS 23)數(shù)據(jù)錯誤 導(dǎo)出成功終止,但出現(xiàn)警告。同理處理。找到壞塊所在記錄的時間段后exp時跳過。后面的恢復(fù)處理就不寫了。特別注意:試過 dbms_repair,但是 dbms_repair找不至U錯誤的記錄。試過 ALTER SYSTEM SET EVENTS '10231 trace name con text fore
43、ver,level 10'也不能成功。奇怪了,只能猜硬盤壞的太厲害,產(chǎn)生了物理壞道。RMAN可以備份包含損壞數(shù)據(jù)塊的數(shù)據(jù)文件,通過設(shè)置失敗。RMAN> set maxcorrupt for datafile 1 to 10 ;set maxcorru pt可以跳過指定個數(shù)的壞塊來避免備份在Oracle®中可以用 RMAN來執(zhí)行塊級的恢復(fù),而且恢復(fù)期間數(shù)據(jù)文件可以是聯(lián)機(jī)狀態(tài)。RMAN通過Block Media Recovery (簡稱 BMR )來執(zhí)行塊級恢復(fù)操作。假設(shè)我們在查 的錯誤:ERROR 位于第 1行:詢一個 Oracle表的時候接收到下面ORA-01578 :
44、 ORACLE 數(shù)據(jù)塊損壞(文件號 5,塊號 97)5: 中用BLOCK97 ;啟動 blockrecover 于 道 ORA_DISK_1 通道 ORA_DISK_1 成介質(zhì)的恢復(fù)完成 blockrecover 于ORA-01110 :數(shù)據(jù)文件那么我們就可以在 RMAN'E: xxxx.dbf'BLOCKRECOVER 命令來修復(fù):RMAN> BLOCKRECOVER DATAFILE 5 03-9月 -06正在啟動全部恢復(fù)目錄的resync完成全部resync使用通:正在從數(shù)據(jù)文件副本 E: xxxx.bak恢復(fù)塊正在開始介質(zhì)的恢復(fù)完03-9 月-06塊恢復(fù) Bloc
45、k Media Recovery (BMR ),塊是恢復(fù)的最小單元,通過塊可以減少恢復(fù) 在線?;謴?fù)塊的時候,必須指定具體的塊號,如:RMAN> blockrecoverdatafile 6 block 3體恢復(fù) Block Media Recovery (BMR )時間,而且數(shù)據(jù)文件可以;具體請見4.7.4塊媒1)2)3)4)5)指示RMAN從文件的最新備份集或映像副本中還原與恢復(fù)一個指定的數(shù)據(jù)塊:RMAN> blockrecover datafile 7 block 5;BLOCKRECOVER 命令可以接受若干文件中的一列數(shù)據(jù)塊:RMAN> blockrecover da
46、tafile 7 block 5,6,7 datafile 9 block 21,25;從指定備份集中還原數(shù)據(jù)塊RMAN> blockrecover datafile 7 block 5 from backupset 1039;從使用標(biāo)記指定的備份中還原數(shù)據(jù)塊RMAN> blockrecover datafile 7 block 5 from tag monthly_whole;使用至少已生成一周的備份來還原和恢復(fù)前一個備份操作發(fā)現(xiàn)受損的所有數(shù)據(jù)塊:RMAN> blockrecover corruption list until time sysdate - 7;SCN )之
47、前生成注意:此處關(guān)鍵字 UNTIL并非表示不完全恢復(fù)!這個關(guān)鍵字意味著必須從特定日期(序列號或 的備份中還原數(shù)據(jù)塊。F面系統(tǒng)的總結(jié)一下壞塊故障的處理:由于正常的數(shù)據(jù)塊都有數(shù)據(jù)庫出現(xiàn)壞塊現(xiàn)象是指:在Oracle數(shù)據(jù)庫的一個或多個數(shù)據(jù)塊內(nèi)出現(xiàn)內(nèi)容混亂的現(xiàn)象。固定的合法內(nèi)容格式,壞塊的出現(xiàn),導(dǎo)致數(shù)據(jù)庫進(jìn)程無法正常解析數(shù)據(jù)塊的內(nèi)容,進(jìn)而使數(shù)據(jù)庫進(jìn)程報錯乃至掛 起,并級聯(lián)導(dǎo)致整個數(shù)據(jù)庫實例出現(xiàn)異常。一. 壞塊的產(chǎn)生原因壞塊產(chǎn)生的原因大致有以下幾種:1.1硬件問題Oracle進(jìn)程在處理一個數(shù)據(jù)塊時,首先將其讀入物理內(nèi)存空間,在處理完成后,再由特定進(jìn)程將其寫回磁盤;如 果在這個過程中,出現(xiàn)內(nèi)存故障,CPU計
48、算失誤,都會導(dǎo)致內(nèi)存數(shù)據(jù)塊的內(nèi)容混亂,最后反映到寫回磁盤的數(shù)據(jù)塊內(nèi)容有誤。同樣,如果存儲子系統(tǒng)出現(xiàn)異常,數(shù)據(jù)塊損壞也就隨之出現(xiàn)了。1.2操作系統(tǒng)BUG由于Oracle進(jìn)程對數(shù)據(jù)塊的讀寫,都是以操作系統(tǒng)內(nèi)核調(diào)用( 調(diào)用存在問題,必然導(dǎo)致Oracle進(jìn)程寫入非法的內(nèi)容。system call)的方式完成的,如果操作系統(tǒng)在內(nèi)核1.3操作系統(tǒng)的I/O錯誤或緩沖問題1.4內(nèi)存或Paging問題Oracle 軟件 BUGOracle軟件特定版本上,可能出現(xiàn)導(dǎo)致數(shù)據(jù)塊的內(nèi)容出現(xiàn)異常BUG。1.5非Oracle進(jìn)程擾亂Oracle共享內(nèi)存區(qū)域如上文所述,在當(dāng)數(shù)據(jù)塊的內(nèi)容被讀入主機(jī)的物理內(nèi)存時, 域形成了擾亂,
49、最終導(dǎo)致寫回磁盤的數(shù)據(jù)塊內(nèi)容混亂。如果其他非Oracle進(jìn)程,對Oracle使用的共享內(nèi)存區(qū)1.6異常關(guān)機(jī),掉電,終止服務(wù)異常關(guān)機(jī),掉電,終止服務(wù)使進(jìn)程異常終止,而破壞數(shù)據(jù)塊的完整性,導(dǎo)致壞塊產(chǎn)生。 注:這也是為什么突然斷電會導(dǎo)致數(shù)據(jù)庫無法啟動由上可見,壞塊的形成原因復(fù)雜。當(dāng)出現(xiàn)壞塊時,為了找到確切的原因,需要大量的分析時間和排查操作,甚至 需要多次重現(xiàn)才能找出根本原因。但當(dāng)故障發(fā)生在生產(chǎn)系統(tǒng)上,我們?yōu)榱藴p少停機(jī)時間,會盡快實施應(yīng)急權(quán)變措 施以保證系統(tǒng)的可用性,這樣就破壞了故障現(xiàn)場,對根本原因的分析因而也更加困難了。二.壞塊的預(yù)防壞塊問題破壞性大,但并非不可預(yù)防。2.1在Metal in 網(wǎng)站
50、,Oracle定期發(fā)布基于特定軟件版本的"已知問題(k now n issues)說明”。對于可能導(dǎo)致壞塊的Oracle軟件BUG ,在Oracle公司內(nèi)部,是作為高嚴(yán)重級別的問題進(jìn)行處理,在"已知問題(known issues)說明”中,這些 BUG以嚴(yán)重(Noticable )問題標(biāo)出(標(biāo)記為*或+),部分問題,Oracle還會發(fā)布警告(Alert)通告。 在文檔中,Oracle會提供相應(yīng)的補丁或應(yīng)對措施。2.2 Oracle提供備份恢復(fù)工具 Recovery Manager,提供了掃描文件檢查壞塊的功能。在Recovery Manager界面中,使用:RMAN>
51、 BACK UP CHECK LOGICAL V ALIDATE DATAFILE n ; 可以檢查數(shù)據(jù)文件是否包含壞塊,同時并不產(chǎn)生實際的備份輸出。2.3 Dbv工具檢查注:因為dbv要求file后面跟的必須是一個文件擴(kuò)展名,所以如果用裸設(shè)備存儲的,就必須使用 一個文件,然后再用dbv對這個鏈接文件進(jìn)行檢查。ln鏈接裸設(shè)備到ANAL YZE TABLE table name V ALIDATE STRUCTURE CASCADE它執(zhí)行壞塊的檢查,但是不會標(biāo)記壞塊為corrupt,檢測的結(jié)果保存在 USER_DUMP_DEST目錄下的用戶trace文件中。2.4利用exp工具導(dǎo)出整個數(shù)據(jù)庫可以
52、檢測壞塊對以下情況的壞塊是檢測不出來的:HWM以上的壞塊是不會發(fā)現(xiàn)的 索引中存在的壞塊是不會發(fā)現(xiàn)的 數(shù)據(jù)字典中的壞塊是不會發(fā)現(xiàn)的結(jié)合數(shù)據(jù)庫性能綜合考慮db_block_checksum和db_blockchecking參數(shù)。當(dāng)我們使用 Recovery Manager進(jìn)行實際的數(shù)據(jù)庫備份時,同時也就進(jìn)行了壞塊檢查。但要注意的是,在線使用 Recovery Manager掃描壞塊和備份時,需要數(shù)據(jù)庫運行在歸檔模式(archive log),否則只能在數(shù)據(jù)庫未打開的情況下進(jìn)行。對于操作系統(tǒng)問題和硬件故障,則需要相應(yīng)廠商的配合支持。同時,避免在數(shù)據(jù)庫主機(jī)運行其他用戶 進(jìn)程,避免異常停機(jī),也會減少壞塊發(fā)生的幾率。三.壞塊故障的識別 遇到壞塊問題時,數(shù)據(jù)庫的異常表現(xiàn)通常有:報告ORA-01578錯誤。報告Ora-1110錯誤。報告 ORA-00600 錯誤,其中,第一個參數(shù)為 2000-8000, Cache layer 2000 - 4000 ,Transaction layer 4000 - 6000, Data layer 6000 - 8000。Trace 文件中出現(xiàn) Corrupt block dba: 0x160c5958 . found 。分析對象失敗。后臺進(jìn)程,如DBWR , LGWR出現(xiàn)長時間異常等待,如“LGWR wait for redo copy ”。四.Orac
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河北省雄安新區(qū)2026屆高三上學(xué)期1月期末考試歷史試卷(含答案)
- 安徽省蕪湖市無為市部分學(xué)校2025-2026年九年級上學(xué)期1月期末考試道德與法治試卷(含答案)
- 2025-2026學(xué)年天津市河北區(qū)九年級(上)期末物理試卷(含答案)
- 五年級下冊期末考試卷及答案
- 網(wǎng)易筆試題庫及答案
- 2022-2023年部編版八年級語文(上冊期末)練習(xí)及答案
- 成都風(fēng)俗習(xí)慣禮儀知識
- 烏馬河2022年事業(yè)編招聘考試模擬試題及答案解析19
- 2022~2023水利設(shè)施管養(yǎng)人員考試題庫及答案第627期
- 數(shù)理方程考試試卷及答案
- 馬年猜猜樂(馬的成語)打印版
- 輸電專業(yè)十八項反措內(nèi)容宣貫
- 通信工程施工企業(yè)安全生產(chǎn)管理人員知識考核題庫500題-含答案
- 危險化學(xué)品安全風(fēng)險專項辨識與管控措施
- 中建精裝修工程檢驗批劃分方案
- 區(qū)間閉塞設(shè)備維護(hù)課件:表示燈電路識讀
- 人教版數(shù)學(xué)八年級上冊《等邊三角形的性質(zhì)和判定》說課稿
- 股骨骨折伴發(fā)糖尿病患者護(hù)理查房
- 光化學(xué)和光催化反應(yīng)的應(yīng)用
- VDA6.3-2016過程審核主要證據(jù)清單
- 辦公耗材采購 投標(biāo)方案(技術(shù)方案)
評論
0/150
提交評論