27 Eylül 2012 Perşembe


                                               Oracle Undo Tablespace
 Undo tablespace içerisinde  database üzerinde gerçekleşen transaction sırasında data üzerinde gerçekleşen değişiklikler  hakkındaki  bilgiler tutulur.Bu tablespace içerisinde  herhangi bir tablo veya index oluşturulamaz.Sistemde undo tablespace olmayabilir veya bir ve daha fazla undo tablespace de olabilir.Database instance oluşturulduğu zaman otomatik olarak undo tablespace oluşturulur. Bundan sonra da istenildiğinde undo tablespace oluşturulabilinir.Bir  transactionu gerçekleştiğinde transaction undo tablespacede bulunana undo segment lerden birine  bind edilir ve transaction ile ilgili kayıtlar bu undo segment te saklanır.Eğer undo tablespace yoksa system tablespace inde bulunan rollback segmet e  bind edilir. Varolan bir undo tablespace genişletmek istediğimizde alter tablespace komutu ile datafile ekleyerek genişletebiliriz.

1) Create Undo Tablespace:
SQL>create undo tablespace deneme (tablespace name) datafile  '/u01/app/oracle/oradata             /company/deneme.dbf' autoextend on|off
retention gurantee|nogurante;

2) Add Datafile to Undo Tablespace:
SQL>alter tablespace undotbs_01
             add datafile '/u01/oracle/rbdb1/undo0102.dbf' autoextend on  next  1M
             maxsize unlimited;

3) Drop Undo Tablespace: Undo tablespace herhangi bir instance tarafından kullanılmazsa drop edilebilir.
SQL>drop tablespace undotbs_01;

Varolan bir instance undo tablespace assign etmenin 2 yolu var.

1)Instance başlarken kullanılan initialization file içerisinde  kullanılacak undo tablespace belirtilir.
2)Instance çalışırken alter system set undo_tablespace=new_undo komutu ile active olan undo tablespace ile belirtilen tablespace yer değiştirilir.
 Undo Kayıtları  Şu Durumlarda Kullanılır:

1)Transaction rollback etmede.
2)Database recover işleminde.
4)Read consistency sağlamada.

Automatic Undo Management:10g den  önceki versiyonlarda undo space için system tablespace içerisinde bulunan rollback segment kullanıldığında undo management manuel olarak gerçekleştiriliyordu.Undo tablespace kullanılmaya başlandıktan sonra undo management automatic olarak gerçeklemeye başladı.Eğer sistemde kullanılacak undo tablespace yoksa undo space için system rollback segment kullanılır.Bu durum alert log dosyasına yazılır.(ORA-01551) Sistemde birden fazla undo tablespace varsa undo_tablespace parametresi  kullanılarak instance için tablespace belirtilir.Automatic undo management mode için şu parametreler kullanılır.

undo_management=undo management modunu belirler(manuel veya auto)
undo_tablespace=Instance için kullanılacak undo tablespace belirtir. Bu parametre sistemde birden fazla undo tablespace olduğunda ve instance a istenilen bir undo tablespace kullandırmak istendiğinde belirtilir.
undo_retention=undo bilgilerinin undo tablespace ne kadar süre tutulacağını belirtmek için kullanılır.Default değeri 900 dakikadır.

Undo Retention: Normalde commit edilen undo bilgileri tablespace den  silinir.Ancak read  consistency, uzun süreli çalışan query eski bilgilere ihtiyaç duyması gibi nedenlerden dolayı undo bilgileri undo tablespace daha uzun saklanması istenebilir.Undo_retention parameteri undo bilgilerinin ne kadar süre boyunca saklanacağını belirtir.
SQL>alter system  set undo_retention = 2400 ile retention belirtilir.