sql >> Databáze >  >> RDS >> Oracle

ORA-00257:Chyba archivátoru. Připojte pouze interní, dokud se neuvolní.

ORA-00257 je jednou z nejčastějších chyb v životě Oracle DBA. Často se s tím musí vypořádat. Databáze Oracle kvůli tomu málem zamrzla a všechny transakce se zastavily. Podívejme se, jak se vypořádat s chybou ORA-00257

Chybová zpráva

ORA-00257:Chyba archivátoru. Připojte pouze interní, dokud se neuvolní.

Podle oerr chyba ORA-00257 znamená

ORA-00257:Chyba archivátoru. Připojte pouze interní, dokud se neuvolní. Příčina:Proces archivace obdržel chybu při pokusu o archivaci opakovaného protokolu. Pokud se problém brzy nevyřeší, databáze přestane provádět transakce. Nejpravděpodobnější příčinou této zprávy je, že v cílovém zařízení není místo pro uložení souboru redo log.

Akce:Zkontrolujte trasovací soubor archivátoru, kde najdete podrobný popis problému. Také ověřte, zda je zařízení zadané v inicializačním parametru archive_log_dest správně nastaveno pro archivaci.

Kde vidíte tuto chybovou zprávu

1) Níže uvidíte typ chybové zprávy týkající se protokolu výstrah

Níže jsou uvedeny některé informace z protokolu výstrah:

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) Pokud se pokusíte přihlásit s jiným uživatelem než sysdba, zobrazí se níže uvedená chybová zpráva

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)  Pokud se pokusíte přihlásit pomocí uživatele sysdba a zkontrolovat událost čekání na relaci, najdete událost přepnutí archivu protokolu čekání na relace
Proč dochází k chybě ORA-00257

K této chybě dochází, protože cílové umístění archivního protokolu je buď plné, nebo není dostupné. Proces Oracle ARCH na pozadí je zodpovědný za převzetí protokolů redo z online systému souborů protokolu redo a jejich zápis do plochého souboru není schopen zapisovat do souborového systému

Jak vyřešit chyby ORA-00257

1) Nejprve bychom měli najít cíl archivního logu pro databázi

sqlplus / as sysdba
SQL> archive log list;

můžete také najít cíle archivu buď pomocí USE_DB_RECOVERY_FILE_DEST

SQL> show parameter db_recovery_file_dest;

Získejte také velikost db_recovery_file_dest

show parameter db_recovery_file_dest_size;

2) Dalším krokem při řešení ORA-00257 je zjistit, jaká hodnota se používá pro db_recovery_file_dest_size, použijte:

SQL> SELECT * FROM V$RECOVERY_FILE_DEST;

Možná zjistíte, že SPACE_USED je stejný jako SPACE_LIMIT, pokud tomu tak je, řešení ORA-00257 by mělo být opraveno přesunutím archivních protokolů na jiné místo.

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

3) V této situaci můžeme mít mnoho řešení

a) Zvětšete velikost db_recovery_file_dest, pokud máte k dispozici místo v Oracle ASM nebo souborovém systému bez ohledu na to, co používáte

alter system set db_recovery_file_dest_size=40g;

b) Můžeme odstranit archivní protokol, který již byl zálohován

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) Pokud jste neprovedli zálohu, pak se doporučuje zálohovat a poté smazat archivní protokolové soubory

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

d) Někdy může starý záložní kus, flashback logy zabírat místo v db_recovery_file_dest, zkontrolujete obsah 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

Někdy může být přítomen starý zaručený bod obnovení. Odhozením se místo uvolní.

Vysvětlení databáze Flashback a omezení

jak na Flashback, když máme dataguard

Top 10 užitečných dotazů pro databázi Flashback

e) Pokud nepotřebujeme archivovat log , pak poslouží i jednoduché smazání

rman target /
DELETE NOPROMPT ARCHIVELOG ALL;

Další užitečný příkaz v tomto případě

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

Důležitá poznámka

Prosím, neodstraňujte archivní protokol ručně ze systému souborů, neaktualizuje se tím řídicí soubor a problém se nevymaže. Pak musíte provést křížovou kontrolu všeho v rman a odstranit zastaralé a vypršelé

f)  Můžeme zadat alternativní cestu pro archivaci

Archivace se automaticky provede do alternativního cíle2

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) Jakmile bude k dispozici místo v db_recovery_file_dest, zkontrolujte systém změnou souboru protokolu přepnutí systému

alter system switch logfile;
system alerted

Zkuste se také připojit k jinému uživateli než sysdba, abyste se ujistili, že je problém vyřešen

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>

Je vhodné pravidelně zálohovat archivní protokol a mazat je. Měli bychom vložit monitorovací skript, abychom mohli kontrolovat prostor flash obnovovací oblasti.

Související články
ORA-00936 chybí výraz
ORA-01017:neplatné uživatelské jméno/heslo; přihlášení odepřeno
ORA-29913 s externími tabulkami
ora-00904 neplatný identifikátor
Porušeno jedinečné omezení ORA-00001
ORA-01111 v MRP
Jak najít archivní historii protokolů
RMAN-06059:očekávaný archivovaný protokol nebyl nalezen, ztracený archivovaný protokol ohrožuje obnovitelnost

  1. kontingenční tabulka Oracle - jak změnit položky řádků na sloupce

  2. Jak používat příkaz CASE v MySQL?

  3. Chyba přihlášení SQL Server 2008 Windows Auth:Přihlášení pochází z nedůvěryhodné domény

  4. Vrácení čísla týdne ISO z data v SQL Server (T-SQL)