您好,登錄后才能下訂單哦!
把同一表空間下的好的數據文件頭拷貝到有問題的數據文件頭,例如:
copy file x block 1 to file y block 1,然后按如下offset來確認并修改。
rdba_kcbh (offset 4) 即使文件頭block的rdba地址
2. kccfhfsz (offset 44) 即文件大小
3. kccfhfno (offset 52) 即datafile文件號
4. kscnbas (offset 100) 即v$datafile.create_change#
5. kcvfhcrt (offset 108) 即v$datafile.create_time
6. kcvfhtsn (offset 332) 即v$datafile.ts#,表示表空間號
7. kcvfhrfn (offset 368) 即v$datafile.rfile#, 表示相對文件號
8. kcvfhtnm (offset 338) 即v$tablespace.name,表示表空間名稱(根據實際情況,可能還會需要修改kcvfhtln,表示表空間名稱字符長度)
9. kscnbas (offset 484) 即checkpoint scn
10.kcvcptim (offset 492) 即last checkpoint time.
用來修復非system表空間的數據文件頭。
select file#,to_char(creation_time,'yyyy-mm-dd hh34:mi:ss') creation_time_file,
(to_char(creation_time,'yyyy')-1988)*12*31*24*3600+
(to_char(creation_time,'mm')-1)*31*24*3600+
(to_char(creation_time,'dd')-1)*24*3600+
to_char(creation_time,'hh34')*3600+
to_char(creation_time,'mi')*60+
to_char(creation_time,'ss') creation_name_scn
from v$datafile order by 1;
select file#,to_char(CHECKPOINT_TIME,'yyyy-mm-dd hh34:mi:ss') CHECKPOINT_TIME_file,
(to_char(CHECKPOINT_TIME,'yyyy')-1988)*12*31*24*3600+
(to_char(CHECKPOINT_TIME,'mm')-1)*31*24*3600
+(to_char(CHECKPOINT_TIME,'dd')-1)*24*3600
+to_char(CHECKPOINT_TIME,'hh34')*3600
+to_char(CHECKPOINT_TIME,'mi')*60
+to_char(CHECKPOINT_TIME,'ss') CHECKPOINT_TIME_scn
from v$datafile order by 1;
在修復過程中開兩個session,一個查看好的數據文件頭,一個用于修改,先做對比,然后再修改,減少誤操作。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。