如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!
诗檀软件专业数据库修复团队
服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected]
问题描述:
====================
当Oracle由于I / O错误无法读取开放数据文件, 就会出现ORA-0111:
ORA-01115:“文件%s(块#%S)中的IO错误读取块”
原因:该文件所在的设备可能是离线
动作:恢复对设备的访问
ORA-01115错误之后通常还会出现:
– 一个ORA-01110错误
– 操作系统级的Oracle错误信息,如ORA-0737X
– 一个操作系统错误(例如,错误#5在UNIX中)
解决方案说明:
=====================
由于大多数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-07371与ORA-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-01115和ORA-07371。
ORA-01115可能发生的典型情况包括:
– 执行DML语句
– 进口或出口时
– 启动或关闭时
参考:
===========
Bug:233569
Note: 184327.1 备份和恢复时ORA-1157错误的常见原因和解决办法
Note:115424.1 如何重命名以及移动数据文件和记录文件
搜索词:
=============
ORA-1115 ORA-737
Leave a Reply