Oracle
 sql >> Database >  >> RDS >> Oracle

ORA-00257:errore dell'archiviatore. Collega solo interno, fino a quando non viene liberato.

ORA-00257 è uno degli errori più comuni nella vita di Oracle DBA. Lui/lei ha spesso a che fare con esso. Il database Oracle si è quasi bloccato a causa di ciò e tutte le transazioni vengono interrotte. Vediamo come gestire l'errore ORA-00257

Messaggio di errore

ORA-00257:errore dell'archiviatore. Connetti solo interni, fino a quando non viene liberato.

Secondo l'errore oerr ORA-00257 significa

ORA-00257:errore dell'archiviatore. Collega solo interno, fino a quando non viene liberato. Causa:il processo di archiviazione ha ricevuto un errore durante il tentativo di archiviare un registro di ripristino. Se il problema non viene risolto a breve, il database interromperà l'esecuzione delle transazioni. La causa più probabile di questo messaggio è che il dispositivo di destinazione ha esaurito lo spazio per archiviare il file di registro di ripristino.

Azione:controllare il file di traccia dell'archiver per una descrizione dettagliata del problema. Verificare inoltre che il dispositivo specificato nel parametro di inizializzazione archive_log_dest sia impostato correttamente per l'archiviazione.

Dove vedi questo messaggio di errore

1) Di seguito vedrai il tipo di messaggio di errore relativo al registro degli avvisi

Di seguito sono riportate alcune informazioni dal registro degli avvisi:

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 si tenta di accedere con un utente non sysdba, verrà visualizzato il seguente messaggio di errore

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 provi ad accedere con l'utente sysdba e controlla l'evento di attesa per la sessione, troverai l'evento di cambio dell'archivio del registro di attesa della sessione
Perché si verifica l'errore ORA-00257

Questo errore si verifica perché il percorso di destinazione per il registro di archivio è pieno o non disponibile. Il processo in background di Oracle ARCH è responsabile dell'acquisizione dei registri di ripristino dal file system del registro di ripristino online e la loro scrittura nel file flat non è in grado di scrivere nel filesystem

Come risolvere gli errori ORA-00257

1) Prima di tutto dovremmo trovare la destinazione del registro di archivio per il database

sqlplus / as sysdba
SQL> archive log list;

puoi anche trovare le destinazioni di archivio da USE_DB_RECOVERY_FILE_DEST

SQL> show parameter db_recovery_file_dest;

Ottieni anche la dimensione di db_recovery_file_dest

show parameter db_recovery_file_dest_size;

2) Il passaggio successivo nella risoluzione di ORA-00257 è scoprire quale valore viene utilizzato per db_recovery_file_dest_size, utilizzare:

SQL> SELECT * FROM V$RECOVERY_FILE_DEST;

Potresti scoprire che SPACE_USED è uguale a SPACE_LIMIT, se questo è il caso, per risolvere ORA-00257 dovresti porre rimedio spostando i registri di archivio in un'altra destinazione.

SQL> SELECT * FROM V$RECOVERY_FILE_DEST;
NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
+FLASH  21474836480 21474836480 212428800 200

3) Possiamo avere molte soluzioni in queste situazioni

a) Aumenta la dimensione di db_recovery_file_dest se hai spazio disponibile in Oracle ASM o nel filesystem che stai utilizzando

alter system set db_recovery_file_dest_size=40g;

b) Possiamo eliminare il registro dell'archivio di cui è già stato eseguito il backup

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 non hai eseguito il backup, ti consigliamo di eseguire il backup e quindi eliminare i file di registro dell'archivio

rman target /run {
allocate channel d1 type disk;
backup archivelog all delete input format '/u11/ora/arch_%d_%u_%s';
release channel d1;
}

d) A volte il vecchio pezzo di backup, i registri di flashback possono occupare spazio nel db_recovery_file_dest, si controlla il contenuto di 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

A volte potrebbe essere presente un vecchio punto di ripristino garantito, l'eliminazione rilascerà lo spazio.

Spiegazione e limitazione del database Flashback

come eseguire il flashback quando abbiamo dataguard

Le 10 principali query utili per il database di Flashback

e) Se non abbiamo bisogno del registro dell'archivio, anche la semplice eliminazione servirà allo scopo

rman target /
DELETE NOPROMPT ARCHIVELOG ALL;

Altro comando utile in questo 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';

Nota importante

Si prega di non eliminare manualmente il file di registro dell'archivio dal filesystem, non aggiornerà il file di controllo e non cancellerà il problema. Quindi devi eseguire il controllo incrociato di tutto in rman ed eliminare obsoleto e scaduto

f) Possiamo specificare un percorso alternativo per l'archiviazione

L'archiviazione viene eseguita automaticamente nella destinazione alternativa2

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) Una volta che lo spazio è disponibile in db_recovery_file_dest, controlla il sistema modificando il file di registro del cambio di sistema

alter system switch logfile;
system alerted

Prova anche a connetterti con un utente non sysdba per assicurarti che il problema sia stato risolto

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>

Si consiglia di eseguire regolarmente il backup del registro dell'archivio ed eliminarli. Dovremmo inserire uno script di monitoraggio per tenere sotto controllo lo spazio dell'area di ripristino flash.

Articoli correlati
ORA-00936 espressione mancante
ORA-01017:nome utente/password non validi; accesso negato
ORA-29913 con tabelle esterne
ora-00904 identificatore non valido
vincolo univoco ORA-00001 violato
ORA-01111 in MRP
Come trovare la cronologia del registro di archivio
RMAN-06059:registro archiviato previsto non trovato, la perdita del registro archiviato compromette la recuperabilità