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.