2012/12/29

Oracle 11g Recycle bin(Geri Dönüşüm kutusu)

Recycle bin düşürülmüş objelerin bilgileri tutan bir çeşit veri dizin tablosudur. Silinmiş tablolar ve tablolara bağlı indexler,constraintler ve diğerleri gibi objeler silinmez.Kalıcı olarak silinmeden bu objeler hala kullanıcı olan kotası dahilinde yer kaplar.Her user kendine ait recycle bin vardır. SYS kullanıcısı ile girildiği zaman tüm kullanıcıların recycle bin görülür. Yani biraz daha basite indirgersek geri dönüşüm kutunuz açık durumda ise veritabanınızda tablo vb. objeleriniz hemen silinmez.Recycle bin kutusuna düşer.


    *SQL> SELECT * FROM RECYCLEBİN    veya
    *SQL> SHOW PARAMETER RECYCLEBİN;
Bu komutlarla geri dönüşüm kutusunda hangi objeler var görebiliriz.Eğer geri dönüşüm kutusu görevini yerine getirmiyorsa archivelog modda veritabanı tekrar kaldırmamız lazım.

  • Recycle bin etkinleştirme veya devre dışı bırakma;
Oracle 11g veritabanı kurulduğunda default olarak etkinleştirilmiştir.Geri dönüşüm çalışıyorken silinen objeler buraya düşer.Eğer aktiv değilse geri dönüşüm kutusu silinen objeler kalıcı olarak Oracle veritabanından silinir.Bu durumda flashback den yararlanmak mümkün değildir.
   *Recycle bin kutusunu kapatmak için;
     SQL> ALTER SESSİON SET RECYCLEBİN=OFF   veya
     SQL> ALTER SESSION SET RECYCLEBİN=OF SCOPE=SPFİLE;
   *Recycle bin kutusunu açmak için;
     SQL> ALTER SESSION SET RECYCLEBIN=ON veya
     SQL> ALTER SESSION SET RECYCLEBIN=ON SCOPE=SPFILE;
Eğer silinmiş bir tablo recyclebin deki "bin" adı yazıldığında tekrar çalışır.

  • Recycle bin içindeki objeleri izleme ve sorğulama;

İzleme amaçlı kullanılan sistem görünümlerinin bir amacı düşürülen tablonun geri dönüşüm kutusu içinde atılan yeni ismin yani "bin" sorgulamaktadır.Örnek vermek gerekirse, HR şemasından silinen Department tablosunun yeni sistem generik ismi tespit edilebilmektedir.Bu ismi şu sorguyla görebiliriz.
    SQL> select object_name,orginal_name from dba_recyclebin where owner='HR';
Aynı zamanda show recyclebin komutu kullanarak geri dönüşüm kutusu içeriği listelenebilmektedir.

  • Recycle bin objelerin kalıcı olarak silinmesi;

Geri dönüşüm kutusunda ki objelere gereksinim duyulmayacağı düşünüldüğünde PURGE komutu ile bu objeler kalıcı olarak silinir.Bu komutu şu şekilde kullanalım;
    SQL> PURGE TABLE TABLE_NAME;  veya
    SQL> PURGE TABLE TABLE_BIN;
Aynı zamanda geri dönüşüm kutusunda belirli bir tablesapace'e ait olan tüm objeler bu tablespace ismi kullanarak kaşıcı olarak silinebilir.Hatta tablespace birden fazla kullanıcı tarafından kullanılmaktaysa ilgili kullanıcı ismi belirtilerek o kullanıcıya ait objeler kalıcı olarak silinebilir.
    SQL> PURGE TABLESPACE TEST1;     veya
    SQL> PURGE TABLESPACE TEST1 USER TESTUSER;
Kullanıcıya ait tüm objeleri geri dönüşüm kutusundan silmek için kullanılan komut şöyledir.
    SQL> PURGE RECYCLEBIN;
SYSDBA rolüne sahip olunduğunda ise dba_recyclebin belirtilerak tüm geri dünüşüm boşaltılır.
    SQL> PURGE DBA_RECYCLEBIN;



  • Recycle bin kutusundan tabloların geri kurtarılması;

Geri kurtarma işlemi flashback teknolojisiyle yapılır.Bunun içinde veritabanımız archivelog modda olmalıdır.Geri dönüşümdeki objeleri almak için flashback table,to before drop komutu kullanılmaktadır.Yani tablonun orjinal ismi yada geri dönüşüm kutusundaki  "bin" ismi kullanılabilir.
   SQL> FLASHBACK TABLE TABLE_NAME TO BEFORE DROP;
En güzel şekilde falsh kullanmak recycle bin deki adı kullanarak yapılmalıdır.
   SQL> FLASHBACK TABLE RECYCLEBIN_NAME TO BEFORE DROP;
Eğer silinmiş bir table adında daha sonrada o table adında oluşturduysak flashback da getirilen adını degiştirmek gerekir.
   SQL> FLASHBACK TABLE TABLE_NAME TO BEFORE DROP;
   SQL> RENAME TO TABLE_NAME;

Bu yazımda gerekli SQL komutlarını şöyle sıralayalım;
   *show recyclebin
   *select * from recyclebin
   *select * from dba_recyclebin
   *purge table table_name
   *purge recyclebin
   *purge dba_recyclebin
   *flashback table table_name to before drop

İyi Okurlar.

Hiç yorum yok:

Yorum Gönder