oracle 01578 数据块损坏 怎么忽略

问题描述

oracle 01578 数据块损坏 怎么忽略

windows 2008 oracle 11 非归档模式

数据库启动时没有错误提示。写入数据时会提示01578,这个数据文件在一个大的空间里(有很多数据文件)。我把它offline drop 后,查询它的状态是available.再写入数据时会提示01110错误,用recover 不成功,因为没有归档的日志。

请问:我能否在offline前把这个坏块的错误忽略掉?或者我在offline后不让数据库再去访问这个数据文件呢?

解决方案

在 exp 时出现以下错误:

EXP-00056: 遇到 ORACLE 错误 1578

ORA-01578: ORACLE 数据块损坏(文件号4,块号65)

ORA-01110: 数据文件 4: ’E:ORACLEORADATAUSERS.DBF’

措施:

-- 1. 检查损坏的对象

SELECT tablespace_name, segment_type, owner, segment_name

FROM dba_extents

WHERE file_id = 4

and 65 between block_id AND block_id + blocks - 1;

www.2cto.com

-- 2. 设置内部事件,使exp跳过损坏的block

ALTER SYSTEM SET EVENTS=’10231 trace name context forever,level 10’ ;

-- 3. 导出表

exp user1/passwd1 file=t1.dmp tables=t1

-- 4. 删除有坏块的表

drop table t1 purge;

-- 5. 导入表

imp user1/passwd1 file=t1.dmp tables=t1

-- 6. 清除跟踪事件

ALTER SYSTEM SET EVENTS=’10231 trace name context off’

解决方案二:

数据块损坏的处理办法搜下,帮你顶

解决方案三:

数据块损坏后修复 ora-01578
ORA-01578(数据块损坏) 转

时间: 2024-12-24 05:27:23

oracle 01578 数据块损坏 怎么忽略的相关文章

Oracle数据块损坏恢复总结

Oracle数据块损坏恢复总结 在恢复前使用DBV命令检查数据文件是否存在坏块 dbv file=d:\oracle\oradata\mydb\RONLY.DBF blocksize=8192 查看数据坏块所在数据文件号及块号可以对表进行一次全表扫描,如: select count(*) from tablename; 1.    没有备份的情况下: 1.1.使用exp/imp恢复   在这种情况下肯定会造成数据的丢失,在这种情况下应采取将数据导出然后重建表再进行导入的方法,来尽量恢复损坏数据块

Oracle中模拟及修复数据块损坏

在Oracle数据库中,我们可能遭遇很多数据损坏的情况,在面对这些情况时如何进行数据恢复是非常重要的.在很多情况下,恢复是极其复杂的,而且需要谨慎,轻率的操作和尝试可能导致数据库的永久损坏. 所以我建议在恢复尝试前应当先进行数据备份. 对于重要的数据库,如果不能确定恢复步骤和操作后果,建议最好先向专业人士进行咨询,以避免不必要的数据损失. 本文通过试验模拟和解决数据块损坏问题,是对一类数据库损坏的恢复探讨 1.插入数据 E:\Oracle\ora92\bin>sqlplus "/ as s

Oracle某个数据文件损坏,如何打开数据库

oracle|数据|数据库 某个数据文件损坏,如何打开数据库? 系统环境: 1.操作系统:Windows 2000 Server,机器内存128M2.数据库: Oracle 8i R2 (8.1.6) for NT 企业版3.安装路径:C:\ORACLE 错误现象: 因误操作,数据库中某一数据文件被误删,控制面板的Oracle相关服务显示已启动,但用SQL*Plus无法连接,显示以下错误ORA-01033: ORACLE initialization or shutdown in progres

Oracle数据库数据文件损坏如何恢复

数据文件有时候因为某种原因会导致损坏而导致无法启动数据库,那如何恢复呢? 下面是一次模拟实验,如下 1. 首先创建一个表空间TEST,在创建一个表test在表空间test上 SQL> create tablespace test datafile '/u01/app/oracle/oradata/lhz/test01.dbf' size 10M; SQL>  create table test as  select * from dba_objects; Table created SQL&g

Oracle数据块恢复(dbv、BMR)

Oracle数据块恢复(dbv.BMR) 物理坏块和逻辑坏块 Oracle数据文件的坏块可以分为物理坏块和逻辑坏块.物理坏块指的是块格式本身已经损坏,块内的数据没有任何意义.而逻辑坏块,指的是块内的数据在逻辑上存在问题,比如说索引块的索引值没有按从小到大排列导致的逻辑坏块.物理坏块一般是由于内存问题.OS问题.I/O子系统问题或硬件引起的,逻辑坏块一般是有Oracle bug等原因引起的. 各种各样的块损坏通常是通过Oracle的ORA-1578错误报告出来的,详细的损坏描述会在告警日志中打印出

Oracle 9i数据坏块的处理实例

笔者在一台生产用测试库上SELECT一个表时出现ORA-01578,一个块损坏,以前学习过块损坏怎么处理,到还真没遇到过,今天总算让我遇到了,还是一台生产用测试库,就不用很紧张了. 数据库版本是9.2.0.4,Oracle9i的RMAN有一个blockrecover命令,可以在线修复坏块,以下就是使用RMAN修复坏块的过程. SQL> conn owi/owi Connected. SQL> select * from dpa_history; select * from dpa_histor

【体系结构】Oracle数据块详解

Oracle数据块详解 操作系统块是操作系统读写的最小操作单元,也是操作系统文件的属性之一.当创建一个Oracle数据库时,选择一个基于操作系统块的整数倍大小作为Oracle数据库块的大小.Oracle数据库读写操作则是以Oracle块为最小单位,而非操作系统块. 数据库块也称逻辑块或Oracle块,它对应磁盘上一个或多个物理块,它的大小由初始化参数DB_BLOCK_SIZE决定,可以定义数据块为2K.4K.8K.16K.32K甚至更大,默认Oracle块大小是8K.若一旦设置了Oracle数据

Oracle数据块原理深入剖析

数据块(Oracle Data Blocks),本文简称为"块",是Oracle最小的存储单位,Oracle数据存放在"块"中.一个块占用一定的磁盘空间.特别注意的是,这里的"块 "是Oracle的"数据块",不是操作系统的"块". Oracle每次请 求数据的时候,都是以块为单位.也就是说,Oracle每次请求的数据是块的整数倍.如果Oracle请求的数据量不到一块,Oracle也会读取整个块.所以说,&

简介ORACLE数据块转储及RDBA的转换

很多时候我们在进行进一步研究时需要转储(dump)Oracle的数据块,以研究其内容,Oracle提供了很好的方式,我们通过以下例子简单说明一下: [oracle@jumper udump]$ sqlplus "/ as sysdba" SQL*Plus: Release 9.2.0.3.0 - Production on Tue Aug 31 17:01:27 2004 Copyright (c) 1982, 2002, Oracle Corporation.  All rights