ORA-00257 is een van de meest voorkomende fouten in het leven van Oracle DBA. Hij / zij heeft er vaak mee te maken. Oracle Database is hierdoor bijna bevroren en alle transacties worden gestopt. Laten we eens kijken hoe we met de ORA-00257-fout moeten omgaan
Foutbericht
ORA-00257:archieffout. Alleen intern aansluiten, totdat het wordt vrijgemaakt.
Volgens de oerr ORA-00257-fout betekent
ORA-00257:archieffout. Sluit alleen intern aan, totdat het wordt vrijgemaakt. Oorzaak:Het archiveringsproces heeft een fout ontvangen tijdens het archiveren van een herhalingslogboek. Als het probleem niet snel wordt opgelost, stopt de database met het uitvoeren van transacties. De meest waarschijnlijke oorzaak van dit bericht is dat het doelapparaat onvoldoende ruimte heeft om het logbestand voor opnieuw uitvoeren op te slaan.
Actie:Controleer het traceerbestand van de archiver voor een gedetailleerde beschrijving van het probleem. Controleer ook of het apparaat dat is opgegeven in de initialisatieparameter archive_log_dest correct is ingesteld voor archivering.
Waar zie je deze foutmelding
1) U ziet het onderstaande type foutmelding dat betrekking heeft op het waarschuwingslogboek
Hier volgen enkele van de informatie uit het waarschuwingslogboek:
Fouten in bestand \u01\oracle\product\11.2.0\diag\rdbms\TEST\test\trace\test_arc1_1010.trc:ORA-19815:WAARSCHUWING:db_recovery_file_dest_size van 21474836480 bytes is 100,00% gebruikt en heeft 0 over bytes beschikbaar.Wo jan 21 02:44:02 2016************************************** *********************************** U hebt de volgende keuzes om ruimte vrij te maken in het flash-herstelgebied:1. Overweeg om het RMAN-BEHOUDBELEID te wijzigen. Als u Data Guard gebruikt, overweeg dan om het RMAN ARCHIVELOG DELETION POLICY.2 te wijzigen. Maak een back-up van bestanden naar een tertiair apparaat zoals tape met behulp van de opdracht RMANBACKUP RECOVERY AREA.3. Voeg schijfruimte toe en verhoog de parameter db_recovery_file_dest_size om de nieuwe ruimte weer te geven.4. Verwijder onnodige bestanden met de opdracht RMAN DELETE. Als een besturingssysteemopdracht is gebruikt om bestanden te verwijderen, gebruik dan de opdrachten RMAN CROSSCHECK en DELETE EXPIRED.*********************************** **************************************** ARC1:kan thread 1 reeks 1459 niet archiveren ( 1809)ARCH:archivering gestopt, fout opgetreden. Zal doorgaan met opnieuw proberen wo jan 21 02:44:02 2016Fouten in bestand \u01\oracle\product\11.2.0\diag\rdbms\TEST\test\trace\test_arc1_1010.trcORA-16038:log 3 sequentie# 1459 kan niet worden gearchiveerdORA-19809 :limiet overschreden voor herstelbestandenORA-00312:online log 3 thread 1:'\u01\oracle\oradata\TEST\redo03.LOG'
2) Als u probeert in te loggen met een niet-sysdba-gebruiker, krijgt u de onderstaande foutmelding
sqlplus / as sysdbaSQL*Plus:Release 11.2.0.4.0 - Productie op Copyright (c) 1982, 2008, Oracle. Alle rechten voorbehouden. Verbonden met:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64-bits productie Met de opties voor partitionering, OLAP, datamining en echte toepassingstestsSQL> conn apps/appsERROR:ORA-00257:archiverfout. Alleen intern verbinden, totdat het wordt vrijgegeven.Waarschuwing:je bent niet langer verbonden met ORACLE.SQL
3) Als u probeert in te loggen met een sysdba-gebruiker en de wachtgebeurtenis voor de sessie controleert, vindt u de wisselgebeurtenis van de sessiewachtlogboekarchieven
Waarom de ORA-00257-fout optreedt
Deze fout treedt op omdat de doellocatie voor het archieflogboek vol is of niet beschikbaar is. Het Oracle ARCH-achtergrondproces is verantwoordelijk voor het ophalen van de redo-logs van het online redo-logbestandssysteem en het schrijven naar het platte bestand kan niet naar het bestandssysteem schrijven
Hoe ORA-00257-fouten op te lossen
1) Allereerst moeten we de archieflogbestemming voor de database vinden
sqlplus / as sysdbaSQL> archiefloglijst;
u kunt archiefbestemmingen ook vinden op USE_DB_RECOVERY_FILE_DEST
SQL> toon parameter db_recovery_file_dest;
Krijg ook de grootte van de db_recovery_file_dest
toon parameter db_recovery_file_dest_size;
2) De volgende stap bij het oplossen van ORA-00257 is om uit te zoeken welke waarde wordt gebruikt voor db_recovery_file_dest_size, gebruik:
SQL> SELECT * VANAF V$RECOVERY_FILE_DEST;
Mogelijk merkt u dat SPACE_USED hetzelfde is als SPACE_LIMIT. Als dit het geval is, moet ORA-00257 worden opgelost door de archieflogboeken naar een andere bestemming te verplaatsen.
SQL> SELECT * FROM V$RECOVERY_FILE_DEST;NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES+FLASH 21474836480 21474836480 212428800 200
3) We kunnen in deze situatie veel oplossingen hebben
a) Vergroot de grootte van db_recovery_file_dest als u ruimte beschikbaar heeft in Oracle ASM of bestandssysteem, wat u ook gebruikt
systeemset db_recovery_file_dest_size=40g wijzigen;
b) We kunnen het archieflogboek verwijderen waarvan al een back-up is gemaakt
rman target /delete archivelog UNTIL TIME ='SYSDATE-1' 1 keer een back-up gemaakt naar sbt_tape;rman target /RMAN>archieflog verwijderen tot tijd 'SYSDATE-3';of,RMAN>archieflog alles verwijderen;ordelete archivelog UNTIL TIME ='SYSDATE-1.5' 1 keer een back-up gemaakt naar sbt_tape;
c) Als u de back-up niet hebt gemaakt, is het raadzaam om een back-up te maken en vervolgens de archieflogbestanden te verwijderen
rman target /run {allocate channel d1 type disk;backup archivelog all delete input format '/u11/ora/arch_%d_%u_%s';release channel d1;}
d) Soms nemen oude back-ups, flashback-logboeken ruimte in beslag in de db_recovery_file_dest, controleer dan de inhoud van db_recovery_file_dest
SQL>Selecteer file_type, percent_space_used als gebruikt,percent_space_reclaimable als reclaimable, number_of_files als "number" van v$flash_recovery_area_usage;FILE_TYPE USED RECLAIMABLE number ------------ -------- -- ----------- ----------CONTROLFILE 0 0 0ONLINELOG 0 0 0ARCHIEFLOG 4.77 0 2BACKUPSTUK 56.80 0 10IMAGECOPY 0 0 0FLASHBACKLOG 11.68 11.49 63
Soms is er een oud gegarandeerd herstelpunt aanwezig, Dropping zal de ruimte vrijgeven.
Flashback-database uitgelegd en beperking
hoe flashbacken als we dataguard hebben
Top 10 nuttige zoekopdrachten voor Flashback-database
e) Als we het archieflogboek niet nodig hebben, zal eenvoudig verwijderen ook het doel dienen
rman target /DELETE NOPROMPT ARCHIVELOG ALL;
Andere nuttige opdracht in dit geval
LIJSTKOPIE VAN ARCHIVELOG ALLES VOLTOOID NA 'SYSDATE-1';DELETE NOPROMPT-BACK-UP VOLTOOID VOOR 'SYSDATE-4';LIJSTKOPIE VAN ARCHIVELOG TOT TIJD ='SYSDATE-18';BACK-UP ARCHIEFLOG VOLTOOIEN 'TIJDSDATUM TUSSEN-28' EN 'SYSDATE-7';
Belangrijke opmerking
Verwijder het archieflogbestand niet handmatig uit het bestandssysteem, het zal het controlebestand niet updaten en het zal het probleem niet oplossen. Dan moet je alles in rman controleren en verouderd en verlopen verwijderen
f) We kunnen een alternatief pad specificeren voor archivering
Archivering wordt automatisch uitgevoerd naar de alternatieve bestemming2
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) Zodra er ruimte beschikbaar is in db_recovery_file_dest, controleert u het systeem door het logbestand van de systeemschakelaar te wijzigen
logbestand van systeemwissel wijzigen;systeem gewaarschuwd
Probeer ook verbinding te maken met een niet-sysdba-gebruiker om er zeker van te zijn dat het probleem is opgelost
sqlplus / as sysdbaSQL*Plus:Release 11.2.0.4.0 - Productie op Copyright (c) 1982, 2008, Oracle. alle rechten voorbehoudenHet is raadzaam om regelmatig een back-up van het archieflogboek te maken en deze te verwijderen. We zouden een monitoringscript moeten plaatsen om de ruimte in het flash-herstelgebied te controleren.
Verwante artikelen
ORA-00936 ontbrekende uitdrukking
ORA-01017:ongeldige gebruikersnaam/wachtwoord; aanmelding geweigerd
ORA-29913 met externe tabellen
ora-00904 ongeldige identifier
ORA-00001 unieke beperking geschonden
ORA-01111 in MRP
De geschiedenis van archieflogboeken vinden
RMAN-06059:verwacht gearchiveerd logboek niet gevonden, verloren gearchiveerd logboek compromitteert herstelbaarheid