Flashback: Tabel Di Masa Lalu


Aku menemukan cara menarik untuk ber-eksperimen dengan tabel di Oracle, yaitu mengembalikan isi tabel ke keadaan semula walaupun perubahan sudah di-commit. Seandainya saja aku sudah melakukan perubahan di tabel EMP pada jam 12, dan karena diburu-buru lapar, aku melakukan kesalahan fatal (secara logic). Setelah makan siang, aku dapat memeriksa seperti apa isi tabel tersebut pada jam 9 pagi, dengan query berikut:

SELECT * FROM EMP AS OF TIMESTAMP TO_TIMESTAMP(’29-09-2008 09:00:00′, ‘DD-MM-YYYY HH:MI:SS’);

Aku pernah mencoba mengembalikan isi tabel dengan Enterprise Manager Console. Berhubung kerjaanku bukanlah database administrator, hampir tidak mungkin bagiku untuk membuka EM Console. Tapi seandainya saja, user database yang diberikan padaku punya hak akses yang cukup, aku bisa memberikan query berikut ini untuk mengembalikan tabel ke jam 9 pagi:

ALTER TABLE EMP ENABLE ROW MOVEMENT;
FLASHBACK TABLE EMP TO TIMESTAMP TO_TIMESTAMP(’29-09-2008 09:00:00′, ‘DD-MM-YYYY HH:MI:SS’);

Tapi hati-hati: table yang sudah di-TRUNCATE tidak dapat dikembalikan, karena Oracle akan complain dengan pesan ‘unable to read data – table definition has changed’. Jika table langsung di-drop, maka masih dapat dikembalikan, dengan perintah seperti pada contoh berikut:

FLASHBACK TABLE EMP TO BEFORE DROP;

O ya, untuk membersihkan isi recyclebin guna memberikan lebih banyak freespace, gunakan perintah berikut ini:

PURGE RECYCLEBIN;

setelah itu, jika query ke recyclebin, hasilnya akan kosong:

SELECT * FROM RECYCLEBIN;

Untuk mengetahui siapa saja yang melakukan perubahan pada sebuah tabel, gunakan contoh query berikut ini:

SELECT commit_timestamp, logon_user FROM FLASHBACK_TRANSACTION_QUERY WHERE xid IN (
SELECT versions_xid FROM EMP VERSIONS BETWEEN TIMESTAMP TO_TIMESTAMP
( ’29-09-2008 09:00:00′, ‘DD-MM-YYYY HH:MI:SS’) AND TO_TIMESTAMP
( ’29-09-2008 12:00:00′, ‘DD-MM-YYYY HH:MI:SS’)
);

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: