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 correlatiORA-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à