Sintoma: Aceita apenas conexões internas e rejeita externas, o banco está aberto, mas não aceita transações em razão de um redo log travado.
Passo 1 - Baixe a database.
SQL> SHUTDOWN IMMEDIATE;
ORACLE instance shut down.
Passo 2 - Inicie em modo de manutenção.
SQL> STARTUP MOUNT
ORACLE instance started.
Total System Global Area 1191182336 bytes
Fixed Size 2020320 bytes
Variable Size 318770208 bytes
Database Buffers 855638016 bytes
Redo Buffers 14753792 bytes
Database mounted.
Passo 3 (não execute) - Ocorre erro ao tentar "abrir" a database, mencionando que não
pode gravar o arquivo de redo.
SQL> ALTER DATABASE OPEN;
ALTER DATABASE OPEN
*
ERROR at line 1:
ORA-16038: log 1 sequence# 53 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 1 thread 1:
'/u01/app/oracle/product/10.2.0/oradata/orcl/redo01.log'
Passo 4 - Validando o destino e se está em modo archive, veja que o espaço da Flash
Recovery Area está lotado, causa do problema.
SQL > SELECT * FROM V$RECOVERY_FILE_DEST;
NAME
--------------------------------------------------------------------------------
SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
----------- ---------- ----------------- ---------------
/u01/app/oracle/product/10.2.0/flash_recovery_area/ 2147483648 2141670912 0 50
Passo 5 - Mova os archives antigo da Flash Recovery Area para outro local. E inicie o
RMAN.
$ rman target sys/senha@SID
Passo 6 - No RMAN valide os archives e apague os antigos.
RMAN > CROSSCHECK ARCHIVELOG ALL;
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=151 devtype=DISK
RMAN > DELETE EXPIRED ARCHIVELOG ALL;
Passo 7 - Saia do RMAN e conectado na instância localmente altere o tamanho da Flash
Recovery Area.
RMAN > exit;
SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=4294967296 SCOPE=BOTH;
Passo 8 - Suba a database, alterando o estado para 'OPEN'.
SQL> ALTER DATABASE OPEN;
Database altered..
Olá Gabriel!
ResponderExcluirHoje me dei de cara com o ORA-00257.
Segui o seu artigo e deu certo, consegui subir o banco, ainda bem que era um banco de teste.
Pergunta, movi alguns archives, executei o passo 6 e 7. Agora com o flash recovery area maior, posso voltar os archives para localização original? Quais comando no RMAN para informar que os archives movidos voltaram?
Att,
Sakamoto
MyTraceLog - Registro de um DBA
http://mytracelog.blogspot.com
Olha, eu sugiro realizar um novo backup que não requisite os archives antigos.
ResponderExcluirP: Posso voltar os archives para localização original?
R: Boa pergunta, se não puder por alguma razão desconhecida fazer um novo backup full, tente o alterar o status dos archives da seguinte forma:
RMAN> CROSSCHECK ARCHIVELOG ALL;
RMAN> CHANGE ARCHIVELOG LIKE '' AVAILABLE;
Eu nunca testei isso, homologue antes.
P: Quais comando no RMAN para informar que os archives movidos voltaram?
R: Respondido acima. Mas novamente menciono que o ideal é fazer um novo backup já que conseguiu subir o banco.
Olá Gabriel!
ResponderExcluirExcelente seu post, e aproveit para perguntar se em um ambiente de testes(banco de desenvolvimento) tem esta necessidade?
Ou é uma questão meramente oragnizacional?
Abraços,
Ary Gasineo
Se for em ambiente de teste, basta liberar espaço da flash_recovery_area.
ResponderExcluirOlá Gabriel, funcionou perfeitamente aqui, muito obrigado!
ResponderExcluirJefferson Moreira
Funcionou pra mim também! Muito obrigado pelas dicas. No meu caso, creio que o problema foi em função da quantidade muito grande de archivelogs criados (5.1 GB de 5.2 GB disponíveis) durante um IMPDP de um dump de 15 GB. Aumentei o valor do meu DB_RECOVERY_FILE_DEST_SIZE para 15 GB para ver se resolve.
ResponderExcluirAlguém já passou por isso? É minha primeira vez utilizando EXPDP/IMPDP para uma base com archivelog habilitado.
Existe uma maneira de não gerar os archivelogs durante o IMPDP? Talvez algum parâmetro para EXPDP?
Obrigado!
Para impdp não, pois são realizados DMLs, o que obrigatoriamente gerarão archives. Minha sugestão é passar a database para noarchivelog(requer restart) e depois da importação reativar. Caso a importação seja algo comum e diário então minha sugestão é aumentar o limite de tamanho do destino de archives e após a importação realizar uma limpeza dos archives com o RMAN, mas é fato que removendo archives tu perdes o point time recovery. Espero ter ajudado, abraços!
ResponderExcluirGabriel venho pedir sua ajuda, li seu post executei os passos mas esbarrei com os erros: ORA-554 no passo 5.
ResponderExcluirColoque o erro aqui Mister Anonymous. abraços.
ExcluirOpa. Deu certinho. Excelente post.
ResponderExcluirNo meu caso deu o erro quando estava importando uma base teste.
Agora posso fazer o impdp novamente.
Muito obrigado.
Vanderson
Valeu Vanderson!
ExcluirOlá Gabriel, tudo bem?
ResponderExcluirPost Excelente, acabei de ter o mesmo problema em meu ORACLE, segui os passos de seu post e deu tudo certo, muito obrigado!
Abraços,
Thyago
Opa Thyago! Tudo 110% e contigo? Excelente, sempre as ordens. Abraços.
ExcluirExcelente postagem, ajudou muito, obrigado!
ResponderExcluirMuito bom. Ajudou demais.
ResponderExcluirMuito obrigado! Ajudou muito!
ResponderExcluirShow... me salvou!
ResponderExcluir