Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Memahami redo log group vs file vs member

Dalam tutorial Oracle ini, kami akan menjelaskan cara sederhana memahami redo log group vs file vs member.

Hari ini kita akan mempelajari konsep redo log buffer di Oracle. Di sini kita akan mengetahui, apa itu redo log buffer, cara kerjanya dan apa perannya dalam arsitektur Oracle.

Jika Anda ingin memahami arsitektur Oracle, sangat penting untuk memahami cara kerja buffer redo log. Artikel di bawah ini juga akan membantu Anda menjawab pertanyaan wawancara.

Memahami redo log group vs file vs member

Apa yang dimaksud dengan redo log buffer?

Ini adalah alokasi memori kecil biasanya sekitar 14mb secara default. Ini adalah buffer siklik. Setelah penuh, ia mulai menulis lagi dari atas, ia menimpa data setelah penuh.

Apa yang dimaksud dengan entri ulang dan ubah Vektor?

Instans database Oracle mencatat semua transaksi DML/DDL ke dalam redo log buffer SGA dalam bentuk entri redo. Pernyataan individu dalam suatu transaksi akan menghasilkan satu atau lebih dari satu entri redo. Semua entri pengulangan ini secara kolektif disebut vektor perubahan atau vektor pengulangan.

Setiap entri redo terdiri dari pernyataan redo dan pernyataan undo misalnya:

TABLE EMP
Empno Nama

Deptno
1 Jhon 10
2 Tony 20
3 Laura 50
4 Harimau 10
5 Scott 10
sql>delete empno from emp where deptno=10;

Dalam contoh di atas, tabel emp memiliki 3 record untuk deptno=10. Jadi Oracle akan membuat 3 entri redo untuk pernyataan di atas dan entri ini akan direkam ke buffer redo log. 3 entri pengulangan ini secara kolektif disebut vektor perubahan atau vektor pengulangan.

Vektor perubahan tidak lain adalah sejumlah baris yang terpengaruh oleh satu operasi. Redo log buffer menangkap transaksi pengguna dan juga menangkap efek pembatalan (undo statement) untuk transaksi tersebut.

Kerja proses LGWR

Karena ukuran buffer redo log kecil yang tidak dapat berkembang secara dinamis, entri redo yang direkam ini harus ditulis secara berkala ke disk ke dalam file redo log online. Ini sering disebut pembilasan buffer redo log dan tugas menulis entri redo ini ke disk dilakukan oleh proses LGWR.

Kapan LGWR menulis entri redo ke disk?

LGWR cukup agresif dalam menulis entri ini ke disk. Di bawah ini adalah kejadian ketika LGWR menulis entri redo ke disk.

  • Bila ukuran buffer 1/3 penuh
  • Bila ada 1 MB vektor perubahan yang tersedia di buffer redo log yang menunggu untuk ditulis
  • Setiap 3 detik
  • Setiap kali ada pos pemeriksaan
  • Saat pengguna melakukan transaksinya

Parameter untuk mengatur ukuran buffer redo log

log_buffer=x byte
Struktur Redo Log Buffer

Arsitektur redo terdiri dari 3 hal

  1. Ulangi Utas (logis)
  2. Grup Redolog(Logical)
  3. Berkas anggota Redolog (Fisik)

1. Apa yang dimaksud dengan utas redo log?

  • Saat membuat file kontrol diberikan oleh parameter “MAXINSTANCES”.
  • Sebuah thread redo terdiri dari grup redo. Utas ulang harus diaktifkan agar dapat beroperasi.
  • Di lingkungan RAC, Anda dapat mengikat thread redo ke instance tertentu menggunakan parameter init.ora “thread”.

Dalam database non-RAC, sebagian besar akan ada satu utas (utas =1)

2. Memahami Grup Redo log dan statusnya?

-Saat membuat file kontrol, itu diberikan sebagai parameter "MAXLOGFILES".
-Grup redo log adalah kumpulan file anggota redo log yang identik.
-Tetapi untuk toleransi kesalahan yang lebih baik, biasanya menyimpan dua file anggota redo log di setiap grup redo log.
-Jika salah satu hilang, itu tidak berdampak. File anggota redo log identik (salinan cermin)
LGWR menulis ke semua anggota grup redo log yang diberikan secara paralel
Pada titik waktu tertentu, proses LGWR menulis hanya ke satu grup redo log. Grup redo log diperbaiki berarti file anggota redo log tidak dapat tumbuh secara dinamis.
Grup redo log tempat proses LGWR sedang menulis terlihat dengan status "saat ini"
Setelah grup redo log penuh maka proses LGWR akan mengganti grup redo log berikutnya.
Grup sebelumnya akan menunjukkan status "AKTIF" dan setelah beberapa waktu statusnya akan menjadi "TIDAK AKTIF"
SAAT INI => AKTIF => TIDAK AKTIF => LANCAR => AKTIF => TIDAK AKTIF …………………………………
SAAT INI status berarti Oracle sedang menulis di buffer ini
AKTIF Pos pemeriksaan entri ulang dalam buffer ini sedang menunggu
INAKTIF status berarti redo log telah diperiksa dan dapat segera ditimpa.
Anda tidak dapat mengubah ukuran grup redo log setelah dibuat tetapi Anda selalu menjatuhkan dan membuat ulang grup redo log dengan ukuran yang berbeda. Anda tidak dapat menghapus grup redo log dengan status "CURRENT" atau "ACTIVE".

Bagaimana cara mengganti grup redo log?

Biasanya LGWR secara otomatis beralih di antara grup redo log tetapi Anda dapat secara manual beralih dari satu grup redo log ke grup redo log lainnya menggunakan perintah.

sql>alter system switch logfile ;

Setiap kali LGWR mengambil grup redo log baru dan memberikan nomor yang meningkat secara monoton ke grup redo log yang disebut "Log sequence number" atau "sequence#". Anda dapat menanyakan metadata grup redo log menggunakan view:- v$log Redo log groups ditulis menggunakan ukuran blok disk fisik (sektor 512 byte)

Cara menambahkan grup redo log baru

sql>alter database add logfile group 3 ('/path/to/member1.log', '/path/to/member2.log') size 100m reuse;

Di sini arti dari reuse mengatakan, gunakan kembali file member 1.log atau file member2.log jika sudah ada di jalur yang sama.

Cara menghapus grup log redo

Anda dapat menghapus grup redo log asalkan statusnya tidak CURRENT atau ACTIVE. Juga setelah menerapkan perintah ini, jumlah grup redo log yang tersedia harus 2 atau lebih.

sql>alter database drop logfile groups 3;

3. Redo Log file anggota (Fisik)

Saat membuat file kontrol, itu diberikan oleh parameter "MAXLOGMEMBERS". File anggota redo log tersedia secara fisik di tingkat OS. Ukuran file ditetapkan pada saat pembuatan grup log ulang.

File tidak dapat tumbuh secara dinamis. LGWR menulis ke semua anggota grup redo log yang diberikan secara paralel.
File anggota dalam grup redo log adalah identik. Anda dapat menanyakan info status dari tampilan v$logfile

Bagaimana cara menambahkan anggota baru ke grup yang sudah ada?

sql>alter database add logfile member '/path/to/new/member1.log' to group 3;

Anda dapat mengeluarkan anggota dari grup asalkan tetap ada satu anggota dan status grup tidak terkini

sql>alter database drop logfile member '/path/to/member_to_be_deleted.log';

Untuk menanyakan detail pengalihan log redo
Anda dapat menanyakan v$log-history

sql>select count(*), trunc(first_time) from v$log_history;

grup untuk menimpa entri redo

Mengapa saya melihat “checkpoint tidak lengkap” di alert.log

Ketika LGWR tiba di grup redo log untuk menimpa entri redo dan pada saat itu jika pos pemeriksaan grup itu tertunda, Anda akan melihat pesan di log peringatan "checkpoint not complete" Karena ini LGWR tidak dapat langsung menimpa grup redo log.

Oleh karena itu Oracle akan memicu "pos pemeriksaan" yang akan membersihkan buffer kotor yang disebabkan oleh entri ulang ke disk. Hanya setelah ini LGWR dapat menimpa untuk mengulang buffer. Artinya LGWR harus menunggu beberapa waktu yang tidak baik. Untuk mengatasinya, tambahkan lebih banyak grup redo log dan/atau tambah ukuran grup redo log.

Kami berharap detail kami di atas akan membantu Anda memperjelas pemahaman Anda tentang buffer redo log.

Ini adalah akhir dari tutorial, pemahaman redo log group vs file vs member.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tingkat Isolasi SNAPSHOT

  2. Alat online untuk mencoba desain dan kueri SQL

  3. T-SQL Selasa #64 :Satu Pemicu atau Banyak?

  4. Repositori Basis Data Uji IRI-Windocks

  5. CREATE TABLE in SQL – Semua yang Perlu Anda Ketahui Tentang Membuat Tabel di SQL