sql >> Databasteknik >  >> RDS >> Oracle

ORA-00257:arkiveringsfel. Anslut endast internt tills det frigörs.

ORA-00257 är ett av de vanligaste felen i Oracles DBA-liv. Han/hon måste ofta ta itu med det. Oracle Database blev nästan fryst på grund av det och alla transaktioner stoppas. Låt oss se hur man hanterar felet ORA-00257

Felmeddelande

ORA-00257:arkiveringsfel. Anslut endast internt tills det frigörs.

Enligt The oerr ORA-00257 error mean

ORA-00257:arkiveringsfel. Anslut endast internt tills det frigörs. Orsak:Arkiveringsprocessen fick ett fel vid försök att arkivera en redo-logg. Om problemet inte löses snart kommer databasen att sluta utföra transaktioner. Den mest troliga orsaken till detta meddelande är att destinationsenheten har ont om utrymme för att lagra loggfilen för ombokning.

Åtgärd:Kontrollera arkiveringsspårningsfilen för en detaljerad beskrivning av problemet. Kontrollera också att enheten som anges i initialiseringsparametern archive_log_dest är korrekt inställd för arkivering.

Var ser du det här felmeddelandet

1) Du kommer att se nedan typ av felmeddelande som hör till varningsloggen

Följande är några om informationen från varningsloggen:

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) Om du försöker logga in med en icke sysdba-användare får du felmeddelandet nedan

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)  Om du försöker logga in med sysdba-användare och kontrollera väntande händelse för sessionen hittar du växlingshändelse för arkivväxling för session väntar
Varför ORA-00257-felet uppstår

Det här felet inträffar eftersom målplatsen för arkivloggen antingen är full eller inte tillgänglig. Oracle ARCH-bakgrundsprocessen är ansvarig för att ta redo-loggarna från online-redo-loggfilsystemet och skriva dem till den platta filen kan inte skriva till filsystemet

Så löser du ORA-00257-fel

1) Först och främst bör vi hitta arkivloggdestinationen för databasen

sqlplus / as sysdba
SQL> archive log list;

du kan också hitta arkivdestinationer antingen av USE_DB_RECOVERY_FILE_DEST

SQL> show parameter db_recovery_file_dest;

Få även storleken på db_recovery_file_dest

show parameter db_recovery_file_dest_size;

2) Nästa steg i att lösa ORA-00257 är att ta reda på vilket värde som används för db_recovery_file_dest_size, använd:

SQL> SELECT * FROM V$RECOVERY_FILE_DEST;

Du kanske upptäcker att SPACE_USED är samma som SPACE_LIMIT, om så är fallet, för att lösa ORA-00257 bör åtgärdas genom att flytta arkivloggarna till någon annan destination.

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

3) Vi kan ha många lösningar i dessa situationer

a) Öka storleken på db_recovery_file_dest om du har tillgängligt utrymme i Oracle ASM eller filsystem vad du än använder

alter system set db_recovery_file_dest_size=40g;

b) Vi kan ta bort arkivloggen som redan har säkerhetskopierats

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) Om du inte har tagit säkerhetskopian bör du ta säkerhetskopian och sedan ta bort arkivloggfilerna

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

d) Ibland kan gamla backup-bitar, flashback-loggar uppta utrymme i db_recovery_file_dest, du kontrollerar innehållet i 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

Ibland kan en gammal garanterad återställningspunkt finnas, släppning frigör utrymmet.

Flashback Database förklaras och begränsning

hur man Flashback när vi har dataguard

Topp 10 användbara frågor för Flashback Database

e) Om vi ​​inte behöver arkivlogg, så kommer bara borttagning också tjäna syftet

rman target /
DELETE NOPROMPT ARCHIVELOG ALL;

Annat användbart kommando i det här fallet

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';

Viktig anmärkning

Ta inte bort arkivloggfilen manuellt från filsystemet, den kommer inte att uppdatera kontrollfilen och det kommer inte att lösa problemet. Sedan måste du krysskolla allt i rman och ta bort föråldrade och utgångna

f)  Vi kan ange alternativ sökväg för arkivering

Arkivering utförs automatiskt till den alternativa destinationen2

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) När utrymme är tillgängligt i db_recovery_file_dest, kontrollera systemet genom att ändra systemväxlingsloggfilen

alter system switch logfile;
system alerted

Försök också att ansluta till en icke-sysdba-användare för att se till att problemet är löst

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>

Det är tillrådligt att ta regelbunden säkerhetskopia av arkivloggen och ta bort dem. Vi bör lägga till ett övervakningsskript för att hålla koll på utrymmet för flashåterställningsområdet.

Relaterade artiklar
ORA-00936 saknas uttryck
ORA-01017:ogiltigt användarnamn/lösenord; inloggning nekad
ORA-29913 med externa tabeller
ora-00904 ogiltig identifierare
ORA-00001 unik begränsning överträtt
ORA-01111 i MRP
Hur man hittar arkivlogghistorik
RMAN-06059:förväntad arkiverad logg hittades inte, förlorad arkiverad logg äventyrar återställningsmöjligheten

  1. Vad är databastestning och hur gör man det?

  2. Uppdatera flera kolumner i SQL

  3. Hur man gör dynamiska postgres-förberedda uttalanden i PHP

  4. Skenor:PG::UndefinedTable:FEL:relation ... existerar inte