在经过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
等待很长时间,您的存档日志(所有空间都用完了)将消失。因此,您可以关闭/启动数据库并恢复正常运行。
ALTER DATABASE OPEN
之后,从警报日志中发布摘录,并带有和错误。