使用rman恢复坏块

本文介绍了如何在Oracle 10g环境下使用RMAN工具进行坏块恢复的过程。通过创建表空间、备份数据文件、模拟损坏文件、验证损坏情况、执行RMAN恢复操作等步骤,详细展示了从备份中恢复损坏块的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                                                                                           
                                                                                           使用rman恢复坏块

环境:
oracle oracle 10g 10.2.0.5
os   linux 5.8
1)创建一个表空间,

SQL> create tablespace test datafile '/oradata/ORCL/datafile/test.dbf' size 20m;

Tablespace created.

SQL> col file_name for a20
SQL> select file_id,file_name,tablespace_name from dba_data_files;

   FILE_ID FILE_NAME            TABLESPACE_NAME
---------- -------------------- ------------------------------
         1 /oradata/ORCL/datafi SYSTEM
           le/o1_mf_system_cc22
           vck6_.dbf

         2 /oradata/ORCL/datafi UNDOTBS1
           le/o1_mf_undotbs1_cc
           22vcor_.dbf

         3 /oradata/ORCL/datafi SYSAUX
           le/o1_mf_sysaux_cc22
           vck9_.dbf

         4 /oradata/ORCL/datafi USERS
           le/o1_mf_users_cc22v
           cox_.dbf

         5 /oradata/ORCL/datafi DS
           le/ds.dbf

         6 /oradata/ORCL/datafi TEST
           le/test.dbf
2)创建一个表,插入数据

SQL> create table tt1 tablespace test as select * from dba_objects;

Table created.

SQL> insert into tt1 select * from tt1;
insert into tt1 select * from tt1
*
ERROR at line 1:
ORA-01653: unable to extend table SYS.TT1 by 128 in tablespace TEST

3)备份datafile 6

RMAN> report schema;

Report of database schema

List of Permanent Datafiles
===========================
File Size(MB) Tablespace           RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1    490      SYSTEM               ***     /oradata/ORCL/datafile/o1_mf_system_cc22vck6_.dbf
2    30       UNDOTBS1             ***     /oradata/ORCL/datafile/o1_mf_undotbs1_cc22vcor_.dbf
3    260      SYSAUX               ***     /oradata/ORCL/datafile/o1_mf_sysaux_cc22vck9_.dbf
4    5        USERS                ***     /oradata/ORCL/datafile/o1_mf_users_cc22vcox_.dbf
5    30       DS                   ***     /oradata/ORCL/datafile/ds.dbf
6    20       TEST                 ***     /oradata/ORCL/datafile/test.dbf

List of Temporary Files
=======================
File Size(MB) Tablespace           Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1    20       TEMP                 32767       /oradata/ORCL/datafile/o1_mf_temp_cc22x63b_.tmp

RMAN> backup datafile 6 format '/oradata/test_%U';

Starting backup at 02-MAR-16
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00006 name=/oradata/ORCL/datafile/test.dbf
channel ORA_DISK_1: starting piece 1 at 02-MAR-16
channel ORA_DISK_1: finished piece 1 at 02-MAR-16
piece handle=/oradata/test_03qvecp6_1_1 tag=TAG20160302T020214 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 02-MAR-16


RMAN> list backup of database;


List of Backup Sets
===================

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
1       Full    551.39M    DISK        00:00:36     02-MAR-16     
        BP Key: 1   Status: AVAILABLE  Compressed: NO  Tag: TAG20160302T011126
        Piece Name: /oradata/full_data_01qve9pu_1_1
  List of Datafiles in backup set 1
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  1       Full 555332     02-MAR-16 /oradata/ORCL/datafile/o1_mf_system_cc22vck6_.dbf
  2       Full 555332     02-MAR-16 /oradata/ORCL/datafile/o1_mf_undotbs1_cc22vcor_.dbf
  3       Full 555332     02-MAR-16 /oradata/ORCL/datafile/o1_mf_sysaux_cc22vck9_.dbf
  4       Full 555332     02-MAR-16 /oradata/ORCL/datafile/o1_mf_users_cc22vcox_.dbf
  5       Full 555332     02-MAR-16 /oradata/ORCL/datafile/ds.dbf

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
3       Full    19.09M     DISK        00:00:01     02-MAR-16     
        BP Key: 3   Status: AVAILABLE  Compressed: NO  Tag: TAG20160302T020214
        Piece Name: /oradata/test_03qvecp6_1_1
  List of Datafiles in backup set 3
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  6       Full 558602     02-MAR-16 /oradata/ORCL/datafile/test.dbf

 
4)可以用 bbed等软件模拟破坏文件(不好模拟啊) 这里使用dd命令
[oracle@test oradata]$ dd of=/oradata/test.dbf bs=8192 conv=notrunc seek=133<<EOF
> Corrupted block!
> EOF
0+1 records in
0+1 records out
17 bytes (17 B) copied, 2.4e-05 seconds, 708 kB/s
[oracle@test oradata]$

5)dbv检测


[oracle@test bin]$ ./dbv file=/oradata/test.dbf blocksize=8192

DBVERIFY: Release 10.2.0.5.0 - Production on Wed Mar 2 03:56:09 2016

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

DBVERIFY - Verification starting : FILE = /oradata/test.dbf
Page 133 is marked corrupt
Corrupt block relative dba: 0x01800085 (file 6, block 133)
Bad header found during dbv:
Data in bad block:
 type: 67 format: 7 rdba: 0x65747075
 last change scn: 0x636f.6c622064 seq: 0x6b flg: 0x21
 spare1: 0x72 spare2: 0x72 spare3: 0x0
 consistency value in tail: 0x92d20601
 check value in block header: 0xb0a
 block checksum disabled



DBVERIFY - Verification complete

Total Pages Examined         : 1280
Total Pages Processed (Data) : 1125
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 0
Total Pages Failing   (Index): 0
Total Pages Processed (Other): 34
Total Pages Processed (Seg)  : 0
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 120
Total Pages Marked Corrupt   : 1
Total Pages Influx           : 0
Highest block SCN            : 561906 (0.561906)
6)查询表


SQL> alter system flush buffer_cache;

System altered.

SQL> select count(*) from tt1;
ORA-01578: ORACLE data block corrupted (file # 6, block # 133)
ORA-01110: data file 6: '/oradata/test.dbf'
7)rman 恢复(前提得有备份)
RMAN> blockrecover datafile 6 block 133  ;

Starting blockrecover at 02-MAR-16
using channel ORA_DISK_1

channel ORA_DISK_1: restoring block(s)
channel ORA_DISK_1: specifying block(s) to restore from backup set
restoring blocks of datafile 00006
channel ORA_DISK_1: reading from backup piece /oradata/test_06qvejau_1_1
channel ORA_DISK_1: restored block(s) from backup piece 1
piece handle=/oradata/test_06qvejau_1_1 tag=TAG20160302T035406
channel ORA_DISK_1: block restore complete, elapsed time: 00:00:01

starting media recovery
media recovery complete, elapsed time: 00:00:01

Finished blockrecover at 02-MAR-16

8)查看恢复成功

SQL> select count(*) from tt1;

  COUNT(*)
----------
     50053

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值