Oracle ORA-1115:I / O错误读取块

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

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

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

 

 

问题描述:

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

Oracle由于I / O错误无法读取开放数据文件, 就会出现ORA-0111

 ORA-01115文件%s(块#%S)中的IO错误读取块

 原因:该文件所在的设备可能是离线

 动作:恢复对设备的访问

ORA-01115错误之后通常还会出现:

一个ORA-01110错误

操作系统级的Oracle错误信息,如ORA-0737X

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

解决方案说明:

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

由于大多数ORA-01115 是由硬件问题造成的,解决方案首先是分解它们,然后如果有必要,在数据库级解决问题。

进行硬件检查是必不可少的。如果硬件问题不解决,试图在数据库级解决问题也没用。运行操作系统级的实用程序和诊断工具来检测磁盘,控制器和I/ O子系统是否正常运行。要特别注意ORA-01115所引用的的数据文件所在磁盘。您的系统管理员应该能够帮助您完成这一任务。

如果可行的话,这些诊断应与此处建议的步骤同时进行,或紧随其后尽快完成。

确定ORA-01115的确切原因也很重要。方法取决于你是否知道问题的原因。

I.原因尚不清楚时解决问题的步骤

————————————————– ———-

 

1.尝试评估问题的原因和程度。

      检查alert.log文件中的实例,扫描最后几天的条目寻找ORA-01115的其他实例。如果你找到实例,分析一下几种情况:

        A)他们是否在不同的磁盘上引用文件?

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

                请继续阅读下面的方案II.A

        B)他们是否在同一个磁盘引用不同的文件?

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

                    请继续阅读下面的方案II.B

        C)他们总是引用同一个数据文件?

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

               请继续阅读下面的场景II.C

如果该文件大于2GB,并且是在Solaris平台上运行7.1.4 或更低版本,请继续阅读下面的方案II.D

        D)如果上面方案都不可行,请移动到第2步。

2.如果数据文件是在系统表空间,或者数据库处于NOARCHIVELOG模式,关闭数据库。移动到第4步。

如果关闭数据库失败,中止关闭。

3.如果数据库在ARCHIVELOG模式下,你还是应该关闭数据库。如果数据库关闭掉,使数据文件离线。

ALTER DATABASE DATAFILE'<full_path_file_name>’OFFLINE;       

4.尝试把数据文件复制到另一个盘(如果可能,用不同的控制器管理)。

5.如果复制失败,即使重试,也必须认为数据文件在这过程中丢失了。接下来的操作取决于丢失文件所属的表空间。请参阅下面的PR项解决方法,根据不同类型的表空间中,有不同的操作说明。

重要信息:浏览下面的说明时,请记住,如果你从备份中恢复数据文件,你需要把它放在另一个盘里,最好使用不同的控制器,并在Oracle中将其重命名(见Note:115424.1 了解详细信息)。如果重新创建表空间,确保其在另一个磁盘上创建数据文件,最好使用不同的控制器。

数据文件丢失,请参考:Note:198640.1

6.如果数据库已关闭,进行安装。

7.对在Oracle中成功复制的数据文件进行重命名。

        ALTER DATABASE RENAME FILE ‘<old_full_path_file_name>’

        TO ‘<new_full_path_file_name>’;

8.如果数据库已安装,打开它。如果数据文件脱机,执行介质恢复,然后使其联机。

        RECOVER DATAFILE ‘<full_path_file_name>’;

        ALTER DATABASE DATAFILE ‘<full_path_file_name>’ ONLINE;

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

————————————————– ——

II.A控制器问题

————————-

这些通常是间歇性的。通常,对数据文件没有损害。如果不能能快速解决控制器问题并恢复访问数据文件,请按照下列步骤操作:

1.找出坏控制器下的数据文件。

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

2.如果任何坏控制器下的数据文件属于系统表空间,或者,如果数据库处于NOARCHIVELOG模式,关闭数据库 。继续执行步骤4

如果数据库关闭失败,中止关闭。

3.如果数据库处于ARCHIVELOG模式,坏控制器下没有任何数据文件在系统表空间,就应该关闭数据库。如果数据库无法关闭,就使所有坏控制器下的数据文件脱机。

ALTER DATABASE DATAFILE'<full_path_file_name>’OFFLINE;

4.尝试将所有坏控制器下的文件复制到其他控制器管理的磁盘。

5.如果数据库已关闭,对其进行安装。

6.对有所在Oracle成功复制的文件进行重命名

   ALTER DATABASE RENAME FILE

‘<old_full_path_file_name>’

        TO ‘<new_full_path_file_name>’;

  • 如果复制一个或多个数据文件失败,甚至重新复制后,也必须认为数据文件在这过程中丢失了。请参阅下面的PR项解决方法,根据丢失文件所属的表空间,有不同的操作说明。

重要信息:浏览下面的说明时,请记住,如果你从备份中恢复数据文件,你需要把它们放在不同控制器下的磁盘里,并在Oracle中将其重命名(见Note:115424.1 了解详细信息)。如果重建表空间,确保在其他控制器下创建数据文件。

数据文件丢失,请参考:Note:198640.1

8. 如果数据库已安装,将其打开.  如果数据文件脱机,执行介质恢复,然后使其联机:

        RECOVER DATAFILE ‘<full_path_file_name>’;

         

        ALTER DATABASE DATAFILE ‘<full_path_file_name>’ ONLINE;

II.B磁盘问题

——————-

如果你知道一个磁盘有坏块或运行不正常,如果有可能,应该集中将其中的数据文件移动到其他磁盘。如果没有,你必须考虑丢失的文件,根据丢失文件所属的表空间解决问题,同时努力修复磁盘。在这种情况下要遵循的步骤类似于上述方案II.A     

II.C数据块损坏

—————————

如果你确信该数据文件有坏块,如果它属于SYSTEM表空间或一个ROLLBACK或只读表空间,应该将其视为丢失。请参考下列说明,根据数据文件所属的表空间。

重要信息:浏览下面的说明时,请记住,如果你从备份中恢复数据文件,你需要把它们放在不同的磁盘里(最好是在其他控制器下),并在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;

其中<文件号><块号>是列在ORA-01115中。

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

II.D  SOLARIS上处理大的数据文件问题———————————————

如果您在Solaris平台上运行Oracle7.1.4或更低版本,就会得到ORA-07371ORA-01115,如果该文件大于2GB,极有可能会遇到 bug:233569

该错误在7.1.6版已得到解决,修补程序可用于7.1.3(bug:233569) 7.1.4 (bug:281904).

解释:

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

是什么导致ORA-01115 错误?

—————————-

Oracle 从文件请求向底层操作系统发出读取请求(除非原始设备正在使用)。读取请求指定数据文件和块编号进行访问。如果一个低级别的I / O错误阻止读取未能成功完成,Oracle发出信号ORA-01115

引起ORA-01115 的主要原因是:

1. 硬件问题

磁盘控制器问题:最常见,通常时断时续。

 

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

 

2.数据块损坏(在物理层面)

 

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

 

3. 处理大数据文件的问题 

Sun Solaris上运行Oracle7.1.4和更低版本,处理大于2GB的数据文件时,bug:233569导致ORA-01115ORA-07371

 

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

 

执行DML语句 

进口或出口时

 

启动或关闭时

参考:

===========

Bug:233569

Note: 184327.1 备份和恢复时ORA-1157错误的常见原因和解决办法

Note:115424.1  如何重命名以及移动数据文件和记录文件

搜索词:

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

ORA-1115 ORA-737

关注刘相兵的新浪微博

扫码加入微信Oracle小密圈,了解Oracle最新技术下载分享资源

Speak Your Mind

沪公网安备 31010802001379号

TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569