oracle ora错误文档,Oracle 在备份和恢复中发现的ORA-376 ORA-00376: 此时无法读取文件 错误的常见原因和解决方案...

本文详细介绍了Oracle数据库在备份和恢复过程中遇到ORA-376错误的原因,如数据文件不可读、表空间或数据文件脱机、备份软件锁定、Unix ULIMIT设置不当等问题,并提供了相应的解决步骤,包括检查表空间状态、恢复数据文件、调整Unix ULIMIT设置等。
部署运行你感兴趣的模型镜像

适用于:

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

with ORA-376 errors.

ORA-376

=======

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

如错误本文所述,该错误的常见原因是由于Oracle无法读取特定数据文件。该错误通常会伴随ORA-1110,这会给出Oracle无法读的文件名。

例如:

ORA-00376: file 28 cannot be read at this time

ORA-01110: data file 28: ‘/h04/usupport/app/oracle/oradata/v817/test.dbf’

在这里,test.dbf 是Oracle无法读取的数据文件名。

可能原因及解决方案:

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

表空间或数据文件脱机。

B. 在OS级别数据文件不存在。

C. 被Backup Software锁住的数据文件。

D. 在UNIX上错误设置ULIMIT。

E. 含活跃事务的回滚段不可用。

F. 其他可能原因。

表空间或一个表空间中的数据文件脱机。

– 使用以下查询来找出表空间的状态:

SQL> select tablespace_name,status from dba_tablespaces;

– 使用以下查询找出数据文件的状态。

SQL> select file#,name,status,enabled from v$datafile;

– 如果表空间脱机,你能通过以下使它联机:

SQL> alter tablespace online;

– 如果一个表空间中的数据文件脱机,你能通过以下使它联机:

SQL> alter database datafile online;

在一些情况下,数据文件的状态可能是’recover’。在这种情况下,必须进行媒体恢复使数据文件联机。否则,会遇到Else, ORA-1113:

例如:

ORA-01113: file 28 needs media recovery

ORA-01110: data file 28: ‘/h04/app/oracle/oradata/v817/nar.dbf’

恢复可以使用以下命令:

SQL> recover datafile ‘’;

SQL> alter database datafile online;

在一些情况下,仅从重做日志恢复数据文件是可能的。

在OS级别数据文件不存在。

在这种情况下,你能drop数据文件并重建表空间。但这仅对于非系统(包括SYSAUX)和非回滚表空间 。

简要步骤为:

– 作为SYSDBA登录到Oracle。

– 脱机drop 与表空间相关的其他数据文件

SQL> ALTER DATABASE DATAFILE ‘’ OFFLINE DROP;

– Drop表空间

SQL> DROP TABLESPACE INCLUDING CONTENTS;

– 重建表空间

SQL> CREATE TABLESPACE DATAFILE ‘’

SIZE ;

由于Backup软件锁住文件。

在一些平台中,backup 软件可能会锁住数据文件,阻止Oracle读取数据文件。检查是否有备份软件运行并停止它们,从而释放锁,并尝试重启数据库。

在Unix上,如果未正确设置ulimit。

如果未未正确设置ulimit,可能生成以下错误。尤其是在Oracle Parallel Server (OPS) 实例中,其中可能发生节点切换。

例如:

ORA-00376: file 29 cannot be read at this time

ORA-01110: data file 29: ‘/db/GICORP_4/axix01.dbf’

Error: 27: File too large

问题是在新节点上,文件大小限制小于在旧节点上的限制且小于数据文件大小。

在这些情况下,解决方法是增加 Unix ulimit 文件大小,如下。

对于C shell:

—————-

% limit filesize

对于Bourne 或 Korn shell:

—————————–

$ ulimit -f

一旦ulimit 增加,在使数据文件联机后(如果它们脱机),数据库能被重启。

如果包含活跃事务的回滚段不可用。

在以下情况下也可能出现ORA-376错误:

由于数据库关闭中止或系统崩溃而故障。

2. 在回滚段表空间的一个数据文件丢失,由于磁盘损坏,控制器问题等。

3. 在删除rollback_segments 参数中的条目后,数据库后续被启动。

4. 回滚数据文件被脱机drop。

5. Database open 命令被发出。

在这个情况下,ORA-376的原因是:

Oracle 自动执行恢复使所有数据库文件回到一致状态。为此,它需要重做日志和回滚段的信息。

如果在过程中需要一个包含回滚段extent的数据文件,但发现是脱机的,Oracle会发出错误。

这个情况的解决方案是:

如果回滚数据文件能再次可用,则

重新将回滚段包括在”init.ora”文件中。2. Mount 数据库。

SQL> STARTUP MOUNT;

使数据文件重新联机。

SQL> ALTER DATABASE DATAFILE ‘’ ONLINE;

在数据文件执行媒体恢复。

SQL> RECOVER DATAFILE ‘’;

打开数据库。

SQL> ALTER DATABASE OPEN;

如果步骤4 失败且文件无法被恢复或回滚数据文件物理丢失,则参考Note:1013221.6。

在这个情况下,解决方案取决于数据库最后是否被干净关闭。

其他错误ORA-376被解决的情况有:

1.回滚段数据文件被显示,但在启动数据库时,Oracle报错ORA-376。

数据库在NOARCHIVE log 模式且无冷备份。

解决方案:

一个选择是假装恢复来查看Oracle需要什么文件来恢复数据库。如果Oracle只需联机重做日志,则数据库能被恢复并启动,而无数据丢失。

在SQL*Plus 或SVRMGL:

运行以下查询,以确定联机重做日志的序列号:

SQL> select v1.group#,member,sequence#,first_change#

from v$log v1, v$logfile v2

where v1.group# = v2.group#;

记下序列号和成员列很重要。

然后,尝试恢复数据库以查看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

ORA-01595: error freeing extent (%s) of rollback segment (%s))

ORA-00376: file %s cannot be read at this time

在服务器被重启之前,archive log模式下的数据库被关闭中止。

这个问题的原因仍未确定,但以下解决方案可用:

– 立即关闭数据库:

SQL>shutdown immediate;

– 编辑 init.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 ‘’;

– 通过运行以下语句,找出哪个数据文件脱机:

SQL> select name,status

from v$datafile

where status != ‘ONLINE’;

– 使数据文件联机:

SQL> alter database datafile ‘’ online;

– 验证所有数据文件都联机:

SQL> select file#, name, status from v$datafile;

– 通过运行以下语句,找出哪个回滚段脱机:

SQL> select usn,status from v$rollstat where status != ‘ONLINE’;

– 使所有回滚段联机:

SQL> alter rollback segment online;

– 验证所有回滚段现在联机:

SQL> select usn,status from v$rollstat ;

– 立即关闭数据库:

SQL> shutdown immediate;

– 编辑initora 文件并添加或取消注释问题回滚段到ROLLBACK_SEGMENTS 参数中的回滚段列表。

– 启动数据库。

SQL> STARTUP MOUNT;

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值