热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

oraclerman检查坏块,OracleRMAN修复逻辑坏块

RMAN实现数据块恢复试用Rman可以实现数据块级的数据恢复,在传统恢复手段中即某个数据文件的一个数据块被损坏,就造成整个数据文件无法试用,

RMAN 实现数据块恢复

试用Rman可以实现数据块级的数据恢复,在传统恢复手段中即某个数据文件的一个数据块被损坏,就造成整个数据文件无法试用,此时必须通过备份恢复整个数据文件。显然这样的方法会会时间较长,而RMAN实现块级恢复,如果某个数据文件的数据损坏,通过数据文件的完整备份就可以恢复数据块。

案例:

数据库是一个单实例Oracle数据库,该库的总大小有700G。

存储设备使用华为存储,备份设备使用希捷3T的移动硬盘。该数据库无DG无OGG。备份策略为每周六0点全库备份,周三0点1级差异备份其余时间为每天0点做2级差异备份。全库备份大小为500G左右。

2.2 故障情况

本次故障原因是INSPUROA用户在查询EDOC_BASE_WORKFLOW表出现报错。提示故障坏块为datafile 5。报错信息取至alter日志如下:

Reading datafile '/oradata/datafiles/oadb/oa01.dbf' for corruption at rdba: 0x016d4dd5 (file 5, block 2969045)

Reread (file 5, block 2969045) found same corrupt data (no logical check)

Tue Aug 18 10:53:51 2015

Corrupt Block Found

TSN = 6, TSNAME = OA

RFN = 5, BLK = 2969045, RDBA = 23940565

OBJN = 95690, OBJD = 95690, OBJECT = EDOC_BASE_WORKFLOW, SUBOBJECT =

SEGMENT OWNER = INSPUROA, SEGMENT TYPE = Table Segment

Tue Aug 18 10:55:03 2015

Hex dump of (file 5, block 2969045) in trace file /u01/app/oracle/diag/rdbms/oadb/oadb/trace/oadb_ora_4565.trc

Corrupt block relative dba: 0x016d4dd5 (file 5, block 2969045)

Bad header found during buffer read

Data in bad block:

type: 117 format: 0 rdba: 0x20206b73

last change scn: 0x2020.20202020 seq: 0x20 flg: 0x20

spare1: 0x64 spare2: 0x69 spare3: 0x0

consistency value in tail: 0x4d240601

check value in block header: 0x5f49

block checksum disabled

Reading datafile '/oradata/datafiles/oadb/oa01.dbf' for corruption at rdba: 0x016d4dd5 (file 5, block 2969045)

Reread (file 5, block 2969045) found same corrupt data (no logical check)

Tue Aug 18 10:55:03 2015

Corrupt Block Found

TSN = 6, TSNAME = OA

RFN = 5, BLK = 2969045, RDBA = 23940565

OBJN = 95690, OBJD = 95690, OBJECT = EDOC_BASE_WORKFLOW, SUBOBJECT =

SEGMENT OWNER = INSPUROA, SEGMENT TYPE = Table Segment

Tue Aug 18 10:57:29 2015

Hex dump of (file 5, block 2969045) in trace file /u01/app/oracle/diag/rdbms/oadb/oadb/trace/oadb_ora_21708.trc

Corrupt block relative dba: 0x016d4dd5 (file 5, block 2969045)

Bad header found during buffer read

Data in bad block:

type: 117 format: 0 rdba: 0x20206b73

last change scn: 0x2020.20202020 seq: 0x20 flg: 0x20

spare1: 0x64 spare2: 0x69 spare3: 0x0

consistency value in tail: 0x4d240601

check value in block header: 0x5f49

block checksum disabled

分析原因

观察存储,无报错警告,初步怀疑逻辑坏块

执行修复

根据报错信息

Reading datafile '/oradata/datafiles/oadb/oa01.dbf' for corruption at rdba: 0x016d4dd5 (file 5, block 2969045)

Reread (file 5, block 2969045) found same corrupt data (no logical check)

Corrupt Block Found

TSN = 6, TSNAME = OA

RFN = 5, BLK = 2969045, RDBA = 23940565

OBJN = 95690, OBJD = 95690, OBJECT = EDOC_BASE_WORKFLOW, SUBOBJECT =

SEGMENT OWNER = INSPUROA, SEGMENT TYPE = Table Segment

确定数据文件 datafile 5,oa01.dbf出现坏块现象

查看坏块信息:

SQL> select * from v$database_block_corruption;

FILE#    BLOCK#    BLOCKS CORRUPTION_CHANGE# CORRUPTIO

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

5    2969045          1                  0 CORRUPT

确定坏块为2969045号

检查备份日志(增量,全量)是否完整备份

检查备份datafile 5 是否完整

RMAN> backup validate datafile 5;

Starting backup at 18-AUG-15

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=982 device type=DISK

channel ORA_DISK_1: starting full datafile backup set

channel ORA_DISK_1: specifying datafile(s) in backup set

input datafile file number=00005 name=/oradata/datafiles/oadb/oa01.dbf

channel ORA_DISK_1: backup set complete, elapsed time: 00:05:35

List of Datafiles

=================

File Status Marked Corrupt Empty Blocks Blocks Examined High SCN

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

5    FAILED 0              1840        4190720        9484751217293

File Name: /oradata/datafiles/oadb/oa01.dbf

Block Type Blocks Failing Blocks Processed

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

Data      0              2842014

Index      0              182983

Other      1              1163883

validate found one or more corrupt blocks

See trace file /u01/app/oracle/diag/rdbms/oadb/oadb/trace/oadb_ora_13513.trc for details

Finished backup at 18-AUG-15

执行修复

使用RMAN工具

RMAN> blockrecover datafile 5 block 2969045;

Starting recover at 18-AUG-15

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 00005

channel ORA_DISK_1: reading from backup piece /orabak_m/oadb/20150815_fullbkdb_ssqek9d1_1_1.bak

channel ORA_DISK_1: piece handle=/orabak_m/oadb/20150815_fullbkdb_ssqek9d1_1_1.bak tag=TAG20150815T000448

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

channel ORA_DISK_1: reading from backup piece /orabak_m/oadb/20150815_fullbkdb_ssqek9d1_2_1.bak

channel ORA_DISK_1: piece handle=/orabak_m/oadb/20150815_fullbkdb_ssqek9d1_2_1.bak tag=TAG20150815T000448

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

channel ORA_DISK_1: reading from backup piece /orabak_m/oadb/20150815_fullbkdb_ssqek9d1_3_1.bak

channel ORA_DISK_1: piece handle=/orabak_m/oadb/20150815_fullbkdb_ssqek9d1_3_1.bak tag=TAG20150815T000448

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

channel ORA_DISK_1: reading from backup piece /orabak_m/oadb/20150815_fullbkdb_ssqek9d1_4_1.bak

channel ORA_DISK_1: piece handle=/orabak_m/oadb/20150815_fullbkdb_ssqek9d1_4_1.bak tag=TAG20150815T000448

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

channel ORA_DISK_1: block restore complete, elapsed time: 00:29:50

starting media recovery

archived log for thread 1 with sequence 8341 is already on disk as file /orabak/arch/1_8341_802601679.dbf

archived log for thread 1 with sequence 8342 is already on disk as file /orabak/arch/1_8342_802601679.dbf

archived log for thread 1 with sequence 8343 is already on disk as file /orabak/arch/1_8343_802601679.dbf

archived log for thread 1 with sequence 8344 is already on disk as file /orabak/arch/1_8344_802601679.dbf

channel ORA_DISK_1: starting archived log restore to default destination

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8318

channel ORA_DISK_1: reading from backup piece /orabak_m/oadb/20150815_fullbkarc_t2qekhpb_1_1.bak

channel ORA_DISK_1: piece handle=/orabak_m/oadb/20150815_fullbkarc_t2qekhpb_1_1.bak tag=TAG20150815T022754

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:07

channel ORA_DISK_1: starting archived log restore to default destination

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8319

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8320

channel ORA_DISK_1: reading from backup piece /orabak_m/oadb/20150816_inc_2bkair_t9qemurm_1_1.bak

channel ORA_DISK_1: piece handle=/orabak_m/oadb/20150816_inc_2bkair_t9qemurm_1_1.bak tag=TAG20150816T002318

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:15

channel ORA_DISK_1: starting archived log restore to default destination

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8321

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8322

channel ORA_DISK_1: reading from backup piece /orabak_m/oadb/20150816_inc_2bkair_taqemurm_1_1.bak

channel ORA_DISK_1: piece handle=/orabak_m/oadb/20150816_inc_2bkair_taqemurm_1_1.bak tag=TAG20150816T002318

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:07

channel ORA_DISK_1: starting archived log restore to default destination

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8323

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8324

channel ORA_DISK_1: reading from backup piece /orabak_m/oadb/20150817_inc_2bkair_thqepj8n_1_1.bak

channel ORA_DISK_1: piece handle=/orabak_m/oadb/20150817_inc_2bkair_thqepj8n_1_1.bak tag=TAG20150817T002350

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:16

channel ORA_DISK_1: starting archived log restore to default destination

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8325

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8326

channel ORA_DISK_1: reading from backup piece /orabak_m/oadb/20150817_inc_2bkair_tiqepj8n_1_1.bak

channel ORA_DISK_1: piece handle=/orabak_m/oadb/20150817_inc_2bkair_tiqepj8n_1_1.bak tag=TAG20150817T002350

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:07

channel ORA_DISK_1: starting archived log restore to default destination

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8327

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8328

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8329

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8330

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8331

channel ORA_DISK_1: reading from backup piece /orabak_m/oadb/20150818_inc_2bkair_tpqes7ml_1_1.bak

channel ORA_DISK_1: piece handle=/orabak_m/oadb/20150818_inc_2bkair_tpqes7ml_1_1.bak tag=TAG20150818T002453

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:35

channel ORA_DISK_1: starting archived log restore to default destination

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8332

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8333

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8334

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8335

channel ORA_DISK_1: reading from backup piece /orabak_m/oadb/20150818_inc_2bkair_tqqes7ml_1_1.bak

channel ORA_DISK_1: piece handle=/orabak_m/oadb/20150818_inc_2bkair_tqqes7ml_1_1.bak tag=TAG20150818T002453

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:35

channel ORA_DISK_1: starting archived log restore to default destination

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8336

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8337

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8338

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8339

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8340

channel ORA_DISK_1: reading from backup piece /orabak_m/oadb/20150818_inc_2bkair_trqes7ml_1_1.bak

channel ORA_DISK_1: piece handle=/orabak_m/oadb/20150818_inc_2bkair_trqes7ml_1_1.bak tag=TAG20150818T002453

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:25

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

Finished recover at 18-AUG-15

修复完成查看alter日志情况

Media Recovery Log /orabak/arch/1_8336_802601679.dbf

Tue Aug 18 12:04:29 2015

Media Recovery Log /orabak/arch/1_8336_802601679.dbf (restored)

Media Recovery Log /orabak/arch/1_8337_802601679.dbf

Media Recovery Log /orabak/arch/1_8338_802601679.dbf

Media Recovery Log /orabak/arch/1_8339_802601679.dbf

Media Recovery Log /orabak/arch/1_8340_802601679.dbf

Recovery of Online Redo Log: Thread 1 Group 1 Seq 8341 Reading mem 0

Mem# 0: /orabak/logfile/redo01a.log

Recovery of Online Redo Log: Thread 1 Group 2 Seq 8342 Reading mem 0

Mem# 0: /orabak/logfile/redo02a.log

Recovery of Online Redo Log: Thread 1 Group 3 Seq 8343 Reading mem 0

Mem# 0: /orabak/logfile/redo03a.log

Recovery of Online Redo Log: Thread 1 Group 4 Seq 8344 Reading mem 0

Mem# 0: /orabak/logfile/redo04a.log

Recovery of Online Redo Log: Thread 1 Group 5 Seq 8345 Reading mem 0

Mem# 0: /orabak/logfile/redo05a.log

Completed Block Media Recovery

查询故障块信息:

SQL> select * from v$database_block_corruption;

no rows selected

查询故障表信息:

SQL> select count(1) from INSPUROA.EDOC_BASE_WORKFLOW;

COUNT(1)

----------

1393635

--------------------------------------推荐阅读 --------------------------------------

--------------------------------------分割线 --------------------------------------

0b1331709591d260c1c78e86d0c51c18.png



推荐阅读
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • Python语法上的区别及注意事项
    本文介绍了Python2x和Python3x在语法上的区别,包括print语句的变化、除法运算结果的不同、raw_input函数的替代、class写法的变化等。同时还介绍了Python脚本的解释程序的指定方法,以及在不同版本的Python中如何执行脚本。对于想要学习Python的人来说,本文提供了一些注意事项和技巧。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • MongoDB用户验证auth的权限设置及角色说明
    本文介绍了MongoDB用户验证auth的权限设置,包括readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase、cluster相关的权限以及root权限等角色的说明和使用方法。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
author-avatar
手机用户2502915433
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有