oracle坏块问题的处理
一、背景
今天有用户反映数据库连不上了,查看日志发现有数据库坏块。
查看数据库日志,有如下报错:
ORA-01578: ORACLE , 93642)
ORA-01110: 1: '/oracle/app/orcldata/orcl/system01.dbf'
ORACLE Instance orcl (pid = 13) - Error 1578 encountered while recovering transaction (89, 2) on object 226.
Errors in file /oracle/app/diag/rdbms/orcl/orcl/trace/orcl_smon_3345.trc:
二、查询坏块方法
(1)通过trc文件查看
查看上面err的具体trc:

如上,坏块信息很明确。
(2)简单语句查询
select * from v$database_block_corruption;
(3)DBV查看坏块
dbv file=system01.dbf blocksize=8192
有一个坏块

三、坏块的处理
根据文件号和块号查出损坏的是对象,表还是LOB segment
select tablespace_name,segment_type,owner,segment_name from dba_extents where file_id=1 and 93642 between block_id AND block_id + blocks - 1;
其中1是文件号,93642是block号

(1)索引损坏
#如果被损坏的块是索引,通常可以通过索引重建来解决 alter index indexname rebuild;
(1)表损坏
segment_type为table
#可以使用10231事件忽略坏块,然后使用CTAS方式重建表最后rename table,别忘记rebuild index alter session SET EVENTS '10231 trace name context forever,level 10'; create table tab_new as select * from tab; rename tab to tab_bak; rename tab_new to new; alter index indexname rebuild; alter session SET EVENTS '10231 trace name context off';
注:根据表名查看索引名
SELECT * FROM ALL_INDEXES WHERE TABLE_NAME='IDL_CHAR$';
使用rman工具恢复:
---使用rman工具的blockrecover blockrecover datafile xx block xx;--修复单个坏块
blockrecover corruption list;--修复全部坏块
(3)LOB segment损坏
如果损坏的是LOB segment
#先找出segment信息
select owner, segment_name, segment_type from dba_extents where file_id = 38 and 295563 between block_id and block_id + blocks - 1; #输出如下
owner=HGHIS
segment_name=SYS_LOB0000119493C00006$$
segment_type=LOBSEGMENT #找到表明和LOB字段
select table_name, column_name from dba_lobs where segment_name = 'SYS_LOB0000119493C00006$$' and owner = 'HGHIS'; #输出如下
table_name = EMR_CASE
column_name = WORD #找到坏块的bad rowid,使用以下plsql脚本
create table bad_rows (row_id ROWID,oracle_error_code number);
oracle坏块问题的处理的更多相关文章
- Oracle - 坏块修复(一)
一.概述 本文将介绍如何模拟坏块,以及出现坏块该如何修复.实验分为以下几个步骤. 1. 表出现坏块 2. 索引出现坏块 二.环境准备 本实验都是在oracle 11G归档模式下进行. 1. 准备相关表 ...
- ORACLE 坏块的模拟和查看
坏块的模拟和查看使用bbed工具修改数据文件的块,然后使用dbv和rman工具查看坏块. 1.创建数据:根据dbv查看没有坏块Total Pages Marked Corrupt : 0create ...
- oracle坏块处理记录
1. 执行sql:select count(distinct id) from bw_fpzxx ,报错如下: ORA-01578: ORACLE 数据块损坏 (文件号 16, 块号 195428)O ...
- [Oracle]坏块处理:确认坏块的对象
如果已经知道 FILE#,BLOCK#,则 可以通过如下查询来看: SQL> SELECT SEGMENT_TYPE,OWNER||'.'||SEGMENT_NAME FROM DBA_EXTE ...
- Oracle数据库坏块的恢复
模拟数据块坏块: 对于发生数据块不一致的数据块,如果当前数据库有备份且处于归档模式,那么就可以利用rman工具数据块恢复功能 对数据块进行恢复,这种方法最简单有效,而且可以在数据文件在线时进行,不会发 ...
- 使用BBED模拟Oracle数据库坏块
BBED(OracleBlockBrowerandEDitor Tool),用来直接查看和修改数据文件数据的一个工具,是Oracle一款内部工具,可以直接修改Oracle数据文件块的内容,在一些极端恢 ...
- 对Oracle数据库坏块的理解
1.物理坏块和逻辑坏块 在数据库中有一个概念叫做数据块的一致性,Oracle的数据块的一致性包括了两个层次:物理一致性和逻辑一致性,如果一个数据块在这两个层次上存在不一致性,那就对应到了我们今天要要说 ...
- Oracle corrupt block(坏块) 详解
转自:http://blog.csdn.net/tianlesoftware/article/details/5024966 一. 坏块说明 1.1 相关链接 在看坏块之前,先看几个相关的链接,在后面 ...
- ORACLE模拟一个数据文件坏块并使用RMAN备份来恢复
1.创建一个实验用的表空间并在此表空间上创建表 create tablespace blocktest datafile '/u01/oradata/bys1/blocktest.dbf' size ...
随机推荐
- noi.openjudge 1.13.15
http://noi.openjudge.cn/ch0113/15/ 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个长度为N的整数序列 (不多于128个整数),每个整数的范 ...
- HTML学习笔记Day10
一.Form表单补充(收集用户信息) 1.button按钮(不进行提交) 1)语法1:<input type="button" value="按钮内容" ...
- (DFS)P1605 迷宫 洛谷
题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...
- linux 网络连接数查看方法
1.查看系统tcp连接中各个状态的连接数. netstat -an|awk '/^tcp/ {++s[$NF]} END {for(a in s ) print a,s[a]}' 2.查看和本机23端 ...
- NSGA-II入门C1
NSGA-II入门C1 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献1 参考文献2 白话多目标 多目标中的目标是个瓦特? 多目标即是优化问题中的优化目标在3个及以上,一般这些优化的 ...
- C#设计模式(6)——原型模式
1.原型模式介绍 在软件系统开发中,有时候会遇到这样的情况:我们需要用到多个相同实例,最简单直接的方法是通过多次调用new方法来创建相同的实例.如下: Person person=}; Person ...
- MySQL数据类型1
1.float.double.decimal类型用法详解 三者的区别介绍 float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位) double:双精度实型, ...
- 163邮箱SMTP设置
如题要设置系统邮件自动发送 首先注册的网易邮箱要去开通SMTP服务,然后就是端口的设置 授权码 端口
- bzoj千题计划308:bzoj4589: Hard Nim(倍增FWT+生成函数)
https://www.lydsy.com/JudgeOnline/problem.php?id=4589 n*m*m 做法 dp[i][j] 前i堆石子,异或和为j的方案数 第一重循环可以矩阵快速幂 ...
- row_number()over()使用
语法: ROW_NUMBER ( ) OVER ( [ PARTITION BY value_expression , ... [ n ] ] order_by_clause ) 通过语法可以看出 o ...