ORA-00257 ist einer der häufigsten Fehler im Leben eines Oracle DBA. Er/Sie muss sich oft damit auseinandersetzen. Die Oracle-Datenbank wurde deswegen fast eingefroren und alle Transaktionen wurden gestoppt. Sehen wir uns an, wie mit dem Fehler ORA-00257 umgegangen wird
Fehlermeldung
ORA-00257:Archivierungsfehler. Nur intern verbinden, bis freigegeben.
Gemäß The oerr ORA-00257 Fehler bedeutet
ORA-00257:Archivierungsfehler. Nur intern verbinden, bis freigegeben. Ursache:Der Archivierungsprozess hat beim Versuch, ein Redo-Log zu archivieren, einen Fehler empfangen. Wenn das Problem nicht bald behoben wird, stoppt die Datenbank die Ausführung von Transaktionen. Die wahrscheinlichste Ursache für diese Meldung ist, dass auf dem Zielgerät nicht genügend Speicherplatz zum Speichern der Redo-Log-Datei vorhanden ist.
Aktion:Suchen Sie in der Trace-Datei des Archivers nach einer detaillierten Beschreibung des Problems. Stellen Sie außerdem sicher, dass das im Initialisierungsparameter archive_log_dest angegebene Gerät ordnungsgemäß für die Archivierung eingerichtet ist.
Wo sehen Sie diese Fehlermeldung
1) Unten sehen Sie die Art der Fehlermeldung, die sich auf das Warnprotokoll bezieht
Im Folgenden finden Sie einige Informationen aus dem Warnprotokoll:
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) Wenn Sie versuchen, sich mit einem Nicht-Sysdba-Benutzer anzumelden, erhalten Sie die folgende Fehlermeldung
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) Wenn Sie versuchen, sich mit dem sysdba-Benutzer anzumelden und das Warteereignis für die Sitzung zu überprüfen, finden Sie das Sitzungswarteprotokoll-Archivwechselereignis
Warum der ORA-00257-Fehler auftritt
Dieser Fehler tritt auf, wenn der Zielspeicherort für das Archivprotokoll entweder voll oder nicht verfügbar ist. Der Oracle ARCH-Hintergrundprozess ist dafür verantwortlich, die Redo-Logs aus dem Online-Redo-Log-Dateisystem zu nehmen und sie in die Flatfile zu schreiben, kann aber nicht in das Dateisystem schreiben
So beheben Sie ORA-00257-Fehler
1) Zuerst sollten wir das Ziel des Archivprotokolls für die Datenbank finden
sqlplus / as sysdba SQL> archive log list;
Sie können Archivziele auch über USE_DB_RECOVERY_FILE_DEST
findenSQL> show parameter db_recovery_file_dest;
Ermitteln Sie auch die Größe von db_recovery_file_dest
show parameter db_recovery_file_dest_size;
2) Der nächste Schritt zur Lösung von ORA-00257 besteht darin, herauszufinden, welcher Wert für db_recovery_file_dest_size verwendet wird, verwenden Sie:
SQL> SELECT * FROM V$RECOVERY_FILE_DEST;
Möglicherweise stellen Sie fest, dass SPACE_USED mit SPACE_LIMIT identisch ist. Wenn dies der Fall ist, sollte die Lösung von ORA-00257 behoben werden, indem die Archivprotokolle an ein anderes Ziel verschoben werden.
SQL> SELECT * FROM V$RECOVERY_FILE_DEST; NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES +FLASH 21474836480 21474836480 212428800 200
3) Wir können in dieser Situation viele Lösungen haben
a) Erhöhen Sie die Größe von db_recovery_file_dest, wenn Sie in Oracle ASM oder dem Dateisystem, das Sie verwenden, Speicherplatz zur Verfügung haben
alter system set db_recovery_file_dest_size=40g;
b) Wir können die bereits gesicherten Archivprotokolle löschen
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) Wenn Sie keine Sicherung erstellt haben, wird empfohlen, eine Sicherung zu erstellen und dann die Archivprotokolldateien zu löschen
rman target /run { allocate channel d1 type disk; backup archivelog all delete input format '/u11/ora/arch_%d_%u_%s'; release channel d1; }
d) Manchmal belegen alte Sicherungsstücke, Flashback-Protokolle Platz in db_recovery_file_dest, Sie überprüfen den Inhalt von 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
Manchmal kann ein alter garantierter Wiederherstellungspunkt vorhanden sein, durch das Löschen wird der Speicherplatz freigegeben.
Erklärung und Einschränkung der Flashback-Datenbank
Wie man Flashback macht, wenn wir Dataguard haben
Die 10 nützlichsten Abfragen für die Flashback-Datenbank
e) Wenn wir kein Archivprotokoll benötigen, dann reicht auch einfaches Löschen aus
rman target / DELETE NOPROMPT ARCHIVELOG ALL;
Anderer nützlicher Befehl in diesem Fall
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';
Wichtiger Hinweis
Bitte löschen Sie die Archivprotokolldatei nicht manuell aus dem Dateisystem, da die Steuerdatei nicht aktualisiert und das Problem nicht behoben wird. Dann müssen Sie alles in rman gegenprüfen und veraltete und abgelaufene löschen
f) Wir können einen alternativen Pfad für die Archivierung angeben
Die Archivierung erfolgt automatisch auf dem alternativen Ziel2
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) Sobald Speicherplatz in db_recovery_file_dest verfügbar ist, überprüfen Sie bitte das System, indem Sie alter system switch logfile
ausführenalter system switch logfile; system alerted
Versuchen Sie auch, sich mit einem Nicht-Sysdba-Benutzer zu verbinden, um sicherzustellen, dass das Problem behoben ist
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>
Es ist ratsam, regelmäßig Backups des Archivprotokolls zu erstellen und diese zu löschen. Wir sollten ein Überwachungsskript einfügen, um den Speicherplatz im Flash-Wiederherstellungsbereich zu überprüfen.
Verwandte ArtikelORA-00936 fehlender Ausdruck
ORA-01017:ungültiger Benutzername/Passwort; Anmeldung verweigert
ORA-29913 mit externen Tabellen
ora-00904 ungültige Kennung
ORA-00001 Eindeutigkeitsbeschränkung verletzt
ORA-01111 in MRP
So finden Sie den Verlauf des Archivprotokolls
RMAN-06059:erwartetes archiviertes Protokoll nicht gefunden, verlorenes archiviertes Protokoll beeinträchtigt Wiederherstellbarkeit