Email: service@parnassusdata.com 7 x 24 online support!
Oracle 在备份和恢复中发现的ORA-376 ORA-00376: 此时无法读取文件 错误的常见原因和解决方案
如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!
诗檀软件专业数据库修复团队
服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com
ORA-00376: 此时无法读取文件
oerr ora 376 "file %s cannot be read at this time" // *Cause: attempting to read from a file that is not readable. Most likely // the file is offline. // *Action: Check the state of the file. Bring it online
适用于:
Oracle Database – Enterprise Edition – 版本 9.0.1.0 到 11.2.0.3 [Release 9.0.1 to 11.2] 目的 夯实ORA-376错误的常见原因和解决方案。 故障排除步骤 SCOPE & APPLICATION Customers facing ORA-376 or analysts requiring information on known issues An ORA-376 occurs when Oracle knows a datafile, but Oracle cannot read it. Error: ORA 376 file %s cannot be read at this time Cause: attempting to read from a file that is not readable. Most likely the file is offline. Action: Check the state of the file. Bring it online 例如: ORA-00376: file 28 cannot be read at this time 在这里,test.dbf 是Oracle无法读取的数据文件名。
– 使用以下查询来找出表空间的状态: SQL> select tablespace_name,status from dba_tablespaces; – 使用以下查询找出数据文件的状态。 SQL> select file#,name,status,enabled from v$datafile; – 如果表空间脱机,你能通过以下使它联机: SQL> alter tablespace <tablespace_name> online; – 如果一个表空间中的数据文件脱机,你能通过以下使它联机: SQL> alter database datafile <full_path_datafile_name> online; 在一些情况下,数据文件的状态可能是’recover’。在这种情况下,必须进行媒体恢复使数据文件联机。否则,会遇到Else, ORA-1113: 例如: ORA-01113: file 28 needs media recovery 恢复可以使用以下命令: SQL> recover datafile ‘<full_path_of_datafile>’; SQL> alter database datafile <full_path_datafile_name> online; 在一些情况下,仅从重做日志恢复数据文件是可能的。
在这种情况下,你能drop数据文件并重建表空间。但这仅对于非系统(包括SYSAUX)和非回滚表空间 。 简要步骤为: – 作为SYSDBA登录到Oracle。 – 脱机drop 与表空间相关的其他数据文件 SQL> ALTER DATABASE DATAFILE ‘<datafile_name>’ OFFLINE DROP; – Drop表空间 SQL> DROP TABLESPACE <tablespace_name> INCLUDING CONTENTS; – 重建表空间 SQL> CREATE TABLESPACE <tablespace_name> DATAFILE ‘<datafile_name>’
在一些平台中,backup 软件可能会锁住数据文件,阻止Oracle读取数据文件。检查是否有备份软件运行并停止它们,从而释放锁,并尝试重启数据库。
如果未未正确设置ulimit,可能生成以下错误。尤其是在Oracle Parallel Server (OPS) 实例中,其中可能发生节点切换。 例如: ORA-00376: file 29 cannot be read at this time 问题是在新节点上,文件大小限制小于在旧节点上的限制且小于数据文件大小。 在这些情况下,解决方法是增加 Unix ulimit 文件大小,如下。 % limit filesize <number> 对于Bourne 或 Korn shell: $ ulimit -f <number>
在以下情况下也可能出现ORA-376错误:
在这个情况下,ORA-376的原因是: Oracle 自动执行恢复使所有数据库文件回到一致状态。为此,它需要重做日志和回滚段的信息。 如果在过程中需要一个包含回滚段extent的数据文件,但发现是脱机的,Oracle会发出错误。 如果回滚数据文件能再次可用,则
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE DATAFILE ‘<full_path_file_name>’ ONLINE;
SQL> RECOVER DATAFILE ‘<full_path_file_name>’;
SQL> ALTER DATABASE OPEN; 在这个情况下,解决方案取决于数据库最后是否被干净关闭。
1.回滚段数据文件被显示,但在启动数据库时,Oracle报错ORA-376。 数据库在NOARCHIVE log 模式且无冷备份。 解决方案: 一个选择是假装恢复来查看Oracle需要什么文件来恢复数据库。如果Oracle只需联机重做日志,则数据库能被恢复并启动,而无数据丢失。 在SQL*Plus 或SVRMGL: 运行以下查询,以确定联机重做日志的序列号: SQL> select v1.group#,member,sequence#,first_change# 记下序列号和成员列很重要。 然后,尝试恢复数据库以查看Oracle需要什么文件: SQL> recover database until cancel; 再记下序列号。忽略建议的日志文件名。该名称会以归档日志的形式出现,但它确实是尚未归档的联机重做日志的名称。 如果查询结果中最低的序列号与Oracle需要恢复数据库的序列号相同,则数据库能被恢复。 只要从成员列复制确切的路径和文件名作为 RECOVER DATABASE 命令所需的文件名。 对每个联机重做日志重复过程。 Oracle会在恢复的结尾返回信息”Recovery completed.” 。 此时你能发出: SQL> ALTER DATABASE OPEN; 如果ORA-1589 “must use RESETLOGS or NORESETLOGS option for database open” 发生: SQL> ALTER DATABASE OPEN NORESETLOGS; 注:打开可能要一段时间。
数据库启动失败,显示以下错误: ORA-01545: rollback segment ‘%s’ specified not available 在服务器被重启之前,archive log模式下的数据库被关闭中止。 这个问题的原因仍未确定,但以下解决方案可用: – 立即关闭数据库: SQL>shutdown immediate; – 编辑 init<SID>.ora 文件并在ROLLBACK_SEGMENTS参数中回滚段的列表中删除或注释 问题回滚段。 – 启动数据库。 SQL> STARTUP MOUNT; – 通过运行以下语句,找出哪些文件要恢复: SQL> select * from v$recover_file; 或者,你也能查询v$datafile。 – 通过以下以下语句,找出哪个回滚段要恢复; SQL> select usn,status from v$rollstat where status != ‘ONLINE’; – 恢复需要恢复的数据文件: SQL> recover datafile ‘<full path filename>’; – 通过运行以下语句,找出哪个数据文件脱机: SQL> select name,status – 使数据文件联机: SQL> alter database datafile ‘<full path filename>’ online; – 验证所有数据文件都联机: SQL> select file#, name, status from v$datafile; – 通过运行以下语句,找出哪个回滚段脱机: SQL> select usn,status from v$rollstat where status != ‘ONLINE’; – 使所有回滚段联机: SQL> alter rollback segment <RBS NAME> online; SQL> select usn,status from v$rollstat ; – 立即关闭数据库: SQL> shutdown immediate; – 编辑init<SID>ora 文件并添加或取消注释问题回滚段到ROLLBACK_SEGMENTS 参数中的回滚段列表。 – 启动数据库。 SQL> STARTUP MOUNT; |