Oracle Flashback Technology (Recycle bin)

Salah satu feature Oracle 10g (ke atas) yang jadi andalan saya adalah Oracle Flashback Technology. Dengan Oracle Flashback, kita bisa me-restore (recovery) data dengan sangat mudah.

Sebagai contoh, ketika kita secara tidak sengaja menghapus sebagian record di file Excel, untuk mengembalikannya, kita cukup klik tombol UNDO. Kita klik UNDO sekian kali untuk kembali ke kondisi data yang kita inginkan. Ketika kita tidak sengaka menghapus (drop/delete) file, untuk mengembalikan file tersebut kita cukup me-restore-nya dari recycle bin.

Nah, sederhanya, Oracle Flashback Technology menyediakan feature seperi UNDO dan RECYCLE BIN di Windows. Enak, bukan?

Macam-macam Oracle flashback:

1. Oracle Flashback Query.
Berguna untuk melihat (query) isi tabel di masa lalu. Misalkan siang ini kita baru saja men-delete atau update record. Karena terkanjur commit, kita tidak bisa melakukan rollback. Dengan Oracle Flashback Query, kita bisa melihat record (isi tabel) tadi pagi sebelum kita delete atau update. Berikut ini contoh command-nya (Catatan: nama tabel yang saya pakai untuk contoh di artikel ini adalah TB):

SQL> SELECT * FROM TB AS OF TIMESTAMP
     TO_TIMESTAMP('2009-06-03 06:08:03', 'yyyy-mm-dd hh24:mi:ss');
SQL> SELECT * FROM TB AS OF TIMESTAMP
     TO_TIMESTAMP('2009-06-03 06:08:03', 'yyyy-mm-dd hh24:mi:ss') where nomor=3;

Keterbatasan:

  1. Karena feature ini memanfaatkan UNDO segment di UNDO tablespace, maka size dari UNDO tablespace sangat mempengaruhi sampai berapa lama masa lalu yang bisa dikembalikan lagi. Semakin besar UNDO tablespace maka semakin besar (lama) masa lalu yang bisa dikembalikan.Bila data yang diquery sudah tidak ada lagi di UNDO tablespace maka akan muncul error berikut:
    ORA-08180: no snapshot found based on specified time
  2. Batas yang bisa query adalah setelah operasi DDL (data definition language) terakhir. Contoh DDL adalah mengubah definisi tabel (alter table, add column, alter column, truncate, dll). Bila data yang di-query ada pada waktu sebelum DDL terakhir (last DDL) maka akan muncul error berikut:
    ORA-01466: unable to read data - table definition has changed

2. Oracle Flashback Table.
Berguna untuk mengembalikan kondisi (isi) tabel seperti kondisi di masa lalu. Seperti contoh di atas, kita bisa mengembalikan tabel TB sebagimana tadi pagi sebelum kita melakukan delete atau update record. Berikut ini perintahnya:

SQL> FLASHBACK TABLE TB TO TIMESTAMP
     TO_TIMESTAMP('2009-06-03 06:08:03', 'yyyy-mm-dd hh24:mi:ss');

Syaratnya: “ROW MOVEMENT” harus di-enable. Berikut ini command-nya:

SQL> ALTER TABLE TB ENABLE ROW MOVEMENT;

Kalau tidak di-enable, bila menjalankan command FLASHBACK TABLE akan muncul error message berikut:

ORA-08189: cannot flashback the table because row movement is not enabled

Keterbatasan: sama dengan Oracle Flashback Query.

User yang tidak punya ROLE DBA, agar bisa melakukan flashback harus mempunyai privilege FLASHBACK ANY TABLE. Contoh memberi privilege ke user EMP:

SQL> grant FLASHBACK ANY TABLE to EMP;

3. Oracle Flashback Drop.
Berguna untuk mengembalikan tabel yang telah di-drop. Kalau di Windows adalah restore file dari recycle bin. Command untuk melihat isi dari recycle bin:

SQL> select * from dba_recyclebin;
SQL> select * from user_recyclebin;
SQL> select * from recyclebin;

Restore tabel:

SQL> FLASHBACK TABLE TB TO BEFORE DROP;

Kita juga bisa me-restore dan mengubah nama tabel tersebut:

SQL> FLASHBACK TABLE TB TO BEFORE DROP RENAME TO TB_OLD;

Keterbatasan:
Setelah (misalkan) tabel TB di-drop, secara physic data masih ada di tablespace, tidak dihapus, hanya diberi tanda (flag) bahwa space yang dipakai oleh tabel tersebut sewaktu-waktu bisa dihapus dan dipakai untuk yang lain. Ketika space kosong di tablespace sudah habis, sementara dibutuhkan space lagi untuk data yang baru masuk, maka space dari tabel TB tersebut akan dibersikan dan siap dipakai untuk data baru. Jadi, sampai berapa lama tabel akan disimpan di recycle bin? Ya tergantung ketersediaan free space di tablespace yang bersangkutan.

Catatan:
Berkaitan dengan truncate, dalam beberapa hal saya menghindari truncate dan lebih memilih drop table. Karena truncate adalah DDL maka kita tidak bisa mengembalikan data (table) pada kondisi sebelum truncate. Sementara itu drop table bisa di-restore kembali oleh Oracle Flashback Drop.

4. Oracle Flashback Database.

Merupakan alternatif lain dari database Point-In-Time Recovery.
Kalau sempat akan saya bahas di lain kesempatan.

Referensi

Oracle® Database Backup and Recovery Basics 10g Release 2 (10.2)

This entry was posted in Backup & Recovery and tagged , , , , , , . Bookmark the permalink.

4 Responses to Oracle Flashback Technology (Recycle bin)

  1. Akhmal says:

    Alhamdulillah sudah ada update terbaru, dengan wajah baru pula… 🙂
    ditengah kesibukan yang makin menggunung, pak Rohmad masih sempat berbagi ilmu…
    diupdate terus pak, blog-nya… ^_^

    -Akhmal-

  2. imanka says:

    das finde ich sehr gut und informatif, danke.

  3. haris says:

    Two thumbs up for Bro Rohmad… hehehe…

  4. ali says:

    Pak, saya sudah coba fitur flashback di database saya, tapi saya pake oracle 9i dan masih gagal. apakah pada oracle 9i terdapat fitur serupa??
    mohon pencerahannya. terimakasih

Leave a Reply

Your email address will not be published. Required fields are marked *