ORA-01591 lock held by in-doubt distributed transaction hatasının çözümü

DB link ile uzaktaki bir veritabanındaki tablolarla , sorgulama yapılan veritabanındaki tabloların join’lendiği sorgularda ORA-01591 şeklinde hata alınabilmektedir. Bu hata askıda kalan işlemler olduğundan dolayı oluşmaktadır.

Sorgulama yapılan veritabanında DBA_2PC_PENDING görüntüsündeki “prepared” durumunda görülen işlemlerin commit yada rollback yapılması gerekmektedir. 

Bekleyen işlemler ile ilgili bilgileri aşağıdaki tablo ve görüntülerden sorgulayabilirsiniz.

  • SYS.PENDING_TRANS$
  • SYS.DBA_2PC_PENDING
  • SYS.DBA_2PC_NEIGHBORS

Bekleyen işlemler için rollback komutlarının hazırlanması :

Aşağıdaki sorgu ile bekleyen işlemler için rollback force komutları hazırlanabilir.

SQL> select 'rollback force '''||local_tran_id||''';' from DBA_2PC_PENDING where state='prepared';

rollback force '10132.14.225761';
rollback force '10132.29.12864';
rollback force '10133.21.130785';
rollback force '10133.22.350978';
rollback force '10133.4.142261';

Bekleyen işlemler için commit komutlarının hazırlanması :

Aşağıdaki sorgu ile bekleyen işlemler için commit force komutları hazırlanabilir. Her zaman commit işlem başarılı tamamlanmayabilir.

SQL> select 'rollback commit '''||local_tran_id||''';' from DBA_2PC_PENDING where state='prepared';

commit force '10132.14.225761';
commit force '10132.29.12864';
commit force '10133.21.130785';
commit force '10133.22.350978';
commit force '10133.4.142261';

 

 

Loading

Leave Your Comment