Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ORA-00257:Archivierungsfehler. Nur intern verbinden, bis freigegeben.

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

finden
SQL> 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ühren
alter 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 Artikel
ORA-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