启动时出现“ ORA-03113:通信通道上的文件结束”


22

在过去三天里,我一直在这里阅读有关Oracle支持以及其他任何地方的文章,而我已经放弃了这个问题。

Oracle数据库挂起。关闭数据库几个小时,然后退出。它不会重新启动。服务器已重新启动。Oracle重新启动。逐步进行:启动nomount起作用,更改数据库挂载工作,更改数据库打开返回ORA-03113。全部都在本地主机上-不在网络上。该计算机没有运行任何类型的防火墙。

任何想法如何摆脱这个ORA-03113错误?在过去的4.5个小时中,我一直在电话上与印度提供支持,但我还没有发现任何有用的人。


1
ALTER DATABASE OPEN之后,从警报日志中发布摘录,并带有和错误。
Mindaugas Riauba

1
搜索(grep)最后一次成功启动与当前不成功启动之间的所有警报日志,并在所有这段时间内搜索ALTER SYSTEM SET。也许有人以非标准的方式更改了一些实例参数。
kubanczyk

Answers:


35

在经过Oracle官方支持数小时的误导之后,我独自研究并解决了这个问题。如果有人遇到此问题,我将在此处进行记录。

为此,您必须是oracle用户:

$ su - oracle

步骤1:您需要查看警报日志。不在预期的/ var / log中。您必须运行一个Oracle日志读取程序:

$ adrci
ADRCI: Release 11.2.0.1.0 - Production on Wed Sep 11 18:27:56 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
ADR base = "/u01/app/oracle"
adrci>

注意ADR基础。那不是安装。您需要查看房屋,然后才能连接到所用的房屋。

adrci> show homes
ADR Homes:
diag/rdbms/cci/CCI
diag/tnslsnr/cci/listener
diag/tnslsnr/cci/start
diag/tnslsnr/cci/reload

CCI是家。设置那个。

adrci> set home diag/rdbms/cci/CCI
adrci>

现在,您可以查看警报日志。如果它们位于/ var / log中,那将非常好,这样您就可以轻松解析日志。只需停止使用该界面即可。至少您可以拖尾(我希望您有一个回滚缓冲区):

adrci> show alert -tail 100

向后滚动,直到看到错误。您想要第一个错误。第一个错误之后的任何错误很可能是由第一个错误引起的。就我而言,第一个错误是:

ORA-19815: WARNING: db_recovery_file_dest_size of 53687091200 bytes is 100.00% used, and has 0 remaining bytes available.

这是由交易引起的。不设计使用Oracle。如果确实将大量数据推入其中,则会保存事务日志。那些进入恢复文件区域。一旦充满(在这种情况下为50GB)。然后,Oracle死了。按照设计,如果发生任何问题,Oracle将通过关闭进行响应。

有两种解决方案,正确的一种和快速而肮脏的一种。快速而又肮脏的是增加db_recovery_file_dest_size。首先,退出adrci。

adrci> exit

现在,进入sqlplus而不需要打开数据库,只需安装它即可(您可能无需安装数据库就可以做到这一点,但是无论如何我都可以安装它)。

$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Wed Sep 11 18:40:25 2013
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> connect / as sysdba
Connected.
SQL> startup mount

现在,您可以将当前的db_recovery_file_dest_size增加到我的情况下增加到75G:

SQL> alter system set db_recovery_file_dest_size = 75G scope=both

现在,您可以再次关闭并启动,并且先前的错误应该消失了。

正确的解决方法是摆脱恢复文件。您可以使用RMAN而不是SQLPLUS或ADRCI来完成。

$ rman
Recovery Manager: Release 11.2.0.1.0 - Production on Wed Sep 11 18:45:11 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
RMAN> backup archivelog all delete input;

如果您有RMAN-06171: not connected to target database,则尝试使用rman target /而不是rman

等待很长时间,您的存档日志(所有空间都用完了)将消失。因此,您可以关闭/启动数据库并恢复正常运行。


我在oracle linux服务器中找不到命令adrci。如何安装?谢谢。

3
谢谢!有用。但是对rman的正确命令是:export ORACLE_SID=my_oracle//rman target /

要加2美分-您可以在此处查看此文章,该文章中的命令可以与一起使用RMAN,以清除存档区域以及其他一些内容。小心,因为如果数据库由于某种原因(最后一位)打开,它也会清除还原点:the1403.github.io/RMAN-cleanup-logs
g00dy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.