Minimizing System Contention ( 15- Locked Object yi Bulma )

15- Locked Object Bulma
  - Locked object kimliğini, V$LOCK görünümünde ID1 (LockIdentifier) sütununun değerine bakarak bulabilirsiniz (bkz. Konu 13).
  TYPE sütununun TM (DML enqueue) olduğu ID1 sütununun değeri, kilitli nesneyi tanımlar. Diyelim ki ID1 sütununun değeri 99999'dur.
  Daha sonra kilitli tabloyu tanımlamak için aşağıdaki sorguyu çalışabilirsiniz:
 
   SQL> select object_name from dba_objects where object_id=99999;
    OBJECT_NAME
    ------------
    TEST
 
  - Daha da kolay bir yol, kilitli nesneyi, nesne türünü ve nesnenin sahibini bulmak için V$LOCKED_OBJECT viewını kullanmaktır.
 
   SQL> select lpad(' ',decode(l.xidusn,0,3,0)) || l.oracle_username "User",
     o.owner, o.object_name, o.object_type
     from v$locked_object l, dba_objects o
     where l.object_id = o.object_id
     order by o.object_id, 1 desc;
     
    User  OWNER  OBJECT_NAME  OBJECT_TYPE
    ------  ------  ------------ ------------
    HR   HR   TEST    TABLE
    SH   HR   TEST    TABLE

  - Yukarıdaki sorgunun hem blocking session ı hemde blocked sessionı gösterdiğini unutmayın.
  
  
  Nasıl Çalışır:
 
  - Yukarıdaki bölümünde gösterildiği gibi kilitli bir nesneyi tanımlamak oldukça kolaydır. Kilitli bir nesneyi, kilitte yer alan nesnenin ROWID'ini ve kilitlerden sorumlu olan SQL deyimini hızlı bir şekilde tanımlamak için Oracle Enterprise Manager'ı kesinlikle kullanabilirsiniz. Bununla birlikte, kilitleme bilgisini içeren temel Oracle viewlarını anlamak her zaman önemlidir . Bu konuda gösterilen sorguları kullanarak, Oracle Enterprise Manager gibi bir izleme aracını kullanmadan kilitli bir nesneyi kolaylıkla tanımlayabilirsiniz.
  - Yukarıda gösterilen örnekte, kilitli nesne bir tabloydu, ancak bir PL/SQL paketi de dahil olmak üzere başka herhangi bir obje türü de olabilir. Genellikle, bir sorgunun hang kalmasının sebebi, sorgunun gerektirdiği nesnelerden birinin kilitli olmasıdır. Diğer kullanıcıların nesneye erişebilmesi için nesnedeki kilidi tutan oturumu kapatmanız gerekebilir.
 
 

Constraint Disable-Enable

Disable Constraint BEGIN   FOR c IN   (SELECT c.owner, c.table_name, c.constraint_name    FROM user_constraints c, user_tables t    WHERE...