Haz
9
2015

ORA-01591 locked held by in-doubt distributed transactions hatası çözümü

Merhaba,

Entegrasyonlarda karşımıza çıkabilecek olan commitlenmemiş işlemler için aşağıdakiler sırası ile yapılır.

Untitled1

Ekranda çıkan hatadaki local_trans_id interface de bekletilen sorunlu kayıt için sorgulanır.

Commitlenmemiş alan yakalanır.

 
SELECT *
  FROM dba_2pc_pending
 WHERE local_tran_id = '158.30.924783';

İşlemin geri alınması için

rollback için

 
SELECT 'rollback force ''' || local_tran_id || ''';'
  FROM dba_2pc_pending
 WHERE state = 'prepared';

 
ROLLBACK force  '158.30.924783';

sql sonrası gelen komut çalıştırıldığında aşağıdaki şekilde hata alınırsa

ORA-02058: no prepared transaction found with ID 158.30.924783

Aşağıdaki komut çalıştırılarak bekleyen işlemler için rollback işlemi gerçekleştirilir.

 
call  DBMS_TRANSACTION.purge_lost_db_entry('158.30.924783');

Yukarıdaki procedure sonucunda iki tabloda kayıtların gittiği gözlemlenir.

 
SELECT local_tran_id, global_tran_id, state, fail_time, retry_time
  FROM dba_2pc_pending
 WHERE local_tran_id = '158.30.924783';

 
SELECT DATABASE, local_tran_id, dbid, sess#, branch
  FROM dba_2pc_neighbors
 WHERE local_tran_id = '158.30.924783'

 

 

Ozan Arıkan

1988 İstanbul doğumlu. İstanbul Üniversitesi Yönetim Bilişim
Sistemlerinden mezun oldu. 2012 yılından Beri Oracle e-Business
Suite Uygulama Geliştirme Fonksiyonel ve Teknik Danışman olarak
DbOptimize bünyesinde kariyerine devam etmektedir.
Mail: oznarkn@gmail.com
Ozan Arıkan


Yorum yapın

*