咨询微信: dbservice1234 7 x 24 在线支持!

Oracle ORA-1115: 从文件 读取块时出现 IO 错误 (块 # )

Oracle ORA-1115: 从文件 读取块时出现 IO 错误 (块 # )

 

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com

 

 

Oracle ORA-1115: 从文件  读取块时出现 IO 错误 (块 # )

 

oRA-01115
oerr ora 1115
01115, 00000, "IO error reading block from file %s (block # %s)"
// *Cause: Device on which the file resides is probably offline
// *Action: Restore access to the device

 

问题描述:

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

 

当由于I/O错误Oracle无法从一个打开的数据文件中读取时显示ORA-01115:

 

ORA-01115: “IO error reading block from file %s (block # %s)”

原因: 文件所在的设备可能脱机

行为: Restore access to the device 还原访问设备

 

ORA-01115 错误还通常伴随:

 

– 一个ORA-01110 错误

– 一个操作系统级别的Oracle错误信息,例如ORA-0737X

– 一个操作系统错误(例如,Unix中的错误# 5 )

 

 

解决方案描述:

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

 

因为大多数ORA-01115由硬件问题引起的,解决方法包括首先隔离这些硬件,然后需要的话在数据库级别处理问题。

 

执行硬件检查是必要的。如果硬件问题未修复,试图在数据库级别解决问题将是无用的。运行操作系统级的工具和检查磁盘,控制器和I/ O子系统的健康的诊断工具。

要特别注意数据ORA-01115中引用的数据文件所在磁盘。

你的系统管理员应该能够帮助您完成这一任务。

如果可行的话,这种诊断应与这里推荐步骤一并完成,或在之后尽快完成。

 

确定ORA-01115的确切原因并不总是不重要的。

根据你是否知道问题的原因,方法不同。

 

 

  1. 当问题未知时解决问题的步骤

————————————————————

 

  1. 尝试估计问题的原因和范围。

 

检查该实例的alert.log文件。扫描最近几天其他发生ORA-01115的条目。如果你找到它们,

 

  1. A) 它们是否在不同磁盘中引用文件?

如果是,则可能是控制器问题。

进入以下的情况II.A 。

  1. B) 它们是否在同一磁盘中引用不同文件?

如果是,则可能是该磁盘的问题。

进入以下的情况II.B。

  1. C) 它们是否常引用相同的数据文件?

如果是,可能是数据文件包含坏块。

进入以下的情况II.C 。如果文件大于2GB且你在Solaris平台上运行7.1.4或以下版本,参见以下的情况II.D。

  1. D) 如果以上都不适用,进入步骤2。

 

  1. 如果数据文件在SYSTEM 表空间中,锁数据库处于NOARCHIVELOG 模式,关闭数据库。进入步骤4。

 

如果shutdown immediate 失败,进行shutdown abort。

 

  1. 如果数据库处于ARCHIVELOG 模式,你仍应该关闭数据库。如果数据库无法被关闭,使数据文件脱机。

 

ALTER DATABASE DATAFILE ‘<full_path_file_name>’ OFFLINE;

 

  1. 尝试将数据文件复制到另一个磁盘(如果可行,由不同的控制器管理。)

 

  1. 如果复制失败,即使重试,此时必定认为数据文件丢失。接下来的操作取决于丢失文件所属的表空间。参阅以下解决方案参考PR条目,根据不同类型的表空间,获取如何继续操作的说明。

 

重要信息: 参阅下列参考时,记住如果你从备份中还原数据文件,你需要把它放在另一个磁盘,最好在不同的控制器,并在Oracle中将其重命名(见Note:115424.1了解详细信息)。不论你重建了什么表空间,确保它的数据文件在另一个磁盘上创建,最好在不同的控制器下。

 

丢失数据文件情况参考:Note:198640.1

 

  1. 如果数据库宕机,mount它。

 

  1. 重命名在Oracle中成功复制的数据文件。

 

ALTER DATABASE RENAME FILE ‘<old_full_path_file_name>’

TO ‘<new_full_path_file_name>’;

 

8.如果数据库被mount,打开它。如果你脱机数据文件,对它执行媒体恢复,然后令其联机。

 

RECOVER DATAFILE ‘<full_path_file_name>’;

 

ALTER DATABASE DATAFILE ‘<full_path_file_name>’ ONLINE;

 

 

  1. 当原因已知时解决问题的步骤

———————————————————

 

II.A  控制器问题

————————-

 

这些通常是间歇性的。通常不损伤数据文件。除非你能快速修复控制器和并还原数据文件的访问,请按照下列步骤操作:

 

  1. 找出哪些数据文件受坏控制器控制。

 

查询V $ DATAFILE获取数据库中所有数据文件的名称。你可能需要系统管理员的帮助来确定在磁盘的哪些数据文件受该控制器管理。

 

  1. 如果有任何在坏控制器下的数据文件属于SYSTEM

表空间,或者数据库处于NOARCHIVELOG模式,关闭数据库。进入步骤4。

 

如果shutdown immediate失败,进行shutdown abort。

 

  1. 如果数据库在ARCHIVELOG模式下且没有任何坏控制器下的数据文件属于SYSTEM表空间,你应该关闭数据库。如果数据库无法关闭,

脱机坏控制器下的所有数据文件。

 

ALTER DATABASE DATAFILE ‘<full_path_file_name>’ OFFLINE;

 

  1. 尝试将坏控制器下的所有数据文件复制到由不同控制器管理的磁盘。

 

  1. 如果数据库宕机,mount它。

 

  1. 重命名在Oracle中成功复制的所有文件。

 

ALTER DATABASE RENAME FILE ‘<old_full_path_file_name>’

TO ‘<new_full_path_file_name>’;

 

  1. 如果复制失败,即使重试,此时必定认为数据文件丢失。接下来的操作取决于丢失文件所属的表空间。参阅以下解决方案参考PR条目,根据不同类型的表空间,获取如何继续操作的说明。

 

重要信息: 参阅下列参考时,记住如果你从备份中还原数据文件,你需要把它放在另一个磁盘,最好在不同的控制器,并在Oracle中将其重命名(见Note:115424.1了解详细信息)。不论你重建了什么表空间,确保它的数据文件在另一个磁盘上创建,最好在不同的控制器下。

 

 

丢失数据文件情况参考:Note:198640.1

 

  1. 如果数据库被mount,打开它。如果任何被移动的数据文件脱机,对其应用媒体恢复,然后联机它:

 

RECOVER DATAFILE ‘<full_path_file_name>’;

 

ALTER DATABASE DATAFILE ‘<full_path_file_name>’ ONLINE;

 

 

II.B  磁盘问题

——————-

 

如果你知道一个磁盘有坏块或发生故障的事实,你应该致力于将其中的数据文件移动到不同的磁盘,如果可以的话。如果没有,你必须考虑文件丢失并根据它们所属的表空间处理问题,同时并行修复磁盘。在这种情况下要遵循的步骤类似于以上的情况II.A。

 

 

II.C  数据块损坏

—————————

 

如果你确认数据文件有坏块,如果它属于SYSTEM 或 ROLLBACK 或READ-ONLY 表空间,它应当被认为丢失。参见以下参考,取决于数据文件所属的表空间。

 

重要信息: 参阅下列参考时,记住如果你从备份中还原数据文件,你需要把它放在另一个磁盘,最好在不同的控制器,并在Oracle中将其重命名(见Note:115424.1了解详细信息)。不论你重建了什么表空间,确保它的数据文件在另一个磁盘上创建,最好在不同的控制器下。

 

丢失数据文件情况参考:Note:198640.1

 

如果数据文件属于一个用户或索引表空间,如果ORA-01115始终对同一对象(表,索引等)发生,你也可以将这一问题作为对象的重建问题。

下面的查询返回坏块所在的对象:

 

SELECT SEGMENT_NAME, SEGMENT_TYPE FROM DBA_EXTENTS

WHERE FILE_ID = <file_number> and <block_number> BETWEEN BLOCK_ID

AND BLOCK_ID + BLOCKS – 1;

 

其中 <file_number> 和 <block_number> 是 ORA-01115中列出的。

如果该查询不断指向一个表或索引,如果可以的话,你可以尝试在不同的表空间中重建它们。

 

 

II.D  在Solaris上极大的数据文件问题

———————————————

 

如果你在Solaris平台上运行Oracle 7.1.4或以下版本,并得到ORA-07371 和ORA-01115,且文件大于2GB,你很可能遇到了bug:233569.

该bug 在7.1.6中被修正且补丁可用于7.1.3 (bug:233569) 和 7.1.4 (bug:281904).

 

 

说明:

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

 

什么导致了ORA-01115错误?

—————————-

 

Oracle将从文件中读的请求递交底层操作系统(除非正在使用裸设备)。读取请求指定被访问的数据文件和块号。如果一个低级别的I / O错误阻止读成功完成,Oracle发出ORA-01115。

 

ORA-01115的主要原因有:

 

  1. 硬件问题

 

– 磁盘控制器问题:最常见的,且通常为间歇性的。

 

– 磁盘的问题:包括坏块,磁盘故障等。

 

  1. 数据块损坏(物理级别)

 

通常由以前的硬件问题引起。

 

  1. 处理非常大的数据文件的问题

 

在Oracle 7.1.4 及以上版本的Sun Solaris,在处理大于2GB的数据文件时,bug:233569 导致ORA-01115和ORA-07371。

 

ORA-01115可能发生的典型情况包括:

 

– 在执行DML 语句时

 

– 在导出或导入时

 

– 在启动或关闭时

 

 

参考:

===========

 

Bug:233569

 

Note: 184327.1  Common Causes and Solutions on ORA-1157 Error Found in

Backup & Recovery

 

Note:115424.1   HOW TO RENAME OR MOVE DATAFILES AND LOGFILES

 

 

搜索词:

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

 

ORA-1115 ORA-7371