Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

ORA-00257:erro do arquivador. Conecte apenas interno, até que seja liberado.


ORA-00257 é um dos erros mais comuns na vida do Oracle DBA. Ele/Ela muitas vezes tem que lidar com isso. O Oracle Database quase foi congelado por causa disso e todas as transações foram interrompidas. Vamos ver como lidar com o erro ORA-00257

Mensagem de erro

ORA-00257:erro do arquivador. Conecte apenas interno, até que seja liberado.

De acordo com o erro oerr ORA-00257 significa

ORA-00257:erro do arquivador. Conecte apenas interno, até que seja liberado. Explicação:O processo do arquivador recebeu um erro ao tentar arquivar um log de redo. Se o problema não for resolvido logo, o banco de dados deixará de executar as transações. A causa mais provável dessa mensagem é que o dispositivo de destino está sem espaço para armazenar o arquivo de log de redo.

Ação:Verifique o arquivo de rastreio do arquivador para obter uma descrição detalhada do problema. Além disso, verifique se o dispositivo especificado no parâmetro de inicialização archive_log_dest está configurado corretamente para arquivamento.

Onde você vê esta mensagem de erro

1) Você verá abaixo o tipo de mensagem de erro referente ao log de alerta

Seguem algumas se as informações do log de alertas:
Errors in file \u01\oracle\product\11.2.0\diag\rdbms\TEST\test\trace\test_arc1_1010.trc:
ORA-19815: WARNING: db_recovery_file_dest_size of 21474836480 bytes is 100.00% used, and has 0 remaining bytes available.Wed jan 21 02:44:02 2016
************************************************************************
You have following choices to free up space from flash recovery area:
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
then consider changing RMAN ARCHIVELOG DELETION POLICY.
2. Back up files to tertiary device such as tape using RMAN
BACKUP RECOVERY AREA command.
3. Add disk space and increase db_recovery_file_dest_size parameter to
reflect the new space.
4. Delete unnecessary files using RMAN DELETE command. If an operating
system command was used to delete files, then use RMAN CROSSCHECK and
DELETE EXPIRED commands.
************************************************************************
ARC1: Failed to archive thread 1 sequence 1459 (1809)
ARCH: Archival stopped, error occurred. Will continue retrying
Wed jan 21 02:44:02 2016
Errors in file \u01\oracle\product\11.2.0\diag\rdbms\TEST\test\trace\test_arc1_1010.trc
ORA-16038: log 3 sequence# 1459 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 3 thread 1: '\u01\oracle\oradata\TEST\redo03.LOG'

2) Se você tentar fazer login com um usuário não sysdba, você verá a mensagem de erro abaixo
sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 - Production on
Copyright (c) 1982, 2008, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> conn apps/apps
ERROR:
ORA-00257: archiver error. Connect internal only, until freed.
Warning: You are no longer connected to ORACLE.
SQL

3) Se você tentar fazer login com o usuário sysdba e verificar o evento de espera para a sessão, você encontrará o evento de troca de arquivo de log de espera da sessão
Por que ocorre o erro ORA-00257

Este erro ocorre porque o local de destino do log de arquivo está cheio ou não está disponível. O processo em segundo plano do Oracle ARCH é responsável por obter os logs de redo do sistema de arquivos de log de redo on-line e gravá-los no arquivo simples não é capaz de gravar no sistema de arquivos

Como resolver erros ORA-00257

1) Em primeiro lugar, devemos encontrar o destino do log de arquivo para o banco de dados
sqlplus / as sysdba
SQL> archive log list;

você também pode encontrar destinos de arquivo por USE_DB_RECOVERY_FILE_DEST
SQL> show parameter db_recovery_file_dest;

Obtenha também o tamanho do db_recovery_file_dest
show parameter db_recovery_file_dest_size;

2) O próximo passo na resolução do ORA-00257 é descobrir qual valor está sendo usado para db_recovery_file_dest_size, use:
SQL> SELECT * FROM V$RECOVERY_FILE_DEST;

Você pode achar que o SPACE_USED é o mesmo que SPACE_LIMIT, se este for o caso, para resolver o ORA-00257 deve ser corrigido movendo os logs do arquivo para algum outro destino.
SQL> SELECT * FROM V$RECOVERY_FILE_DEST;
NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
+FLASH  21474836480 21474836480 212428800 200

3) Podemos ter muitas soluções nesta situação

a) Aumente o tamanho de db_recovery_file_dest se você tiver espaço disponível no Oracle ASM ou no sistema de arquivos que estiver usando
alter system set db_recovery_file_dest_size=40g;

b) Podemos excluir o log de arquivo que já foi copiado
rman target /
delete archivelog UNTIL TIME = 'SYSDATE-1' backed up 1 times to sbt_tape;rman target /
RMAN>delete archivelog
until time 'SYSDATE-3';
or,
RMAN>delete archivelog all;
or
delete archivelog UNTIL TIME = 'SYSDATE-1.5' backed up 1 times to sbt_tape;

c) Se você não tiver feito o backup, é aconselhável fazer backup e excluir os arquivos de log do arquivo morto
rman target /run {
allocate channel d1 type disk;
backup archivelog all delete input format '/u11/ora/arch_%d_%u_%s';
release channel d1;
}

d) Às vezes, parte de backup antiga, logs de flashback podem estar ocupando espaço no db_recovery_file_dest, você verifica o conteúdo de db_recovery_file_dest
SQL>Select file_type, percent_space_used as used,percent_space_reclaimable as reclaimable,
number_of_files as "number" from v$flash_recovery_area_usage;FILE_TYPE USED RECLAIMABLE number
------------ ---------- ----------- ----------
CONTROLFILE 0 0 0
ONLINELOG 0 0 0
ARCHIVELOG 4.77 0 2
BACKUPPIECE 56.80 0 10
IMAGECOPY 0 0 0
FLASHBACKLOG 11.68 11.49 63

Às vezes, o ponto de restauração garantido antigo pode estar presente, o descarte liberará o espaço.

Flashback Database explicado e limitação

como Flashback quando temos dataguard

As 10 principais consultas úteis para banco de dados Flashback

e) Se não precisarmos de log de arquivo, a simples exclusão também servirá ao propósito
rman target /
DELETE NOPROMPT ARCHIVELOG ALL;

Outro comando útil neste caso
LIST COPY   OF ARCHIVELOG ALL         COMPLETED AFTER 'SYSDATE-1';
DELETE NOPROMPT BACKUP COMPLETED BEFORE 'SYSDATE-4';
LIST COPY   OF ARCHIVELOG UNTIL TIME = 'SYSDATE-18';
BACKUP ARCHIVELOG COMPLETION TIME BETWEEN  'SYSDATE-28' AND 'SYSDATE-7';

Observação importante

Por favor, não exclua o arquivo de log do arquivo manualmente do sistema de arquivos, ele não atualizará o arquivo de controle e não resolverá o problema. Então você tem que fazer uma verificação cruzada de tudo no rman e excluir obsoletos e expirados

f) Podemos especificar um caminho alternativo para arquivamento

O arquivamento é realizado automaticamente no dest2 alternativo
log_archive_dest_1='LOCATION=use_db_recovery_file_dest NOREOPEN ALTERNATE=LOG_ARCHIVE_DEST_2'
log_archive_dest_2='LOCATION=/other_dest_for_archiving'
log_archive_dest_state_1='enable'
log_archive_dest_state_2='alternate'
db_recovery_file_dest='/u01/app/oradata/flash_recovery_area'
db_recovery_file_dest_size=200G

4) Uma vez que o espaço esteja disponível em db_recovery_file_dest, verifique o sistema alterando o arquivo de log do switch do sistema
alter system switch logfile;
system alerted

Tente também conectar-se a um usuário não sysdba para garantir que o problema seja resolvido
sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 - Production on
Copyright (c) 1982, 2008, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> conn apps/apps
connected
SQL>

É aconselhável fazer backup regular do log de arquivo e excluí-los. Devemos colocar um script de monitoramento para verificar o espaço da área de recuperação do flash.
Artigos relacionados
ORA-00936 expressão ausente
ORA-01017:nome de usuário/senha inválidos; logon negado
ORA-29913 com tabelas externas
ora-00904 identificador inválido
ORA-00001 restrição exclusiva violada
ORA-01111 no MRP
Como encontrar o histórico de log de arquivo
RMAN-06059:log arquivado esperado não encontrado, perda de log arquivado compromete a capacidade de recuperação