By: Cha-Cha D AceWell
Sebagai DBA, tugas kita adalah mengamankan atau menjaga data dari kerusakan sehingga database bisa memberikan data yang valid. Dalam operasional bisa saja user melakukan kesalahan dalam melakukan update data sehingga data yang disajikan menjadi salah. Jika perubahan belum dibuat permanen (commit) perubahan tersebut masih bisa dibatalkan (rollback). Tentunya akan menjadi masalah besar jika perubahan baru disadari setelah beberapa jam, hari atau bulan. User yang mengupdate juga sudah lupa kapan melakukan kesalahan update. Tentunya ini akan menambah pusing DBA karena untuk mencari kapan persisnya kesalahan update itu terjadi.
Untuk Oracle 10g, DBA gak perlu pusing lagi, karena Oracle 10g menyediakan fitur Flashback Query, Flashback Version Query dan Flashback Transaction Query untuk melakukan pelacakan perubahan data yang terjadi.
- Flashback Query
- Flashbak Version Query
- Flashback Transaction Query
Login ke database sebagai user SCOTT
CONNECT SCOTT/TIGER;
create table peserta (ID NUMBER(4), NAMA CHAR(15), NILAI NUMBER(4)) TABLESPACE USERS;
INSERT INTO PESERTA VALUES(1,'BUDI',60); INSERT INTO PESERTA VALUES(2,'DINA',75); COMMIT;– Tunggu sekitar 1 menit
UPDATE PESERTA SET NILAI=65 WHERE ID=1; INSERT INTO PESERTA VALUES(3,'MAWAR',68); COMMIT;– Tunggu sekitar 1 menit
UPDATE PESERTA SET NILAI=70 WHERE ID=1; INSERT INTO PESERTA VALUES(4,'MAWARDI',80); COMMIT;– Lihat data di tabel PESERTA
SQL> SELECT * FROM PESERTA; ID NAMA NILAI ---------- --------------- ---------- 1 BUDI 70 2 DINA 75 3 MAWAR 68 4 MAWARDI 80– Tunggu sekitar 1 menit
– User melakukan kesalahan UPDATE.
UPDATE PESERTA SET NILAI=90; COMMIT;– sehingga data pada tabel PESERTA menjadi :
SQL> SELECT * FROM PESERTA;
ID NAMA NILAI ---------- --------------- ---------- 1 BUDI 90 2 DINA 90 3 MAWAR 90 4 MAWARDI 90– FLASHBACK VERSION QUERY berdasarkan WAKTU
COL AWAL FORMAT A20 COL AWAL FORMAT A20 COL NAMA FORMAT A5 SET LINESIZE 120 SELECT ID,NAMA,NILAI, VERSIONS_STARTSCN SCA_AWAL, VERSIONS_ENDSCN SCN_AKHIR, TO_CHAR(VERSIONS_STARTTIME,'DD-MM-YY:HH24:MI:SS') AWAL, TO_CHAR(VERSIONS_ENDTIME,'DD-MM-YY:HH24:MI:SS') AKHIR FROM PESERTA VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE WHERE ID=1;
ID NAMA NILAI AWAL AKHIR ----- ----- --------- ----------------- ----------------- 1 BUDI 90 06-03-09:09:25:19 1 BUDI 70 06-03-09:09:23:37 06-03-09:09:25:19 1 BUDI 65 06-03-09:09:20:55 06-03-09:09:23:37 1 BUDI 60 06-03-09:09:20:55– FLASHBACK VERSION QUERY berdasarkan SCN
SELECT ID,NAMA,NILAI, VERSIONS_STARTSCN SCA_AWAL, VERSIONS_ENDSCN SCN_AKHIR FROM PESERTA VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE WHERE ID=1;
ID NAMA NILAI SCA_AWAL SCN_AKHIR ----- ----- --------- ---------- ---------- 1 BUDI 90 1380320 1 BUDI 70 1380102 1380320 1 BUDI 65 1379304 1380102 1 BUDI 60 1379304– FLASHBACK QUERY
SELECT * FROM PESERTA AS OF TIMESTAMP TO_TIMESTAMP('06-MAR-2009:09:24:00','DD-MON-YYYY:HH24:MI:SS');
ID NAMA NILAI ------ --------------- ---------- 1 BUDI 70 2 DINA 75 3 MAWAR 68 4 MAWARDI 80
SELECT * FROM PESERTA AS OF SCN 1380102;
ID NAMA NILAI ------ --------------- ---------- 1 BUDI 70 2 DINA 75 3 MAWAR 68 4 MAWARDI 80
SQL> SELECT * FROM PESERTA 2 AS OF TIMESTAMP TO_TIMESTAMP('04-DEC-2008','DD-MON-YYYY');
ID NAMA NILAI ---------- ---------- ---------- 1 BUDI 80– FLASHBACK TABLE
SQL> ALTER TABLE PESERTA ENABLE ROW MOVEMENT;
Table altered.– KEMBALIKAN TABEL KE KONDISI JAM ‘06-MAR-2009:09:24:00′
– ATAU SCN 1380102
FLASHBACK TABLE PESERTA TO TIMESTAMP TO_TIMESTAMP('06-MAR-2009:09:24:00','DD-MON-YYYY:HH24:MI:SS');Flashback complete.
– ATAU BERDASARKAN SCN
– FLASHBACK TABLE PESERTA TO SCN 1380102
SELECT * FROM PESERTA;
ID NAMA NILAI ------ --------------- ---------- 1 BUDI 70 2 DINA 75 3 MAWAR 68 4 MAWARDI 80Jika Anda ingin mengembalikan semua kondisi database ke waktu sebelumnya gunakan Flashback Database.
Selamat Mencoba
0 Responses to "Melacak Perubahan Data"