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

 

 

问题描述

RMAN备份失败,报错如下:

 

channel ch1: starting piece 1 at 02-NOV-12

released channel: ch1

RMAN-00571:

RMAN-00569: ==== ERROR MESSAGE STACK FOLLOWS ============

RMAN-00571: =========

RMAN-03009: failure of backup command on ch1 channel at 11/02/2012
04:03:19

ORA-19566:
exceeded limit of 0 corrupt blocks for file
/oradata3/o219g2/income_gs_main_tst_tbs12.dbf

RMAN>

Recovery Manager complete.

 

一般坏块处理过程

1、首先确定是什么段、哪个段坏了,是索引还是表? 
执行以下语句看哪个段坏了
SQL>Select b.segment_name,b.segment_type
from dba_extents a, dba_segments b

where a.file_id=<F> and <B>
between a.block_id and a.block_id+a.blocks-1
and a.segment_name=b.segment_name and
a.owner=b.owner;
这里的 F 指的是 file#,B 指的是 block# 
2. 如果是物理坏块,需要更换磁盘,分几种情况:
        1)如果是文件系统且做了raid的,在messages里会显示具体哪个磁盘出问题了,更换磁盘,系统会自动恢复磁盘。
        2)如果是文件系统且没做raid,但有备份和归档,在messages里会显示具体哪个磁盘出问题了,更换磁盘,然后用数据文件备份和归档、在线日志恢复到最后的时间点。
        3)如果是文件系统且没做raid,没有备份,那么就要按下面的步骤3里的操作恢复好坏块后,再更换磁盘。
        4)如果是asm管理磁盘阵列,将亮红灯的磁盘拔掉,换个新的,系统会自动恢复磁盘。
3. 如果是逻辑坏块,就看是索引坏块还是表坏块。
    如果是索引坏块,那么直接删除索引,重建索引就好。
    如果是表坏块,分三种情况:
        1)有rman备份,利用rman备份恢复坏块。命令:blockrecover
datafile file# block block# from backupset;
        2)没有rman备份,只有exp备份,且备份可用,那么删除这个表,重新导入。
        3)如果没有备份,以表tab03为例,按下面的步骤处理:
            
A、 以 tab03的 owner 连入 oracle
            
B、 使用诊断事件 10231
                 
SQL> ALTER SYSTEM SET EVENTS '10231 trace name context forever,level 10';
            
C 、创建一个临时表 tab_tmp 的表中除坏块的数据都检索出来
                  SQL>CREATE
TABLE tab_tmp as select * from tab03; 
            
D、 更名原表,并把 tab_tmp 更名为 tab03
                 
SQL>alter table tab03 rename to tab03_bak;
                 
SQL>alter table tab_tmp to tab03; 
            
E、 在 tab03 上重新创建索引、约束、授权、
trigger 等对象 
            
F、 利用表之间的业务关系,把坏块中的数据补足。

 

 

本次处理过程

1.  使用dbv检查一下是否有数据坏块

 

[oracle@svr1-219
backup_script]$ dbv file=/oradata3/o219g2/income_gs_main_tst_tbs12.dbf

DBVERIFY:
Release 10.2.0.4.0 - Production on Fri Nov 2 11:52:58 2012

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

DBVERIFY
- Verification starting : FILE = /oradata3/o219g2/income_gs_main_tst_tbs12.dbf

Page
386924 is marked corrupt

Corrupt
block relative dba: 0x0d85e76c (file 54, block 386924)

Bad
check value found during dbv:

Data
in bad block:

 type: 6 format: 2 rdba: 0x0d85e76c

 last change scn: 0x02d1.805a7552 seq: 0x1 flg:
0x06

 spare1: 0x0 spare2: 0x0 spare3: 0x0

 consistency value in tail: 0x75520601

 check value in block header: 0x584e

 computed block checksum: 0xfbab

 

Page
404230 is marked corrupt

Corrupt
block relative dba: 0x0d862b06 (file 54, block 404230)

Bad
check value found during dbv:

Data
in bad block:

 type: 6 format: 2 rdba: 0x0d862b06

 last change scn: 0x02d1.805a7552 seq: 0x1 flg:
0x06

 spare1: 0x0 spare2: 0x0 spare3: 0x0

 consistency value in tail: 0x75520601

 check value in block header: 0x339

 computed block checksum: 0x7b41

 

 

 

DBVERIFY
- Verification complete

Total
Pages Examined         : 512000

Total
Pages Processed (Data) : 304782

Total
Pages Failing   (Data) : 0

Total
Pages Processed (Index): 115775

Total
Pages Failing   (Index): 0

Total
Pages Processed (Other): 9000

Total
Pages Processed (Seg)  : 0

Total
Pages Failing   (Seg)  : 0

Total
Pages Empty            : 82441

Total
Pages Marked Corrupt   : 2

Total
Pages Influx           : 0

Highest
block SCN            : 2163414262
(721.2163414262)

[oracle@svr1-219
backup_script]$

 

 

 

 

 

2.  查看是什么对象存在坏块

 

SQL> SELECT  segment_type, owner, segment_name

 
2            FROM dba_extents

 
3           WHERE file_id = 54

 
4             and 386924 between
block_id AND block_id + blocks - 1;

 

    
SEGMENT_TYPE       OWNER                          SEGMENT_NAME

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

       
INDEX             
INCOME_GS_MAIN_TST            
PK_T_RPT_SOA_RECON_DETAIL

SQL> SELECT  segment_type, owner, segment_name

 
2            FROM dba_extents

 
3           WHERE file_id = 54

 
4             and 404230 between
block_id AND block_id + blocks - 1;

 

     
SEGMENT_TYPE       OWNER                          SEGMENT_NAME

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

       
INDEX             
INCOME_GS_MAIN_TST            
PK_T_RPT_SOA_RECON_DETAIL

 

3.  处理坏块

上面显示是索引,这样处理起来比较简单,删除重建就可以了

 

 

 

 

 

时间: 2024-09-19 12:59:50

ORA-19566 exceeded limit of 0 corrupt blocks数据坏块处理的相关文章

Oracle corrupt block(坏块) 详解

转自:http://blog.csdn.net/tianlesoftware/article/details/5024966 一. 坏块说明 1.1 相关链接        在看坏块之前,先看几个相关的链接,在后面的说明中,会用到链接中的一些内容.   ORA-600 各个参数含义说明 http://blog.csdn.net/tianlesoftware/article/details/6645809   Oracle 不同故障的恢复方案 http://blog.csdn.net/tianle

体验ASP.NET 2.0 中的数据访问控件

asp.net|访问|控件|数据 简介 数据访问一直是开发 Web 应用程序的一个关键问题.几乎每个商业应用程序都需要数据驱动的 Web 页面.由于数据访问如此普遍,开发人员不断地为简单的数据库任务重新生成复杂的代码就显得毫无意义了.开发人员需要从格式各异的不同数据源中快速访问数据.幸运的是,ASP.NET 2.0 中新增的数据访问控件和 ADO.NET 2.0 解决了这一问题. 对于传统的 ASP 和 ASP.NET 1.1 应用程序而言,开发人员不得不创建代码访问和更新数据库,将检索到的数据

Visual Studio-Visual Studio 2010中的实体框架4.0和WCF数据服务4.0

在诸多新改进之中,Visual Studio 2010 引入了用户期待已久的实体框架 4.0 和 WCF 数据服务 4.0(以前称为 ADO.NET 数据服务),这两项功能综合起来,简化了您建立数据模型.使用数据和生成数据的方式. 实体框架 4.0 (EF 4.0) 致力于启用和简化两种主要方案:以域为中心的应用程序开发和传统以数据为中心的"基于数据的窗体设计".它引入了诸如模型优先开发等功能(该功能允许您创建模型并为您生成自定义 T-SQL):对持久化透明的支持:外键:延迟加载以及实

Excel表格中怎么显示0开头的数据?

  Excel表格中怎么显示0开头的数据?              步骤 1.首先新建一个Excel表格,在桌面单击鼠标右键选择,新建>>Microsoft Excel工作表,新建一个Excel表格 2.现在表格创建完成,双击鼠标左键,打开Excel表格 3.现在表格已经打开,由于是新建的所以内容是空的,就以001为例 4.在一个格里输入数字"001" 5.输入完成,将光标移到另一个格里,单击一下,现在可以看到刚才输入的001只剩下了1,00被隐藏了 6.下面就来解决这个

wince vs2005-我要用vs2005+wince 6.0给一个数据测量仪器做操作界面

问题描述 我要用vs2005+wince 6.0给一个数据测量仪器做操作界面 用C语言或者C++给仪器做界面,程序要可以在win ce 6.0上运行,用的是飞凌的板子.暂时不考虑底层数据和硬件接口,有没有大神给大概说一下该怎么做,之前从来没接触过嵌入式更没玩过win ce对vs2005也不熟,之前都是用VC 6.0和VS2010的,问一下VS2005能不能直接用MFC做界面在win ce 6.0上运行.求推荐资料,最好是易实际操作的. 解决方案 如果不用考虑底层数据和硬件接口,那么我想说的是跟你

Red Gate系列之四 SQL Data Compare 10.2.0.885 Edition 数据比较同步工具 完全破解+使用教程

原文:Red Gate系列之四 SQL Data Compare 10.2.0.885 Edition 数据比较同步工具 完全破解+使用教程 Red Gate系列之四 SQL Data Compare 10.2.0.885 Edition 数据比较同步工具 完全破解+使用教程 Red Gate系列文章: Red Gate系列之一 SQL Compare 10.2.0.1337 Edition 数据库比较工具 完全破解+使用教程 Red Gate系列之二 SQL Source Control 3.

VC++6.0多行数据的去重复处理

问题描述 VC++6.0多行数据的去重复处理 VC++6.0 读取文本文件中多行数据,然后去掉重复的行,提取数据到新的文件的方法是什么? 解决方案 读取到set/vector,然后去重复http://blog.csdn.net/zengraoli/article/details/39081707 解决方案二: 逐行读取文件中的数据,读出一行就和前面已经读取的数据比较,如果不重复,就保存,假设可以弄个vector 如果和前面的行都不重复,就push_back 读完以后遍历vector,将数据输出到

ios-iOS 蓝牙4.0传输数据时数据大于20个字节 如何搞

问题描述 iOS 蓝牙4.0传输数据时数据大于20个字节 如何搞 iOS 蓝牙4.0传输数据时数据大于20个字节 如何搞iOS 蓝牙4.0传输数据时数据大于20个字节 如何搞iOS 蓝牙4.0传输数据时数据大于20个字节 如何搞iOS 蓝牙4.0传输数据时数据大于20个字节 如何搞iOS 蓝牙4.0传输数据时数据大于20个字节 如何搞iOS 蓝牙4.0传输数据时数据大于20个字节 如何搞iOS 蓝牙4.0传输数据时数据大于20个字节 如何搞iOS 蓝牙4.0传输数据时数据大于20个字节 如何搞i

云安全3.0——给云计算数据中心用上特种兵装备!

[51CTO.com 独家特稿]北京时间7月22日,趋势科技正式宣布,推出基于全新云安全技术核心的云安全3.0解决方案.从早期使用云计算来提高防护效果,到保护云计算本身,趋势科技云安全3.0是为云环境下,企业至关重要的信息平台与数据资产两个核心要素提供安全防护:一方面用"云的防护盾"技术来保障"云"平台本身的高可用性,使得各种企业数据中心/应用系统或者云环境免受病毒.攻击.系统漏洞等威胁侵害:另一方面,通过"云中保险箱"技术来保护用户存放于云端的