DataGuard 环境rman恢复主库坏块一例

环境:oracle 10g dataguard环境
问题:
ERROR:
ORA-01578: ORACLE data block corrupted (file # 4, block # 558)
ORA-01110: data file 4: '/data/oracle/oradata/primary/users01.dbf'
主库坏块报错
由于是DG环境,考虑从备用库COPY数据文件,利用rman恢复坏块

1.在主库上先查出出现坏块的object
SELECT   segment_name,
         file_id,
         block_id,
         blocks,
         block_id + blocks - 1 largest
  FROM   dba_extents
 WHERE   block_id = (SELECT   MAX (block_id)
                       FROM   dba_extents
                      WHERE   block_id < 558 AND file_id = 4)
         AND file_id = 4;
SEGMENT_NAME        FILE_ID   BLOCK_ID     BLOCKS    LARGEST
---------------- ----------
TEST                   4        553          8        560
看到是test表上有坏块
2.用dbv检查datafile,查看一共有多少坏块
[oracle@primary bin]$ $ORACLE_HOME/bin/dbv file=/data/oracle/oradata/primary/users01.dbf
DBVERIFY: Release 10.2.0.3.0 - Production on Wed Apr 28 16:22:13 2010
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
DBVERIFY - Verification starting : FILE = /data/oracle/oradata/primary/users01.dbf
Page 558 is marked corrupt
Corrupt block relative dba: 0x0100022e (file 4, block 558)
Bad header found during dbv:
Data in bad block:
 type: 4 format: 7 rdba: 0x0100022e
 last change scn: 0x0000.0004af86 seq: 0x1 flg: 0x04
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0xaf860601
 check value in block header: 0x84e4
 computed block checksum: 0xf502
 
DBVERIFY - Verification complete
Total Pages Examined         : 1120
Total Pages Processed (Data) : 261
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 72
Total Pages Failing   (Index): 0
Total Pages Processed (Other): 255
Total Pages Processed (Seg)  : 0
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 531
Total Pages Marked Corrupt   : 1
Total Pages Influx           : 0
Highest block SCN            : 309453 (0.309453)
坏块只有1个处理起来还是比较简单
3.先暂时跳过坏块,用户临时可用
sqlplus "/as sysdba"
declare
  begin
   dbms_repair.skip_corrupt_blocks (
      schema_name => 'TEST',
       object_name => 'TEST',
      object_type => dbms_repair.table_object,
       flags => dbms_repair.skip_flag);
  end;
  /
4.rman的方法恢复
  停备库,从备库得到最新的users01.dbf,改名为users01.dbf.bak传到主库
  scp  user01.dbf  192.168.6.2:/home/oracle
  主库  mv /home/oracle/users01.dbf   /home/oracle/user01.dbf.bak
  在主库上作 
         rman nocatalog
  connect target
  catalog datafilecopy '/home/oracle/users01.dbf.bak';
  list copy of database;
         run {
      blockrecover datafile 4 block 558;
      }
RMAN> catalog datafilecopy '/home/oracle/users01.dbf.bak';
cataloged datafile copy
datafile copy filename=/home/oracle/users01.dbf.bak recid=2 stamp=717525968
RMAN> list copy of database;

List of Datafile Copies
Key     File S Completion Time Ckp SCN    Ckp Time        Name
------- ---- - --------------- ---------- --------------- ----
2       4    A 28-APR-10       338972     28-APR-10       /home/oracle/users01.dbf.bak
RMAN> run {
2>           blockrecover datafile 4 block 558;
3>           }
Starting blockrecover at 28-APR-10
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=142 devtype=DISK
channel ORA_DISK_1: restoring block(s) from datafile copy /home/oracle/users01.dbf.bak
starting media recovery
media recovery complete, elapsed time: 00:00:03
Finished blockrecover at 28-APR-10
RMAN>
5.关闭NOSKIP_FLAG
declare
  begin
   dbms_repair.skip_corrupt_blocks (
      schema_name => 'TEST',
       object_name => 'TEST',
      object_type => dbms_repair.table_object,
       flags => dbms_repair.NOSKIP_FLAG);
  end;
  /
  恢复完成,重新启动备库恢复!!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7314177/viewspace-661579/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7314177/viewspace-661579/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值