RMAN深入解析之--BlockRecover恢复坏块(一)

2014-11-24 17:17:49 · 作者: · 浏览: 4

案例环境:


案例描述:


通过块介质恢复(Block Media Recover:BMR)执行块级别的恢复操作来修复Oracle数据库上的逻辑或物理上损坏的数据块。


1、模拟数据块被破坏


10:26:48 SYS@ prod>conn scott/tiger


Connected.


10:26:51 SCOTT@ prod>select * from tab;


TNAME TABTYPE CLUSTERID


------------------------------ ------- ----------


BONUS TABLE


DEPT TABLE


EMP TABLE


EMP1 TABLE


SALGRADE TABLE


Elapsed: 00:00:00.10


10:26:55 SCOTT@ prod>


10:27:37 SYS@ prod>desc dba_segments


Name Null Type


----------------------------------------------------------------- -------- -------------


OWNER VARCHAR2(30)


SEGMENT_NAME VARCHAR2(81)


PARTITION_NAME VARCHAR2(30)


SEGMENT_TYPE VARCHAR2(18)


SEGMENT_SUBTYPE VARCHAR2(10)


TABLESPACE_NAME VARCHAR2(30)


HEADER_FILE NUMBER


HEADER_BLOCK NUMBER


BYTES NUMBER


BLOCKS NUMBER


EXTENTS NUMBER


INITIAL_EXTENT NUMBER


NEXT_EXTENT NUMBER


MIN_EXTENTS NUMBER


MAX_EXTENTS NUMBER


MAX_SIZE NUMBER


RETENTION VARCHAR2(7)


MINRETENTION NUMBER


PCT_INCREASE NUMBER


FREELISTS NUMBER


FREELIST_GROUPS NUMBER


RELATIVE_FNO NUMBER


BUFFER_POOL VARCHAR2(7)


FLASH_CACHE VARCHAR2(7)


CELL_FLASH_CACHE VARCHAR2(7)


10:27:41 SYS@ prod>col segment_name for a20


10:27:59 SYS@ prod>select owner,segment_name,SEGMENT_TYPE,HEADER_BLOCK from dba_segments


10:29:06 2 where owner='SCOTT' and segment_name='EMP1';


OWNER SEGMENT_NAME SEGMENT_TYPE HEADER_BLOCK


------------------------------ -------------------- ------------------ ------------


SCOTT EMP1 TABLE 170



通过以上查询,可以知道EMP1 table的segment header block为170;利用Uedit32,打开数据文件(users01.dbf)进行编辑破坏!


--------------------------------------------------------------------------------


--------------------------------------------------------------------------------


以下是计算block 170和block 171在Uedit32编辑中的offset:


10:29:24 SYS@ prod>select to_char(170*8*1024, 'xxxxxxxxxxxxxxxxxxxxx') from dual;


TO_CHAR(170*8*1024,'XX


----------------------


154000




10:30:27 SYS@ prod>select to_char(171*8*1024, 'xxxxxxxxxxxxxxxxxxxxx') from dual;


TO_CHAR(171*8*1024,'XX


----------------------


156000


以下是Uedit32编辑users01.dbf图片:


RMAN深入解析之--BlockRecover恢复坏块


通过转储数据块验证:


10:30:37 SYS@ prod>alter system dump datafile 4 block 170;


System altered.




[oracle@rh6 ~]$ ls -lt /u01/app/oracle/diag/rdbms/prod/prod/trace/|more


total 14300



-rw-r----- 1 oracle oinstall 4492 Jul 15 1