Oracle Recyclebin, Flashback ve Purge Mekanizması

Herkese selam, bu yazıda sizlere Oracle’ın recyclebin  ve flashback mekanizmasının ne olduğundan, nasıl aktive edildiğinden ve ne şekilde kullanıldığından bahsedeceğim.

Oracle da recyclebin adından da belli olacağı üzere tablespace içinde tanımlı olan ancak drop edilmiş tabloların ve bunlara bağlı olan indexlerin constraints lerin tutulduğu system tablosudur diyebiliriz.

Peki drop edilen tablo bilgisi sistem tarafından neden bir yerde saklanmaktadır?

Bu sorunun cevabını tahmin etmek aslında çokda zor olmasa gerek. Sistem bu kayıtları drop edilen tabloyu yeniden geri getirebilme adına tutmakta. Evet yanlış okumadınız. Yanlışlıkla drop ettiğiniz tabloları recyclebin yapısı ile oracle da geri getirebilirsiniz.

Oracle’da recyclebin, falshback yapısını kullanabilmemiz için öncelikle yapmamız gereken sistem bazında recyclebin parametresini on durumuna getirmektir. Aksi takdirde veritabanımızın bu özelliğini kullanamayız.  Aşağıdaki scripti çalıştırarak bu özelliğimizi on durumuna çekmemiz mümkün. Ancak sistemimizde bu parametre on olarakta gelmiş olabilir. Recyclebin parametresinin geçerli değerini öğrenmek için v$parameters tablosuna bakılabilir.

SELECT value FROM v$parameter where name like ‘%recyclebin%’; — parametrenin ——geçerli değeri

–Parametre Eğer off ise aşağıdaki kod çalıştırılmalıdır

alter system set recyclebin=on;  

Sistemimizde bu parametreyi aktif hale getirdikten yada aktif olduğundan emin olduktan sonra hızlıca recylebin ve flashback table yapımızın çalışıp çalışmadığını test edebiliriz.

Öncelikle dummy bir tablo oluşturup silelim ve recyclebin’in durumunu görelim

create table deneme123456 as (select * from v$sql);  ——deneme tablosu yaratildi

select count(*) from deneme123456; — dönen satir — —3901

drop table deneme123456; — tüm tablo drop edildi 

şimdi recyclebine bakalım.

select * from recyclebin;  

gördüğümüz üzere tablomuzun kaydı recyclebin’e düştü. Şimdi tabloyu geri yükleme işlemini gerçekleştirelim burada makalenin başında bahsettiğim flashback söz deyimini kullanacağız.

flashback table deneme123456 to before drop;
select count(*) from deneme123456; — dönen satir ——-3901 

bundan sonra recyclebin’e tekrar select atılırsa bu tablo kayıdının recyclebinden gitmiş olduğunu göreceğiz.

Recyclebin kullanırken bizi sınırlayan bir nokta recyclebin’in kullandığı alanın tablespace’in sahip olduğu alanından kullanmasıdır. Bu sebeple recyclebin’e güvenip çok büyük tabloları silip bazen geri almamız mümkün olmayabilir. Burada tablesapce’imizi kontrol etmekte fayda var diye düşünüyorum. Aynı şekilde recyclebin’in fazla dolu olması yine normal çalışmamızı engelleyici bir sebep olarak karşımıza çıkabilmektedir. Bu size’ı kontrol etme adına recylebin mekanizmamızı aktif ettikten sonra geri almıcağımızdan emin olduğumuz tabloları purge değimi ile silersek bu tabloların recyclebin’de saklanmasını engellemiş böylelikle tablespace’imizin dolmasını engellemiş oluruz.  Aşağıdaki örneğe bakarak ilgili kullanımı görebilirsiniz.

 drop table deneme123456 purge;                                                                                    —hem tabloyu siler hemde recyclebin’e düşmesini ——–engeller.  

bu mekanizma Oracle 10g sürümü ile bize sunulan hizmetler arasında. Bu mekanizmayı kontrollü bir şekilde kullandığımızda bizi bazen ipten alabilir :).

Advertisements

About ... from Emrah METE

Bilgisayar Mühendisi
This entry was posted in Oracle, Uncategorized and tagged , , , , , , , , , . Bookmark the permalink.

2 Responses to Oracle Recyclebin, Flashback ve Purge Mekanizması

  1. Ahmet DEMIR says:

    Emrah Merhaba,
    recyclebin parametresini set etmek sadece yetiyor mu ? Yoksa db_recycle_cache_size parametreside set edilmesi gerekiyor mu default olarak 0 yani set edilmemiş olarak geliyor.
    İyi çalışmalar…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s