Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

ORA-00257:kesalahan pengarsipan. Hubungkan internal saja, sampai dibebaskan.

ORA-00257 adalah salah satu kesalahan paling umum dalam kehidupan Oracle DBA. Dia sering harus menghadapinya. Database Oracle hampir membeku karenanya dan semua transaksi terhenti. Mari kita lihat bagaimana menangani kesalahan ORA-00257

Pesan Kesalahan

ORA-00257:kesalahan pengarsipan. Sambungkan hanya internal, hingga bebas.

Sesuai dengan kesalahan ORA-00257 berarti

ORA-00257:kesalahan pengarsipan. Hubungkan internal saja, sampai dibebaskan. Penyebab:Proses pengarsipan menerima kesalahan saat mencoba mengarsipkan log ulang. Jika masalah tidak segera teratasi, database akan berhenti mengeksekusi transaksi. Kemungkinan besar penyebab pesan ini adalah perangkat tujuan kehabisan ruang untuk menyimpan file redo log.

Tindakan:Periksa file jejak pengarsip untuk penjelasan rinci masalah. Selain itu, pastikan perangkat yang ditentukan dalam parameter inisialisasi archive_log_dest diatur dengan benar untuk pengarsipan.

Di mana Anda melihat pesan kesalahan ini

1) Anda akan melihat di bawah jenis pesan kesalahan yang berkaitan dengan log peringatan

Berikut adalah beberapa informasi dari log peringatan:

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) Jika Anda mencoba masuk dengan pengguna non sysdba, Anda akan mendapatkan pesan kesalahan di bawah ini

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)  Jika Anda mencoba masuk dengan pengguna sysdba dan memeriksa acara tunggu untuk sesi tersebut , Anda akan menemukan acara pengalihan arsip log sesi tunggu
Mengapa terjadi kesalahan ORA-00257

Kesalahan ini terjadi karena lokasi target untuk log arsip penuh atau tidak tersedia. Proses latar belakang Oracle ARCH bertanggung jawab untuk mengambil redo log dari sistem file redo log online dan menulisnya ke flat file tidak dapat menulis ke sistem file

Cara mengatasi ORA-00257 error

1) Pertama-tama kita harus menemukan tujuan log arsip untuk database

sqlplus / as sysdba
SQL> archive log list;

Anda juga dapat menemukan tujuan arsip dengan USE_DB_RECOVERY_FILE_DEST

SQL> show parameter db_recovery_file_dest;

Dapatkan juga ukuran db_recovery_file_dest

show parameter db_recovery_file_dest_size;

2) Langkah selanjutnya dalam menyelesaikan ORA-00257 adalah mencari tahu nilai apa yang digunakan untuk db_recovery_file_dest_size, gunakan:

SQL> SELECT * FROM V$RECOVERY_FILE_DEST;

Anda mungkin menemukan bahwa SPACE_USED sama dengan SPACE_LIMIT, jika ini masalahnya, untuk mengatasi ORA-00257 harus diperbaiki dengan memindahkan log arsip ke beberapa tujuan lain.

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

3) Kita dapat memiliki banyak solusi dalam situasi ini

a) Tingkatkan ukuran db_recovery_file_dest jika Anda memiliki ruang yang tersedia di Oracle ASM atau sistem file apa pun yang Anda gunakan

alter system set db_recovery_file_dest_size=40g;

b) Kami dapat menghapus log arsip yang telah dicadangkan

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) Jika Anda belum mengambil cadangan, maka disarankan untuk mengambil cadangan dan kemudian menghapus file log arsip

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

d) Terkadang bagian cadangan lama, log kilas balik mungkin menempati ruang di db_recovery_file_dest, Anda memeriksa konten 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

Terkadang titik pemulihan lama yang dijamin mungkin ada, Menjatuhkan akan membebaskan ruang.

Flashback Database dijelaskan dan batasannya

cara Flashback kalau ada dataguard

10 Query Berguna Teratas untuk Basis Data Flashback

e) Jika kita tidak membutuhkan arsip log , maka cukup menghapus juga akan berfungsi

rman target /
DELETE NOPROMPT ARCHIVELOG ALL;

Perintah berguna lainnya dalam kasus ini

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

Catatan Penting

Tolong jangan hapus file log arsip secara manual dari sistem file, itu tidak akan memperbarui file kontrol dan tidak akan menghapus masalah. Kemudian Anda telah melakukan crosscheck semua di rman dan menghapus obsolete dan expired

f)  Kami dapat menentukan jalur alternatif untuk pengarsipan

Pengarsipan dilakukan secara otomatis ke tujuan2 alternatif

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) Setelah ruang tersedia di db_recovery_file_dest, Silakan periksa sistem dengan melakukan ubah file log sakelar sistem

alter system switch logfile;
system alerted

Coba juga hubungkan dengan pengguna non-sysdba untuk memastikan, masalah telah teratasi

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>

Dianjurkan untuk mengambil cadangan log arsip secara teratur dan menghapusnya. Kita harus meletakkan skrip pemantauan untuk memeriksa ruang area pemulihan flash.

Artikel Terkait
ORA-00936 ekspresi hilang
ORA-01017:nama pengguna/sandi tidak valid; logon ditolak
ORA-29913 dengan tabel eksternal
ora-00904 pengenal tidak valid
ORA-00001 batasan unik dilanggar
ORA-01111 di MRP
Cara menemukan riwayat log arsip
RMAN-06059:log arsip yang diharapkan tidak ditemukan, kehilangan log yang diarsipkan mengganggu pemulihan

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menginstal Oracle 32-bit Client di Windows Server Sudah Menjalankan 64-bit Oracle Database Server

  2. Nilai Urutan Oracle tidak dipesan

  3. Blok Injeksi Oracle SQL dengan DBMS_ASSERT

  4. Mengonversi Panjang ke Varchar2

  5. java.sql.SQLException:I/O Error:Koneksi ulang di server linux