朋友客户的数据库由于磁盘损坏,从存储级别抽取出了RMAN的备份文件,但没有抽取出数据文件,联机重做日志,控制文件,参数文件等数据库文件。但抽取出来的备份文件中有数据文件,控制文件,参数文件的备份,归档重做日志备份因为没有磁盘空间没有执行完成。新安装Oracle软件后创建参数文件来使用RMAN备份来还原和恢复数据库。但在还原数据文件时出错,错误如下所示:

RMAN> run
2> {
3> allocate channel t1 device type disk;
4> restore controlfile from 'E:\ORABACK\ORCLBPM_9BQ7K30M_20150522.BAK';
5> alter database mount;
6> release channel t1;
7> }使用目标数据库控制文件替代恢复目录
分配的通道: t1
通道 t1: SID=572 设备类型=DISK启动 restore 于 29-5月 -15通道 t1: 正在还原控制文件
通道 t1: 还原完成, 用时: 00:00:03
输出文件名=D:\ORACLE\ORADATA\ORCLBPM\CONTROL01.CTL
输出文件名=D:\ORACLE\ORADATA\ORCLBPM\CONTROL02.CTL
输出文件名=D:\ORACLE\ORADATA\ORCLBPM\CONTROL03.CTL
完成 restore 于 29-5月 -15数据库已装载释放的通道: t1RMAN> run
2> {
3> allocate channel t1 device type disk;
4> restore database;
5> recover database;
6> release channel t1;
7> }分配的通道: t1
通道 t1: SID=572 设备类型=DISK启动 restore 于 29-5月 -15
启动 implicit crosscheck backup 于 29-5月 -15
已交叉检验的 200 对象
完成 implicit crosscheck backup 于 29-5月 -15启动 implicit crosscheck copy 于 29-5月 -15
完成 implicit crosscheck copy 于 29-5月 -15搜索恢复区中的所有文件
正在编制文件目录...
没有为文件编制目录通道 t1: 正在开始还原数据文件备份集
通道 t1: 正在指定从备份集还原的数据文件
通道 t1: 将数据文件 00001 还原到 D:\ORACLE\ORADATA\ORCLBPM\SYSTEM01.DBF
通道 t1: 将数据文件 00002 还原到 D:\ORACLE\ORADATA\ORCLBPM\SYSAUX01.DBF
通道 t1: 将数据文件 00003 还原到 D:\ORACLE\ORADATA\ORCLBPM\UNDOTBS01.DBF
通道 t1: 将数据文件 00004 还原到 D:\ORACLE\ORADATA\ORCLBPM\USERS01.DBF
通道 t1: 将数据文件 00005 还原到 D:\ORACLE\ORADATA\ORCLBPM\HB_SY01.DBF
通道 t1: 将数据文件 00006 还原到 D:\ORACLE\ORADATA\ORCLBPM\HB_SY02.DBF
通道 t1: 将数据文件 00007 还原到 D:\ORACLE\ORADATA\ORCLBPM\HB_SY03.DBF
通道 t1: 将数据文件 00008 还原到 D:\ORACLE\ORADATA\ORCLBPM\BPMSY01.DBF
通道 t1: 将数据文件 00009 还原到 D:\ORACLE\ORADATA\ORCLBPM\HMBPM01.DBF
通道 t1: 将数据文件 00010 还原到 D:\ORACLE\ORADATA\ORCLBPM\BLOCK01.DBF
通道 t1: 正在读取备份片段 E:\ORABACK\ORCLBPM_9AQ7K1NM_20150522.BAK
通道 t1: ORA-19870: 还原备份片段 E:\ORABACK\ORCLBPM_9AQ7K1NM_20150522.BAK 时出错
ORA-19612: 数据文件 1 没有还原, 因为 missing or corrupt data故障转移到上一个备份释放的通道: t1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: restore 命令 (在 05/29/2015 17:03:44 上) 失败
RMAN-06026: 有些目标没有找到 - 终止还原
RMAN-06023: 没有找到数据文件1的副本来还原

从错误信息: ORA-19870: 还原备份片段 E:\ORABACK\ORCLBPM_9AQ7K1NM_20150522.BAK 时出错,ORA-19612: 数据文件 1 没有还原, 因为 missing or corrupt data可以知道在执行还原数据文件1时备份片段丢失或有坏块,这里明显是有坏块,因为其它数据文件使用该备份片段已经还原成功了。这里通过设置事件让RMAN跳过坏块来还原数据文件。
C:\Users\Administrator>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期五 5月 29 18:02:22 2015

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

连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> alter system set event='19548 trace name context forever’, ‘19549 trace name
context forever' scope=spfile;

系统已更改。

SQL> shutdown immediate
ORA-01109: 数据库未打开

已经卸载数据库。
ORACLE 例程已经关闭。

SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 7666352128 bytes
Fixed Size 2190736 bytes
Variable Size 3942646384 bytes
Database Buffers 3707764736 bytes
Redo Buffers 13750272 bytes
数据库装载完毕。

RMAN> restore database;

启动 restore 于 29-5月 -15
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=1141 设备类型=DISK

正在略过数据文件 2; 已还原到文件 D:\ORACLE\ORADATA\ORCLBPM\SYSAUX01.DBF
正在略过数据文件 3; 已还原到文件 D:\ORACLE\ORADATA\ORCLBPM\UNDOTBS01.DBF
正在略过数据文件 4; 已还原到文件 D:\ORACLE\ORADATA\ORCLBPM\USERS01.DBF
正在略过数据文件 5; 已还原到文件 D:\ORACLE\ORADATA\ORCLBPM\HB_SY01.DBF
正在略过数据文件 6; 已还原到文件 D:\ORACLE\ORADATA\ORCLBPM\HB_SY02.DBF
正在略过数据文件 8; 已还原到文件 D:\ORACLE\ORADATA\ORCLBPM\BPMSY01.DBF
正在略过数据文件 9; 已还原到文件 D:\ORACLE\ORADATA\ORCLBPM\HMBPM01.DBF
正在略过数据文件 10; 已还原到文件 D:\ORACLE\ORADATA\ORCLBPM\BLOCK01.DBF
通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件 00001 还原到 D:\ORACLE\ORADATA\ORCLBPM\SYSTEM01.DBF
通道 ORA_DISK_1: 将数据文件 00007 还原到 D:\ORACLE\ORADATA\ORCLBPM\HB_SY03.DBF
通道 ORA_DISK_1: 正在读取备份片段 E:\ORABACK\ORCLBPM_9AQ7K1NM_20150522.BAK
通道 ORA_DISK_1: 段句柄 = E:\ORABACK\ORCLBPM_9AQ7K1NM_20150522.BAK 标记 = TAG2015052
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:02:45
完成 restore 于 29-5月 -15

下面对之前还原报错的数据文件SYSTEM01.DBF,HB_SY03.DBF进行验证
C:\Users\Administrator>dbv file=D:\ORACLE\ORADATA\ORCLBPM\SYSTEM01.DBF blocksize
=8192

DBVERIFY: Release 11.2.0.1.0 - Production on 星期五 5月 29 18:29:19 2015

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

DBVERIFY - 开始验证: FILE = D:\ORACLE\ORADATA\ORCLBPM\SYSTEM01.DBF

DBVERIFY - 验证完成

检查的页总数: 280064
处理的页总数 (数据): 242009
失败的页总数 (数据): 0
处理的页总数 (索引): 13233
失败的页总数 (索引): 0
处理的页总数 (其他): 3322
处理的总页数 (段) : 1
失败的总页数 (段) : 0
空的页总数: 21500
标记为损坏的总页数: 0
流入的页总数: 0
加密的总页数 : 0
最高块 SCN : 87501555 (0.87501555)

C:\Users\Administrator>dbv file=D:\ORACLE\ORADATA\ORCLBPM\HB_SY03.DBF blocksize=
8192

DBVERIFY: Release 11.2.0.1.0 - Production on 星期五 5月 29 18:30:35 2015

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

DBVERIFY - 开始验证: FILE = D:\ORACLE\ORADATA\ORCLBPM\HB_SY03.DBF

DBVERIFY - 验证完成

检查的页总数: 524288
处理的页总数 (数据): 256890
失败的页总数 (数据): 0
处理的页总数 (索引): 52837
失败的页总数 (索引): 0
处理的页总数 (其他): 196657
处理的总页数 (段) : 0
失败的总页数 (段) : 0
空的页总数: 17904
标记为损坏的总页数: 0
流入的页总数: 0
加密的总页数 : 0
最高块 SCN : 87500838 (0.87500838)

从上面的验证可以看到没有坏块,幸运哈哈。我们来检查一个控制文件中记录的数据文件检查点SCN与数据文件头SCN是否相同,如果不同可能需要恢复。

SQL> select file#,checkpoint_change#,to_char(checkpoint_time,'yyyy-mm-dd hh24:mi
:ss') checkpoint_time from v$datafile;FILE# CHECKPOINT_CHANGE# CHECKPOINT_TIME
---------- ------------------ -------------------1           87500284 2015-05-22 23:00:422           87500284 2015-05-22 23:00:423           87500284 2015-05-22 23:00:424           87500284 2015-05-22 23:00:425           87500284 2015-05-22 23:00:426           87500284 2015-05-22 23:00:427           87500284 2015-05-22 23:00:428           87500284 2015-05-22 23:00:429           87500284 2015-05-22 23:00:4210           87500284 2015-05-22 23:00:42已选择10行。
SQL> select file#,checkpoint_change#,name from v$datafile_header;FILE# CHECKPOINT_CHANGE# NAME
---------- ------------------ ----------------------------------1           87499953 D:\ORACLE\ORADATA\ORCLBPM\SYSTEM01.DBF2           87499953 D:\ORACLE\ORADATA\ORCLBPM\SYSAUX01.DBF3           87499953 D:\ORACLE\ORADATA\ORCLBPM\UNDOTBS01.DBF4           87499953 D:\ORACLE\ORADATA\ORCLBPM\USERS01.DBF5           87499953 D:\ORACLE\ORADATA\ORCLBPM\HB_SY01.DBF6           87499953 D:\ORACLE\ORADATA\ORCLBPM\HB_SY02.DBF7           87499953 D:\ORACLE\ORADATA\ORCLBPM\HB_SY03.DBF8           87499953 D:\ORACLE\ORADATA\ORCLBPM\BPMSY01.DBF9           87499953 D:\ORACLE\ORADATA\ORCLBPM\HMBPM01.DBF10           87499953 D:\ORACLE\ORADATA\ORCLBPM\BLOCK01.DBF已选择10行。

可以看到所有数据文件头记录的检查点scn都一样,控制文件中记录的所有数据文件检查点scn都一样,但数据文件头检查点scn与控制文件中记录的数据文件检查点scn不一样,所以选择重建控制文件来执行恢复,这里将控制文件备份到跟踪文件中。

SQL> oradebug setmypid
已处理的语句
SQL> alter database backup controlfile to trace2  ;数据库已更改。SQL> oradebug tracefile_name
d:\app\administrator\diag\rdbms\orclbpm\orclbpm\trace\orclbpm_ora_1704.trc

下面用跟踪文件的控制文件创建语句来重新创建控制文件,这里要使用resetlogs方式来创建,因为RMAN的备份文件中没有联机重做日志文件。

SQL> shutdown immediate
ORA-01109: ??????已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup nomount
ORACLE 例程已经启动。Total System Global Area 7666352128 bytes
Fixed Size                  2190736 bytes
Variable Size            3942646384 bytes
Database Buffers         3707764736 bytes
Redo Buffers               13750272 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "ORCLBPM" RESETLOGS  ARCHIVELOG2      MAXLOGFILES 163      MAXLOGMEMBERS 34      MAXDATAFILES 1005      MAXINSTANCES 86      MAXLOGHISTORY 2927  LOGFILE8    GROUP 1 'D:\ORACLE\ORADATA\ORCLBPM\REDO01.LOG'  SIZE 50M BLOCKSIZE 512,9    GROUP 2 'D:\ORACLE\ORADATA\ORCLBPM\REDO02.LOG'  SIZE 50M BLOCKSIZE 512,10    GROUP 3 'D:\ORACLE\ORADATA\ORCLBPM\REDO03.LOG'  SIZE 50M BLOCKSIZE 51211  -- STANDBY LOGFILE12  DATAFILE13    'D:\ORACLE\ORADATA\ORCLBPM\SYSTEM01.DBF',14    'D:\ORACLE\ORADATA\ORCLBPM\SYSAUX01.DBF',15    'D:\ORACLE\ORADATA\ORCLBPM\UNDOTBS01.DBF',16    'D:\ORACLE\ORADATA\ORCLBPM\USERS01.DBF',17    'D:\ORACLE\ORADATA\ORCLBPM\HB_SY01.DBF',18    'D:\ORACLE\ORADATA\ORCLBPM\HB_SY02.DBF',19    'D:\ORACLE\ORADATA\ORCLBPM\HB_SY03.DBF',20    'D:\ORACLE\ORADATA\ORCLBPM\BPMSY01.DBF',21    'D:\ORACLE\ORADATA\ORCLBPM\HMBPM01.DBF',22    'D:\ORACLE\ORADATA\ORCLBPM\BLOCK01.DBF'23  CHARACTER SET ZHS16GBK24  ;控制文件已创建。

检查一个控制文件中记录的数据文件检查点SCN与数据文件头SCN是否相同,数据文件头检查点scn与控制文件中记录的数据文件检查点scn一样,在没有联机重做日志和归档重做日志的情况下,我们只能将数据库恢复到scn:87499953时间点,并以open resetlogs选项来open数据库

SQL> select FILE#,CHECKPOINT_CHANGE# from v$datafile_header;FILE# CHECKPOINT_CHANGE#
---------- ------------------1           874999532           874999533           874999534           874999535           874999536           874999537           874999538           874999539           8749995310           87499953已选择10行。SQL> select FILE#, CHECKPOINT_CHANGE#,LAST_CHANGE# from v$datafile;FILE# CHECKPOINT_CHANGE# LAST_CHANGE#
---------- ------------------ ------------1           874999532           874999533           874999534           874999535           874999536           874999537           874999538           874999539           8749995310           87499953已选择10行。

这里需要设置隐含参数_allow_resetlogs_corruption=true来open数据库。

SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile;系统已更改。SQL> shutdown immediate
ORA-01109: ??????已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。Total System Global Area 7666352128 bytes
Fixed Size                  2190736 bytes
Variable Size            3942646384 bytes
Database Buffers         3707764736 bytes
Redo Buffers               13750272 bytes
数据库装载完毕。
SQL> alter database open resetlogs;数据库已更改。SQL> ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\ORACLE\ORADATA\ORCLBPM\TEMP01.DBF' R
EUSE;表空间已更改。SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。Total System Global Area 7666352128 bytes
Fixed Size                  2190736 bytes
Variable Size            3942646384 bytes
Database Buffers         3707764736 bytes
Redo Buffers               13750272 bytes
数据库装载完毕。
数据库已经打开。

直此将数据库恢复到备份生成的时间点,但没有归档重做日志和联机重做日志丢失了半天的数据。

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

转载于:http://blog.itpub.net/26015009/viewspace-1679761/

磁盘损坏造成RMAN备份文件有坏块的恢复案例相关推荐

  1. 利用RMAN检测数据库坏块的脚本

    虽然我们也可以通过dbv(db file verify)工具做到对单个数据文件的坏块检测,但是直接使用RMAN的"backup validate check logical database ...

  2. oracle rman 检查坏块,Oracle中使用RMAN来检验坏块

    RMAN即recovery manager可以通过在执行的备份任务中,仅仅验证数据文件中的数据块而不生成实际的备份,这样做的目的是纯粹为了了解数据文件中是否有坏块. RMAN在这个环境中: 验证数据文 ...

  3. rman坏块的检测与恢复

    1,先通过rman进行数据库的全备份(backup database) 2,关闭数据库 3,通过ultraEdit对数据文件进行编辑,然后保存 注意:修改时不能修改到数据文件头信息(因为要进行scn校 ...

  4. Linux 磁盘坏块修复处理(错误:read error: Input/output error)

    当磁盘出现坏块时,你对所关联的文件进行读取时,一般会出现 read error: Input/output error 这样的错误. 反过来讲,当你看到 read error: Input/outpu ...

  5. ORA-19566 exceeded limit of 0 corrupt blocks数据坏块处理

    问题描述 RMAN备份失败,报错如下: channel ch1: starting piece 1 at 02-NOV-12 released channel: ch1 RMAN-00571: RMA ...

  6. ORA-01578和ORA-26040--NOLOGGING操作引起的坏块-错误解释和解决方案(文档ID 1623284.1)...

    ORA-01578和ORA-26040--NOLOGGING操作引起的坏块-错误解释和解决方案(文档ID 1623284.1) (一)NOLOGGING操作引起的坏块(ORA-01578和ORA-26 ...

  7. oracle强制拉库跳过recovery,学习笔记:Oracle坏块 数据库recover恢复时遇到坏块的解决思路案例...

    天萃荷净 recover遇到坏块处理本质探讨,记录一次在Oracle数据库recover恢复过程中,遇到数据库坏块无法恢复的解决思路案例 如果在还原出来的数据文件中有坏块,而归档日志和联机日志是正常的 ...

  8. 一道面试题:遇到大规模Oracle坏块该怎么处理?

    最近一两个月,一直有场景化运维.场景化大数据分析的声音围绕在耳畔,以Gdevops全球敏捷运维峰会杭州站上新炬网络执行副总裁程永新的"一切没有场景驱动的运维平台建设都是假大空!"最 ...

  9. linux磁盘坏块 cp报错,Linux磁盘坏道的检测及修复

    磁盘坏道,是所有人都不希望遇到的事情-- 磁盘坏道,轻则磁盘性能下降,重则系统启动失败,数据丢失.所以我们要时刻关注磁盘健康状况,及时备份重要数据. 什么是S.M.A.R.T? 全称为 Self-Mo ...

最新文章

  1. mysql trigger before insert_在MYSQL中创建一个BEFORE INSERT TRIGGER
  2. 三天打工生活终于结束了
  3. 共享SQL语句减少硬解析
  4. python绘制饼图双层_Python入门进阶:Python绘制饼图到Microsoft Excel
  5. linux裁剪图片的软件,ImageMagick教程:如何在Linux命令行中剪裁图像
  6. [Xcode 实际操作]六、媒体与动画-(6)使用UIBlurEffect给图片添加模糊效果
  7. 天呐!你知道MSBuild都干了些什么
  8. VSCode 用户自定义片段 snippet 基本语法说明
  9. QTextEdit实现图片和文本同行显示
  10. Android内核学习笔记
  11. 「微信小程序」剖析(二):框架原理 | 在桌面浏览器上运行的
  12. MyBatis学习总结(20)——MyBatis完全使用指南
  13. OpenGL仿作橡皮筋技术
  14. [论文阅读] Large Scale Incremental Learning
  15. java轻量级和重量级_Java 偏向锁、轻量级锁和重量级锁
  16. sha256算法细节详解
  17. VHDL与MATLAB卷积译码,基于VHDL的卷积编码实现 详解卷积编码的应用
  18. 计算机用户接入广域网的技术,广域网接入技术
  19. 关于三线SPI驱动ST7789V
  20. java 实现Word或Excel 转Pdf

热门文章

  1. ubuntu安装输入法----小企鹅输入法
  2. 2000万直播数据看20万游戏主播能否月入100万
  3. k8s 部署 TCP node应用
  4. 【自动控制原理】燃烧卡路里_系统分析实例-笔记
  5. 数据查询和业务流分开_索格非SOGEFI:EDI 业务场景详解之生成DESADV
  6. 转义符——反斜杠(\)
  7. 黑人抬棺用计算机演奏的乐谱,原神乐谱黑人抬棺怎么演奏_乐谱黑人抬棺_3DM手游...
  8. Vulnhub DC-2
  9. lista=['a','abc','d','abc','fgi','abf'],寻找列表中出现次数最多的第一个 字母,出现了几次
  10. 【6】opencv采用映射技术实现鱼眼镜头校正和鱼眼镜头还原全景图。