29 Aralık 2011 Perşembe

ORA-00054: kaynak meşgul ve NOWAIT ile elde etme belirlendi veya zaman aşımı süresi doldu


ALTER TABLE TABLO1 ADD ( adi VARCHAR2 (20));

line 1: ORA-00054: kaynak meşgul ve NOWAIT ile elde etme belirlendi veya zaman aşımı süresi doldu


Sorunu aşmanın farklı yolları var. Tabloyu kullanan sessionı bulup kill edebilirsiniz.

col object format a30
col username format a20
col sidserial format a12
set linesize 200

SELECT a.SID||','||s.serial# SIDserial, s.last_call_et, s.status,s.sql_hash_value, s.username, s.sql_hash_value, a.owner || '.' || a.OBJECT OBJECT, s.lockwait,s.osuser
  FROM gv$session s, gv$access a
 WHERE s.SID = a.SID
   and s.inst_id = a.inst_id
   AND a.owner != 'SYS'
   --and s.status ='ACTIVE'
   AND UPPER (SUBSTR (a.OBJECT, 1, 2)) != 'V$'
   AND a.OBJECT = upper(trim('&object_name'));


Çok yoğun kullanılan ama sürekli küçük transactionlar olan bir tablo ise 
belirli bir zaman bekleyip yeniden deneyen bir prosedür yazabilirsiniz.(0.1 sn gibi)

11g ile gelen bir parametre ile hata almadan önce bekleyebileceğimiz süreyi session bazında set edebiliyoruz.

alter session set DDL_LOCK_TIMEOUT=60;

böylece hata almadan önce 60sn beklemiş olacaksınız.


oracle reference linki : http://docs.oracle.com/cd/B28359_01/server.111/b28320/initparams068.htm




1 yorum: