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

Apa itu Undo dan redo di database Oracle

Banyak orang sering bertanya kepada saya

Apa itu Undo dan redo di database Oracle ? Apa kegunaannya?

Saya mencoba untuk menghapus semua keraguan tentang hal itu di sini di pos

Apa itu Undo di Oracle?

Undo disimpan di Undo tablespace di database. Ini menyimpan nilai sebelumnya dari blok data yang diubah setiap kali kami mengeluarkan pernyataan insert, update, atau delete (operasi DML). Ketika kami mengeluarkan pernyataan DML apa pun, blok yang diubah disimpan dalam cache buffer dan nilai sebelumnya untuk blok yang diubah itu di segmen UNDO. Setiap kali kami mengeluarkan perintah ROLLBACK, ia menggunakan segmen undo untuk mengembalikan ke nilai sebelumnya .

Ini sama seperti Undo di Notepad atau Microsoft word

Pengurangan untuk penghapusan lebih dari itu untuk penyisipan. Itu karena pembatalan untuk penghapusan  sebenarnya adalah penyisipan ulang seluruh baris. Jadi, ia memiliki nilai pertahankan untuk setiap kolom dari baris untuk dapat "Mengurungkan" penghapusan.
Sebaliknya, pembatalan untuk sisipan adalah Penghapusan baris oleh ROWID – yang tidak harus dipertahankan nilai yang dihapus.

Undo juga memberi kami  konsistensi baca kepada pengguna karena dia hanya dapat melihat nilai sebelumnya hingga transaksi dilakukan. Untuk menjelaskannya, saya akan memberikan satu contoh

Pengguna A memulai kursor pilih pada tabel pada waktu t. Kursor akan berjalan selama beberapa waktu

Pengguna B mulai memperbarui tabel yang sama pada waktu t’.

Sekarang  pengguna A harus mendapatkan versi tabel yang konsisten untuk dibaca pada waktu t. Namun pemblokiran tersebut diperbarui  oleh Pengguna B setelah beberapa waktu.

Jadi Oracle menggunakan segmen Urungkan untuk memulihkan citra sebelumnya dari  pembaruan untuk blok tersebut dari segmen Urungkan untuk mendapatkan tampilan konsisten yang dibaca

Undo tidak segera dimusnahkan setelah komit atau rollback karena akan digunakan dalam mekanisme Baca yang konsisten.

Mereka juga digunakan dalam kueri kilas balik untuk melihat data lama yang dikomit menggunakan undo restore.

Berapa lama membatalkan data yang disimpan dalam database?
Oracle memberikan fleksibilitas berapa lama data undo harus disimpan dengan bantuan parameter undo_retention. Kita dapat mengatur parameter undo_management ke otomatis untuk Oracle untuk mengelola retensi undo (default), atau bahkan mengatur nilai ini secara manual dan nilainya harus lebih besar dari waktu yang dibutuhkan oleh kueri yang paling lama berjalan di database Anda. Dalam 11g Ke Depan, Oracle menyetel parameter ini secara otomatis sesuai dengan ukuran tablespace undo

Apa itu Transaksi ?
Transaksi adalah kumpulan pernyataan bahasa manipulasi data SQL (DML) yang diperlakukan sebagai unit logis.
Kegagalan pernyataan apa pun mengakibatkan transaksi "diurungkan".Jika semua pernyataan diproses, SQLPlus atau aplikasi pemrograman akan mengeluarkan COMMIT untuk membuat perubahan basis data permanen. Transaksi secara implisit dilakukan jika pengguna terputus dari Oracle secara normal.
Pemutusan yang tidak normal menghasilkan rollback transaksi. Perintah ROLLBACK digunakan untuk membatalkan (tidak melakukan) transaksi yang ada kemajuan.

Apa yang dimaksud dengan pengulangan di Oracle?

Redo singkatan dari merekam pekerjaan apa yang telah dilakukan,Agar pekerjaan tidak hilang. REDO log digunakan dalam pemulihan. Setiap kali kami menyisipkan ke dalam  database, hal itu akan terjadi

  1. Sisipkan baris dalam buffer
  2. buat undo di buffer
  3. Tulis perubahan redo yaitu menyisipkan baris dalam log redo
  4. Tulis perubahan redo untuk segmen undo di log redo

Jadi setiap operasi DML yang dilakukan dalam database dicatat dalam log redo untuk tujuan pemulihan

Redo pertama kali ditulis dalam redo log buffer di SGA. Proses log writer (LGWR) menulis perubahan ini dari 'redo log buffer' menjadi redo log files di disk

Redo logs membantu memulihkan kehilangan data karena kesalahan manusia, kesalahan OS, kegagalan hard disk.

Pengulangan log sangat penting  untuk pengoperasian database karena menyediakan toleransi kesalahan.

Sebelum menulis perubahan pada tabel  dalam datafile, Oracle terlebih dahulu menulis redo buffer ke file redo logs .

kami memiliki opsi tanpa pencatatan yang tersedia untuk operasi tertentu  untuk tidak menghasilkan buffer ulang.

Cara Kerja Pengulangan Log
Server Oracle secara berurutan mencatat semua perubahan yang dilakukan pada database di buffer log ulang. Entri redo ditulis dari redo log buffer ke salah satu grup redo log online yang disebut grup redo log online saat ini oleh proses LGWR. LGWR menulis di bawah
situasi berikut:
• Saat transaksi dilakukan
• Saat redo log buffer menjadi sepertiga penuh
• Saat ada lebih dari satu megabyte record yang diubah di buffer redo log
• Sebelum DBWn menulis blok yang dimodifikasi dalam cache buffer database ke file data
Redo log digunakan secara siklik. Setiap grup file redo log diidentifikasi dengan nomor urutan log yang ditimpa setiap kali log digunakan kembali. LGWR menulis ke file redo log online secara berurutan. Saat grup redo log online saat ini terisi, LGWR mulai menulis ke grup berikutnya. Ini disebut saklar log. Ketika file log redo online terakhir yang tersedia telah terisi, LGWR kembali ke grup log redo
online pertama dan mulai menulis lagi.

Artikel Terkait

cara menemukan sesi yang menghasilkan banyak pengulangan
mengubah file log sakelar sistem v/s arsip log saat ini
membuat ulang file log pengulangan di database Oracle
pertanyaan wawancara senior oracle dba


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mengubah baris menjadi kolom di tabel Oracle

  2. Cara menanyakan kolom CLOB di Oracle

  3. Bagaimana cara menggunakan fungsi LISTAGG Oracle dengan filter unik?

  4. Oracle PL/SQL - Tingkatkan Pengecualian Buatan Pengguna Dengan SQLERRM Kustom

  5. Cara mengkloning pengguna di Oracle