Selasa, 22 Juni 2010

Recycle Bin di Oracle


Apa itu Recycle Bin?


Oracle memperkenalkan fitur "Recycle Bin" pada Oracle 10g yang digunakan untuk menyimpan semua objek database yang sudah di-drop. Jika suatu tabel di-drop maka semua objek yang berasosiasi dengan tabel tersebut seperti constraint, index, dll akan juga tersimpan di recycle bin.


Mengapa Recycle Bin?


Ketika user menghapus tabel yang cukup penting --secara tidak sengaja tentunya-- dan itu masih dibutuhkan secepatnya.


Oracle 9i memperkenalkan konsep flashback query untuk menerima data dari suatu titik di masa lalu, namun tidak bisa menerima query dari operasi DDL seperti drop table. Cara satu-satunya adalah membuat kembali tabel tersebut dari awal. Namun dengan fitur Recycle Bin pada Oracle 10g, user dapat dengan mudah mengembalikan objek database yang sudah terhapus.


Mengaktifkan/Menonaktifkan Recycle Bin


Untuk melihat aktif tidaknya Recycle Bin dapat dilakukan perintah berikut :


SQL > SELECT Value FROM V$parameter WHERE Name = 'recyclebin';
     Value
     -----
     On


Jika value bernilai "On" maka Recycle Bin aktif, sebaliknya jika value bernilai "Off" maka Recycle Bin Belum Aktif. 
Berikut adalah perintah untuk mengaktifkan / menonaktifkan Recycle Bin


SQL > ALTER SYSTEM SET recyclebin = ON;
atau
SQL > ALTER SESSION SET recyclebin = ON;
SQL > ALTER SYSTEM SET recyclebin = OFF;
atau
SQL > ALTER SESSION SET recyclebin = OFF;


Contoh Kasus 1 :



SQL > CREATE TABLE TEST_RBIN(VAL   NUMBER);
SQL > INSERT INTO TEST_RBIN(VAL) VALUES(10);
SQL > COMMIT;
SQL > DROP TABLE TEST_RBIN;
SQL > SHOW RECYCLEBIN;
ORIGINAL NAME      RECYCLEBIN NAME                 OBJECT TYPE           DROP TIME
----------------   ------------------------------  --- ------------     -------------------
TEST_RBIN              BIN$7fq9jEy8RSadimoE4xGjWw==$0  TABLE          2010-05-26:11:27:12


Me-restore Objek


SQL > FLASHBACK TABLE <> TO BEFORE DROP;


Contoh,


SQL > FLASHBACK TABLE TEST_RBIN TO BEFORE DROP;
SQL > SELECT * FROM TEST_RBIN;
       VAL
       ---
       10


Kita dapat mengubah nama tabel yang akan di-restore


SQL > FLASHBACK TABLE << Dropped Table Name >> TO BEFORE DROP RENAME TO <>;
SQL > FLASHBACK TABLE TEST_RBIN TO BEFORE DROP RENAME TO TEST_RBIN1;


Contoh kasus 2:


Kita dapat me-restore berbagai versi dari suatu tabel, jika tabel tersebut dibuat dan dihapus lebih dari sekali. Ketika kita me-restore tabel pada Recycle Bin, tabel diurutkan secara Descending.Untuk lebih jelasnya, kita lihat contoh dibawah :


SQL > CREATE TABLE TEST_RBIN (COL1 NUMBER);
SQL > INSERT INTO TEST_RBIN VALUES (1);
SQL > COMMIT;
SQL > DROP TABLE TEST_RBIN;
SQL > CREATE TABLE TEST_RBIN (COL1 NUMBER);
SQL > INSERT INTO TEST_RBIN VALUES (2);
SQL > COMMIT;
SQL > DROP TABLE TEST_RBIN;
SQL > CREATE TABLE TEST_RBIN (COL1 NUMBER);
SQL > INSERT INTO TEST_RBIN VALUES (3);
SQL > COMMIT;
SQL > DROP TABLE TEST_RBIN;
SQL > SHOW RECYCLEBIN;
ORIGINAL NAME    RECYCLEBIN NAME                  OBJECT TYPE      DROP TIME
---------------- ------------------------------  ------------     -------------------
TEST_RBIN        BIN$2e51YTa3RSK8TL/mPy+FuA==$0   TABLE         2010-05-27:15:23:43
TEST_RBIN        BIN$5dF60S3GSEO70SSYREaqCg==$0   TABLE         2010-05-27:15:23:43
TEST_RBIN        BIN$JHCDN9YwQR67XjXGOJcCIg==$0 TABLE         2010-05-27:15:23:42
SQL > FLASHBACK TABLE TEST_RBIN TO BEFORE DROP RENAME TO TEST_RBIN1;
SQL > FLASHBACK TABLE TEST_RBIN TO BEFORE DROP RENAME TO TEST_RBIN2;
SQL > FLASHBACK TABLE TEST_RBIN TO BEFORE DROP RENAME TO TEST_RBIN3;
SQL > SELECT * FROM TEST_RBIN1;
      COL1
----------
         3


SQL > SELECT * FROM TEST_RBIN2;
      COL1
----------
         2


SQL > SELECT * FROM TEST_RBIN3;
      COL1
    ----------
         1


Mengosongkan Recycle Bin

Untuk mengosongkan Recycle Bin dapat digunakan perintah PURGE TABLE. 
Untuk menghapus tabel yang ada di dalam Recycle Bin :


SQL > PURGE TABLE << Table_Name >>;


Untuk menghapus index :


SQL > PURGE  INDEX
<< Index_Name >>;



Perintah diatas hanya akan menghapus index saja, tidak tabel sumbernya.
Untuk menghapus tablespace :


SQL > PURGE TABLESPACE
<< Tablespace_Name >>;



Untuk menghapus tablespace dari user tertentu :


SQL > PURGE TABLESPACE 
<< Tablespace_Name >> USER << User Name >>;



Untuk mengosongkan Recycle Bin secara keseluruhan :


SQL > PURGE Recyclebin;


Kita juga dapat langsung menghapus tabel tanpa harus menyimpannya di Recycle Bin.


SQL > DROP TABLE  << Table_Name >> PURGE;


Contoh :


SQL >  CREATE TABLE TEST_RBIN (COL1 NUMBER);
SQL >  INSERT INTO TEST_RBIN VALUES (1);
SQL > COMMIT;
SQL > DROP TABLE TEST_RBIN;


Melihat isi dari Recycle Bin.


SQL > SHOW RECYCLEBIN;
ORIGINAL NAME    RECYCLEBIN NAME                  OBJECT TYPE      DROP TIME
---------------- ------------------------------  ------------     -------------------
TEST_RBIN        BIN$2e51YTa3RSK8TL/mPy+FuA==$0   TABLE         2010-05-27:15:23:43
SQL > PURGE TABLE TEST_RBIN; atau
SQL > PURGE TABLE “BIN$2e51YTa3RSK8TL/mPy+FuA==$0”
SQL > SHOW RECYCLEBIN;


Ketika tabel pada Recycle Bin sudah dihapus maka kita tidak bisa lagi me-restore menggunakan perintah Flashback.


Sumber : http://orafaq.com/node/2397



Tidak ada komentar: