rman深入解析之--blockrecover恢复坏块案例环境:操作系统:redhatel5oracle:oracle11gr2案例描述:通过块介质恢复(blockmediarecover:bmr)执行块级别的恢复操
rman深入解析之--blockrecover恢复坏块
案例环境:
操作系统:redhat el5
oracle: oracle 11gr2
案例描述:
通过块介质恢复(block media recover:bmr)执行块级别的恢复操作来修复oracle数据库上的逻辑或物理上损坏的数据块。
1、模拟数据块被破坏
10:26:48 sys@ prod>conn scott/tigerconnected.10:26:51 scott@ prod>select * from tab;tname tabtype clusterid------------------------------ ------- ----------bonus tabledept tableemp tableemp1 tablesalgrade tableelapsed: 00:00:00.1010: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图片:
通过转储数据块验证:
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