Eu tenho lido posts aqui, no suporte da Oracle, e em qualquer outro lugar que eu possa encontrar nos últimos três dias e desisti desse problema...
Um banco de dados Oracle travado. O desligamento do banco de dados ficou por algumas horas e depois foi encerrado. Não reiniciaria. O servidor foi reiniciado. O Oracle foi reiniciado. Indo passo a passo: startup nomount funciona, alter database mount funciona, alter database open retorna ORA-03113. Isso é tudo no localhost - não pela rede. A máquina não tem nenhum tipo de firewall em execução.
Alguma idéia de como superar esse erro ORA-03113? Estive ao telefone com o suporte na Índia nas últimas 4,5 horas e ainda não encontrei ninguém útil.
Depois de horas de desorientação do suporte oficial da Oracle, mergulhei nisso por conta própria e consertei. Estou documentando aqui caso alguém tenha esse problema.
Para fazer isso, você deve ser o usuário oracle:
Etapa 1: você precisa examinar o log de alertas. Não está em /var/log como esperado. Você precisa executar um programa de leitura de log do Oracle:
Observe a base ADR. Essa não é a instalação. Você precisa ver as casas para poder se conectar à que você usa.
CCI é a casa. Defina isso.
Agora, você pode ver os logs de alerta. Seria muito bom se eles estivessem em /var/log para que você pudesse analisar facilmente os logs. Basta parar de querer e lidar com essa interface. Pelo menos você pode seguir (e espero que tenha um buffer de rolagem):
Role para trás até ver erros. Você quer o PRIMEIRO erro. Quaisquer erros após o primeiro erro provavelmente estão sendo causados pelo primeiro erro. No meu caso, o primeiro erro foi:
Isso é causado por transações. O Oracle não foi projetado para ser usado. Se você enviar muitos dados para ele, ele salvará os logs de transações. Esses vão para a área de arquivos de recuperação. Quando estiver cheio (50 GB cheios neste caso). Então, o Oracle simplesmente morre. Por design, se algo estiver errado, o Oracle responderá desligando.
Existem duas soluções, a correta e a rápida e suja. O rápido e sujo é aumentar db_recovery_file_dest_size. Primeiro, saia do adrci.
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 montei mesmo assim).
Agora, você pode aumentar seu db_recovery_file_dest_size atual, aumentado para 75G no meu caso:
Agora, você pode desligar e inicializar novamente e esse erro anterior deve ter desaparecido.
A correção adequada é se livrar dos arquivos de recuperação. Você faz isso usando RMAN, não SQLPLUS ou ADRCI.
Se você tiver
RMAN-06171: not connected to target database
, tente usarrman target /
em vez de apenasrman
Espere um bom tempo e seu archivelog (que estava ocupando todo aquele espaço) desaparecerá. Assim, você pode encerrar/inicializar seu banco de dados e voltar aos negócios.