Oracle Flashback Technology


Salah satu feature Oracle 10g (ke atas) yang 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.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s