Undo tablo alanının kontrolü
Undo tablo alanı yoğun zamanlarda oldukça fazla kullanılmaktadır. Kontrolsüz gidildiğinde bazı işlemlerin kesilme ihtimali vardır. Düzenli olarak da undo tablo alanı kontrol edilmelidir.
Genel olarak kullanım durumunun kontrolü için aşağıdaki sorguyu kullanabilirsiniz.
SQL> column tablespace format a20;
SQL> column sum_in_mb format 999999.99;
SQL> select tablespace_name tablespace, status, sum(bytes)/1024/1024 sum_in_mb, count(*) counts from dba_undo_extents group by tablespace_name, status order by 1,2;
TABLESPACE STATUS SUM_IN_MB COUNTS
-------------------- --------- ---------- ----------
UNDOTBS1 ACTIVE 1.00 1
UNDOTBS1 EXPIRED 212.44 504
UNDOTBS1 UNEXPIRED 120.00 361
UNDOTBS2 EXPIRED 123.63 343
UNDOTBS2 UNEXPIRED 84.63 289
Yukarıdaki sorgudaki durum kolonundaki bilgiler , ilgili undo bilgisinin ezilip ezilmeyeceğini de göstermektedir.
Eğer durumu ACTIVE ise bu undo , aktif olan bir işlemde kullanılıyor ve hiç bir şekilde ezilmeyeceğini gösterir.
Eğer durumu UNEXPIRED ise bu undo bilgisi tamamlanmış bir işleme ait olup ,henüz undo_retention ile belirtilen süreyi aşmadığını gösterir. Zorunlu kalındığında ezilebilir.
Eğer durumu EXPIRED ise bu undo bilgisi tamamlanmış bir işleme ait olup undo_retention ile belirtilen süreyi aştığını gösterir. İlk öncelikli ezilecek undo bilgisi bu durumda olandır.
Kullanıcı bazlı undo kullanımının kontrolü için aşağıdaki sorguyu kullanabilirsiniz.
SQL> column tablespace format a20;
SQL> column username format a20;
SQL> column status format a10;
SQL> column sum_in_mb format 999999.99;
SQL> select u.tablespace_name tablespace, s.username, u.status, sum(u.bytes)/1024/1024 sum_in_mb, count(u.segment_name) seg_cnts from dba_undo_extents u left join v$transaction t on u.segment_name = '_SYSSMU' || t.xidusn || '$' left join v$session s on t.addr = s.taddr group by u.tablespace_name, s.username, u.status order by 1,2,3
TABLESPACE USERNAME STATUS SUM_IN_MB SEG_CNTS
-------------------- -------------------- ---------- ---------- ----------
UNDOTBS1 AHMET ACTIVE 1.00 1
UNDOTBS1 AHMET EXPIRED 181.06 467
UNDOTBS1 AHMET UNEXPIRED 172.38 433
UNDOTBS2 TESTUSER EXPIRED 91.00 301
UNDOTBS2 TESTUSER UNEXPIRED 144.25 358
Çok fazla undo tüketen kullanıcılardan , yaptıkları işlemlerde daha sık commit ya da rollback yapmaları istenebilir. Bu sayede uzun süre aktif undo kullanımı olmayacaktır.