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';