ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 数据库恢复实例四:处理坏块

数据库恢复实例四:处理坏块

原创 Linux操作系统 作者:jifei0611 时间:2008-12-17 16:51:19 0 删除 编辑

数据库恢复实例四:处理坏块

数据错误如下:

SQL> select count(*) from test;

select count(*) from test

ERROR at line 1:

ORA-01578: ORACLE data block corrupted (file # 2, block # 1095)

ORA-01110: data file 2: '/u02/oradata/sfcsys/test01.dbf'1.分析:

分析:

上面的错误由坏块引用

恢复方法:

若有备份可用:可以通过两种方法来恢复(1)恢复整个数据文件(2)只恢复坏块

若无备份可用:可以通过expdp/impdp重建表去掉坏块

有备份可用的情况:

(1)   恢复整个数据文件

1.为了不影响使用,offline有坏块的数据文件

SQL> alter database datafile 2 offline;

2.恢复数据文件

RMAN> restore datafile 2;

RMAN> recover datafile 2;

3.使用数据文件在线

SQL>  alter database datafile 2 online;

(2)   只恢复坏块

RMAN> blockrecover datafile 2 block 1095;

 

Starting blockrecover at 17-DEC-08

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=137 devtype=DISK

 

channel ORA_DISK_1: restoring block(s)

channel ORA_DISK_1: specifying block(s) to restore from backup set

restoring blocks of datafile 00002

channel ORA_DISK_1: reading from backup piece /u09/orabackup/rman/SFCSYS_3658_1.dbfbk

channel ORA_DISK_1: restored block(s) from backup piece 1

piece handle=/u09/orabackup/rman/SFCSYS_3658_1.dbfbk tag=TAG20081217T120159

channel ORA_DISK_1: block restore complete, elapsed time: 00:00:02

 

starting media recovery

media recovery complete, elapsed time: 00:00:03

 

Finished blockrecover at 17-DEC-08

 

无备份可用的情况:

1.在做破坏之前先记录共有多少笔数据

SQL> select count(*) from test1;

 

  COUNT(*)

----------

    109466

2.导出数据

expdp content=all  tables=oak.test1 directory=dump dumpfile= expdat.dmp

3.删除test1

SQL> drop table test1;

4.导入数据

impdp content=all directory=dump dumpfile=expdat.dmp

再建立相应的索引,约束,包等即可

5.确认丢失数据量

SQL> select count(*) from test1;

 

  COUNT(*)

----------

    109394

109466-109394=72共有72笔数据丢失

 

:可以通过下的语句来检查损坏的对object(感觉这条语句运行有点慢)

SQL> select tablespace_name ,segment_type ,owner ,segment_name

  2  from dba_extents where file_id = 2 and 1095 between block_id

  3  and block_id + blocks -1;

TABLESPACE_NAME SEGMENT_TYPE    OWNER           SEGMENT_NAME

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

TEST            TABLE           OAK             TEST

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

上一篇: RMAN自动备份脚本
请登录后发表评论 登录
全部评论

注册时间:2008-01-12

  • 博文量
    143
  • 访问量
    275419