Oracle
 sql >> Baza danych >  >> RDS >> Oracle

ORA-00257:błąd archiwizatora. Połącz tylko wewnętrznie, aż do zwolnienia.

ORA-00257 jest jednym z najczęstszych błędów w życiu Oracle DBA. Często musi sobie z tym radzić. Baza danych Oracle prawie została z tego powodu zamrożona i wszystkie transakcje zostają zatrzymane. Zobaczmy, jak poradzić sobie z błędem ORA-00257

Komunikat o błędzie

ORA-00257:błąd archiwizatora. Połącz tylko wewnętrznie, aż do zwolnienia.

Zgodnie z oerr ORA-00257 oznacza błąd

ORA-00257:błąd archiwizatora. Połącz tylko wewnętrznie, aż do zwolnienia. Przyczyna:Proces archiwizujący otrzymał błąd podczas próby zarchiwizowania dziennika ponownego wykonywania. Jeśli problem nie zostanie szybko rozwiązany, baza danych przestanie wykonywać transakcje. Najbardziej prawdopodobną przyczyną tego komunikatu jest brak miejsca na urządzeniu docelowym do przechowywania pliku dziennika ponownego wykonania.

Akcja:Sprawdź plik śledzenia archiwizatora, aby uzyskać szczegółowy opis problemu. Sprawdź również, czy urządzenie określone w parametrze inicjującym archive_log_dest jest prawidłowo skonfigurowane do archiwizacji.

Gdzie widzisz ten komunikat o błędzie

1) Zobaczysz poniżej rodzaj komunikatu o błędzie związanego z dziennikiem alertów

Poniżej znajdują się niektóre informacje z dziennika alertów:

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) Jeśli spróbujesz zalogować się jako użytkownik inny niż sysdba, pojawi się poniższy komunikat o błędzie

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)  Jeśli spróbujesz zalogować się jako użytkownik sysdba i sprawdzisz zdarzenie oczekiwania na sesję , zobaczysz zdarzenie przełączania archiwum dziennika sesji oczekującej
Dlaczego występuje błąd ORA-00257

Ten błąd występuje, gdy docelowa lokalizacja dziennika archiwum jest pełna lub niedostępna. Proces w tle Oracle ARCH jest odpowiedzialny za pobranie dzienników ponawiania z systemu plików dziennika ponawiania online i zapisanie ich w zwykłym pliku nie może zapisywać w systemie plików

Jak rozwiązać błędy ORA-00257

1) Przede wszystkim powinniśmy znaleźć miejsce docelowe dziennika archiwum dla bazy danych

sqlplus / as sysdba
SQL> archive log list;

możesz również znaleźć archiwalne miejsca docelowe za pomocą USE_DB_RECOVERY_FILE_DEST

SQL> show parameter db_recovery_file_dest;

Uzyskaj również rozmiar db_recovery_file_dest

show parameter db_recovery_file_dest_size;

2) Następnym krokiem w rozwiązaniu ORA-00257 jest sprawdzenie, jaka wartość jest używana dla db_recovery_file_dest_size, użyj:

SQL> SELECT * FROM V$RECOVERY_FILE_DEST;

Może się okazać, że SPACE_USED jest tym samym co SPACE_LIMIT, jeśli tak jest, aby rozwiązać problem ORA-00257, należy przesunąć dzienniki archiwum w inne miejsce.

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

3) W takiej sytuacji możemy mieć wiele rozwiązań

a) Zwiększ rozmiar db_recovery_file_dest, jeśli masz wolne miejsce w Oracle ASM lub systemie plików, czegokolwiek używasz

alter system set db_recovery_file_dest_size=40g;

b) Możemy usunąć dziennik archiwum, którego kopię zapasową już wykonano

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) Jeśli kopia zapasowa nie została wykonana, zaleca się wykonanie kopii zapasowej, a następnie usunięcie plików dziennika archiwum

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

d) Czasami stara kopia zapasowa, logi flashbacków mogą zajmować miejsce w db_recovery_file_dest, sprawdzasz zawartość 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

Czasami może być obecny stary gwarantowany punkt przywracania, upuszczenie zwolni miejsce.

Wyjaśnienie i ograniczenia bazy danych Flashback

jak wykonać retrospekcję, gdy mamy ochronę danych

10 najpopularniejszych zapytań dotyczących bazy danych Flashback

e) Jeśli nie potrzebujemy dziennika archiwum , po prostu usuniemy go również w tym celu

rman target /
DELETE NOPROMPT ARCHIVELOG ALL;

Inne przydatne polecenie w tym przypadku

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

Ważna uwaga

Proszę nie usuwać ręcznie pliku dziennika archiwum z systemu plików, nie zaktualizuje to pliku kontrolnego i nie usunie problemu. Następnie musisz sprawdzić wszystko w rman i usunąć przestarzałe i wygasłe

f)  Możemy określić alternatywną ścieżkę do archiwizacji

Archiwizacja jest wykonywana automatycznie do alternatywnego miejsca docelowego2

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) Gdy miejsce w db_recovery_file_dest będzie dostępne, sprawdź system, zmieniając plik dziennika przełączania systemu

alter system switch logfile;
system alerted

Spróbuj także połączyć się z użytkownikiem innym niż sysdba, aby upewnić się, że problem został rozwiązany

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>

Zaleca się regularne tworzenie kopii zapasowych dziennika archiwum i ich usuwanie. Powinniśmy umieścić skrypt monitorujący, aby kontrolować przestrzeń obszaru odzyskiwania pamięci flash.

Powiązane artykuły
ORA-00936 brak wyrażenia
ORA-01017:nieprawidłowa nazwa użytkownika/hasło; Odmowa logowania
ORA-29913 z tabelami zewnętrznymi
Nieprawidłowy identyfikator ora-00904
Naruszono ograniczenie unikatowe ORA-00001
ORA-01111 w MRP
Jak znaleźć historię dzienników archiwum
RMAN-06059:nie znaleziono oczekiwanego zarchiwizowanego dziennika, utrata zarchiwizowanego dziennika uniemożliwia odzyskiwanie

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Po co używać klauzuli JOIN zamiast warunku WHERE?

  2. Dziesięć najważniejszych powodów, dla których warto przejść z Oracle na PostgreSQL

  3. Operator Oracle (+)

  4. Oracle Insert przez Select z wielu tabel, w których jedna tabela może nie mieć wiersza

  5. Wstawianie wielu wierszy z sekwencją w Oracle