SELECT tablespace_name, segment_type, owner, segment_name, partition_name FROM dba_extents WHERE file_id = <AFN> and <BL> between block_id AND block_id + blocks – 1;
Rman>run{blockrecover datafile 5 block 11,16 restore until sequence 8505;}
Ø 通過ROWID RANGE SCAN 保存數據 1) 先取得壞塊中ROW ID的最小值,執行以下的語句:
SELECT dbms_rowid.rowid_create(1,<OBJ_ID>,<RFN>,<BL>,0) from DUAL;
2)取得壞塊中的ROW ID的最大值,執行以下的語句:
SELECT dbms_rowid.rowid_create(1,<OBJ_ID>,<RFN>,<BL>+1,0) from DUAL;
3)建議一個臨時表存儲那些沒有壞塊的數據,執行以下的語句:
CREATE TABLE salvage_table AS SELECT * FROM corrupt_tab Where 1=2;
4)保存那些不存在壞塊的數據到臨時表中,執行以下的語句:
INSERT INTO salvage_table SELECT /*+ ROWID(A) */ * FROM <owner.tablename> A WHERE rowid < '<low_rid>';INSERT INTO salvage_table SELECT /*+ ROWID(A) */ * FROM <owner.tablename> A WHERE rowid >= '<hi_rid>‘;