Oracle
 sql >> база данни >  >> RDS >> Oracle

ORA-00257:грешка в архиватора. Свързване само вътрешно, докато не бъде освободено.

ORA-00257 е една от най-честите грешки в живота на Oracle DBA. Той/тя често трябва да се справя с това. Базата данни на Oracle почти беше замразена поради това и всички транзакции се спират. Нека видим как да се справим с грешката ORA-00257

Съобщение за грешка

ORA-00257:грешка в архиватора. Свързвайте се само вътрешно, докато не се освободите.

Съгласно The oerr ORA-00257 грешка означава

ORA-00257:грешка в архиватора. Свързване само вътрешно, докато не бъде освободено. Причина:Процесът на архивиране получи грешка при опит за архивиране на дневник за повторно изпълнение. Ако проблемът не бъде разрешен скоро, базата данни ще спре да изпълнява транзакции. Най-вероятната причина за това съобщение е крайното устройство да няма място за съхранение на регистрационния файл за повторно изпълнение.

Действие:Проверете файла за проследяване на архиватора за подробно описание на проблема. Също така проверете дали устройството, посочено в параметъра за инициализация archive_log_dest, е настроено правилно за архивиране.

Къде виждате това съобщение за грешка

1) Ще видите по-долу тип съобщение за грешка, отнасящо се до дневника за предупреждения

Следват някои ако информацията от дневника за предупреждения:

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) Ако се опитате да влезете с потребител, който не е sysdba, ще видите съобщението за грешка по-долу

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)  Ако се опитате да влезете с потребител на sysdba и проверите събитието за изчакване за сесията, ще намерите събитие за превключване на архива на изчакване на сесия
Защо възниква грешка ORA-00257

Тази грешка възниква, тъй като целевото местоположение за архивния дневник е пълно или не е налично. Фоновият процес на Oracle ARCH е отговорен за вземането на регистрационните файлове за повторно изпълнение от онлайн файловата система на регистрационните файлове за повторно изпълнение и записването им в плоския файл не може да записва във файловата система

Как да разрешите ORA-00257 грешки

1) Първо трябва да намерим дестинацията на архивния дневник за базата данни

sqlplus / as sysdba
SQL> archive log list;

можете също да намерите архивни дестинации от USE_DB_RECOVERY_FILE_DEST

SQL> show parameter db_recovery_file_dest;

Също така вземете размера на db_recovery_file_dest

show parameter db_recovery_file_dest_size;

2) Следващата стъпка в разрешаването на ORA-00257 е да разберете каква стойност се използва за db_recovery_file_dest_size, използвайте:

SQL> SELECT * FROM V$RECOVERY_FILE_DEST;

Може да откриете, че SPACE_USED е същото като SPACE_LIMIT, ако случаят е такъв, за разрешаване на ORA-00257 трябва да се поправи чрез преместване на архивните регистрационни файлове на друга дестинация.

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

3) Можем да имаме много решения в тази ситуация

a) Увеличете размера на db_recovery_file_dest, ако имате налично място в Oracle ASM или файлова система, каквото и да използвате

alter system set db_recovery_file_dest_size=40g;

b) Можем да изтрием архивния дневник, който вече е архивиран

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;

в) Ако не сте направили архива, тогава е препоръчително  да направите резервно копие и след това да изтриете архивните регистрационни файлове

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

г) Понякога старата резервна част, регистрационните файлове за флашбек може да заемат място в db_recovery_file_dest, вие проверявате съдържанието на 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

Понякога може да има стара гарантирана точка за възстановяване. Отпадането ще освободи пространството.

Обяснение на базата данни за Flashback и ограничения

как да Flashback, когато имаме защита на данните

Топ 10 полезни заявки за Flashback база данни

д) Ако не се нуждаем от архивен дневник, тогава простото изтриване също ще служи на целта

rman target /
DELETE NOPROMPT ARCHIVELOG ALL;

Друга полезна команда в този случай

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

Важна забележка

Моля, не изтривайте архивния регистрационен файл ръчно от файловата система, той няма да актуализира контролния файл и няма да изчисти проблема. След това трябва да извършите кръстосана проверка на всичко в rman и да изтриете остарелите и изтекли

е)  Можем да посочим алтернативен път за архивиране

Архивирането се извършва автоматично до алтернативния цел2

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) След като пространството е налично в db_recovery_file_dest, моля, проверете системата, като направите промяна на регистрационния файл за превключване на системата

alter system switch logfile;
system alerted

Също така опитайте да се свържете с потребител, който не е sysdba, за да сте сигурни, че проблемът е разрешен

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>

Препоръчително е да правите редовно архивиране на архивния дневник и да ги изтривате. Трябва да поставим скрипт за наблюдение, за да проверяваме пространството на флаш зоната за възстановяване.

Сродни статии
ORA-00936 липсващ израз
ORA-01017:невалидно потребителско име/парола; Отказано влизане
ORA-29913 с външни таблици
ora-00904 невалиден идентификатор
Уникалното ограничение ORA-00001 е нарушено
ORA-01111 в MRP
Как да намерите хронологията на архивния журнал
RMAN-06059:очакван архивиран дневник не е намерен, загубата на архивиран дневник компрометира възможността за възстановяване

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. винаги ли външният ключ се позовава на уникален ключ в друга таблица?

  2. Как мога да ускоря row_number в Oracle?

  3. 2 начина да създадете таблица, ако тя вече не съществува в Oracle

  4. Зареждане на данни за изображения в BLOB колони в Oracle

  5. null срещу празен низ в Oracle