Mengembalikan tabel terhapus dengan recyclebin Oracle

Melanjutkan tutorial sebelumnya yaitu cara menggunakan Oracle  dan pengunaan fitur oracle. Pada pembahasan kali ini mengenai pengembalian tabel yang terhapus pada oracle dengan fitur Flashback. 

Tentunya sebagai pemula kita pernah melakukan ujicoba menghapus tabel. Hal ini akan menjadi lebih fatal jika table yang terhapus dilakukan dengan tidak sengaja dan data pada table membuat kita kehilangan suatu hal yang sanagt berharga, misal pekerjaan sebagai seorang DBA/Developer.

Ketika kita menghapus tabel database, Pertanyaan yang sering muncul adalah “Apakah table yang terhapus itu dapat dikembalikan? Jika bisa, bagaimana cara mengembalikannya? Apa efeknya terhadap isi atau entitas database?

Jawabannya, YA! dengan Oracle kita dapat mengembalikan table yang sengaja ataupun tidak sengaja terhapus di database.

Cara melakukan recover table database oracle yang terhapus bisa menggunakan fitur:
flashback before drop;
Fitur ini menggunakan teknologi recycle bin yang bisa diaktifkan pada database oracle. Jika recycle bin parameter di-set ON, table yang terhapus tidak akan langsung dimusnahkan tetapi akan ditampung di penampungan sementara bernama recycle bin.

Fitur recycle bin sendiri baru ada sejak Oracle Database 10g dan sudah aktif by default. Tetapi jika sebelumnya anda pernah mematikan fitur ini dan ingin mengaktifkan kembali bisa dengan mengeksekusi quey 
alter system set recyclebin=on scope=both;
Langsung saja kita lakukan Ujicoba Praktikum
Kita cek terlebih dahulu tabel yang kita miliki
select * from tab;
Hasil seperti berikut
TNAME			       TABTYPE	CLUSTERID
------------------------------ ------- ----------
DEPARTMENTS TABLE
DIVISI        TABLE
DOKTER  TABLE
EMPLOYEES        TABLE
EMP_DETAILS_VIEW    VIEW
JOBS        TABLE
JOB_HISTORY        TABLE
LOCATIONS        TABLE
OBAT        TABLE
PASIEN        TABLE
PENYAKIT        TABLE
REGIONS        TABLE
RESEP        TABLE
SYS_TEMP_FBT    TABLE
Kita coba menghapus salah satu tabel dengan nama table "RESEP" melalui SQLPLUS
drop table RESEP;
Kita cek ULANG tabel yang kita miliki
select * from tab;
Hasil seperti berikut
TNAME			       TABTYPE	CLUSTERID
------------------------------ ------- ----------
DEPARTMENTS        TABLE
DIVISI        TABLE
DOKTER        TABLE
EMPLOYEES        TABLE
EMP_DETAILS_VIEW    VIEW
JOBS        TABLE
JOB_HISTORY        TABLE
LOCATIONS        TABLE
OBAT        TABLE
PASIEN        TABLE
PENYAKIT        TABLE
REGIONS        TABLE
SYS_TEMP_FBT    TABLE
Kita cek pada recycle bin dengan query
SELECT OBJECT_NAME, ORIGINAL_NAME, OPERATION, TYPE, TS_NAME, CREATETIME FROM RECYCLEBIN WHERE ORIGINAL_NAME='RESEP';
Hasilnya sebagai berikut
OBJECT_NAME		       ORIGINAL_NAME			OPERATION
------------------------------ -------------------------------- ---------
TYPE   TS_NAME CREATETIME
------------------------- ------------------------------ -------------------
BIN$qBZK+EFTVzbgUAB/AQANKw==$0 RESEP DROP
TABLE   USERS 2020-06-05:06:07:44
Kita masih bisa melakukan select data pada tabel resep pada recycle bin dengan cara
select * from "BIN$qBZK+EFTVzbgUAB/AQANKw==$0";
Langkah untuk mengembalikan tabel resep dengan query
flashback table RESEP to before drop;
atau kita bisa mengembalikan dengan nama yang baru dengan query
flashback table RESEP to before drop rename to resep_2;
Simple kan caranya? ok kita lanjut ke cara yang lebih advance
Aktifkan dulu servicenya
alter table dokter enable row movement;
kita bisa mengembalikan tabel atau database dari masa yang lebih lampau. Caranya sebagai berikut:
perintahuntuk menampilkan jumlah log history 
select current_scn FROM v$database; 
hasilnya
CURRENT_SCN
-----------
   12703343
perintah melihat waktu dari no record
SELECT scn_to_timestamp(12703343) FROM dual;
hasilnya
SCN_TO_TIMESTAMP(12703343)
---------------------------------------------------------------------------
14-JUN-20 07.14.24.000000000 PM
Perintah mengembalikan database
FLASHBACK DATABASE TO TIMESTAMP TO_TIMESTAMP('14-JUN-20 07.14.24′,’DD-MM-YYYY:HH24:MI:SS’);
atau
FLASHBACK DATABASE TO SCN 12703343;
Perintah mengembalikan tabel
FLASHBACK TABLE RESEP TO TIMESTAMP TO_TIMESTAMP('14-JUN-20 07.14.24′,’DD-MM-YYYY:HH24:MI:SS’);
atau
FLASHBACK TABLE RESEP TO SCN 12703343;
Recycle bin bisa kita kosongkan manual dengan quey:
purge recyclebin;
atau kita juga dapat menghapus tabel dengan spesifik dengan quey
PURGE TABLE "BIN$qBZK+EFTVzbgUAB/AQANKw==$0";
Semoga bermanfaat.

No comments for "Mengembalikan tabel terhapus dengan recyclebin Oracle"