Após horas de desvio de orientação do suporte oficial da Oracle, mergulhei nisso sozinho e o corrigi. Estou documentando aqui, caso outra pessoa tenha esse problema.
Para fazer isso, você deve ser o usuário oracle:
$ su - oracle
Etapa 1: você precisa olhar para o log de alerta. Não está em / var / log conforme o esperado. Você precisa executar um programa de leitura de 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>
Observe a base de ADR. Essa não é a instalação. Você precisa ver as casas para poder se conectar à que você usa.
adrci> show homes
ADR Homes:
diag/rdbms/cci/CCI
diag/tnslsnr/cci/listener
diag/tnslsnr/cci/start
diag/tnslsnr/cci/reload
O CCI é o lar. Defina isso.
adrci> set home diag/rdbms/cci/CCI
adrci>
Agora, você pode olhar para os logs de alerta. Seria muito bom se eles estivessem em / var / log para que você pudesse analisar facilmente os logs. Apenas pare de querer e lide com essa interface. Pelo menos você pode seguir (e espero que você tenha um buffer de rolagem):
adrci> show alert -tail 100
Role para trás até ver erros. Você deseja o primeiro erro. Qualquer erro após o primeiro erro provavelmente está sendo causado pelo primeiro erro. No meu caso, o primeiro erro foi:
ORA-19815: WARNING: db_recovery_file_dest_size of 53687091200 bytes is 100.00% used, and has 0 remaining bytes available.
Isso é causado por transações. O Oracle não foi projetado para ser usado. Se você inserir muitos dados nele, eles salvarão os logs de transações. Aqueles vão para a área do arquivo de recuperação. Quando estiver cheio (50 GB neste caso). Então, a Oracle simplesmente morre. Por padrão, se algo estiver errado, a Oracle responderá desligando.
Existem duas soluções, a correta e a rápida e suja. O mais rápido e sujo é aumentar o db_recovery_file_dest_size. Primeiro, saia do adrci.
adrci> exit
Agora, entre no sqlplus sem abrir o banco de dados, apenas montando-o (você pode fazer isso sem montar o banco de dados, mas eu o monto de qualquer maneira).
$ 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
Agora, você pode aumentar seu db_recovery_file_dest_size atual, aumentado para 75G no meu caso:
SQL> alter system set db_recovery_file_dest_size = 75G scope=both
Agora, você pode desligar e iniciar novamente e esse erro anterior deve ter desaparecido.
A solução correta é se livrar dos arquivos de recuperação. Você faz isso usando o RMAN, não o SQLPLUS ou o 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;
Se você tiver RMAN-06171: not connected to target database
, tente usar em rman target /
vez de apenasrman
Aguarde um longo tempo e o seu archivelog (que estava ocupando todo esse espaço) desaparecerá. Assim, você pode desligar / inicializar seu banco de dados e voltar aos negócios.
ALTER DATABASE OPEN
e os erros depois disso.