Skip to content

free global transaction table entry \ Unable To Purge Distributed Transaction

free global transaction table entry \ Unable To Purge Distributed Transaction published on 1 комментарий к записи free global transaction table entry \ Unable To Purge Distributed Transaction

while trying to commit distibuted transaction faced with «free global transaction table entry»
solution foud at mos 549307.1
define local_tran_id:

var numtransact varchar2(100)

begin
:numtransact:='5.31.1099960';
end;
/

use mos note to force commit transaction:

set transaction use rollback segment SYSTEM;

delete from sys.pending_trans$
where local_tran_id = :numtransact;
delete from sys.pending_sessions$ where local_tran_id = :numtransact;
delete from sys.pending_sub_sessions$ where local_tran_id = :numtransact;

commit;

insert into pending_trans$ (
LOCAL_TRAN_ID,
GLOBAL_TRAN_FMT,
GLOBAL_ORACLE_ID,
STATE,
STATUS,
SESSION_VECTOR,
RECO_VECTOR,
TYPE#,
FAIL_TIME,
RECO_TIME)
values( :numtransact, 
306206,
'XXXXXXX.12345.1.2.3', 
'prepared','P', 
hextoraw( '00000001' ),
hextoraw( '00000000' ), 
0, sysdate, sysdate );

insert into pending_sessions$
values( :numtransact,
1, hextoraw('05004F003A1500000104'),
'C', 0, 30258592, '',
146
);
commit;

begin
DBMS_TRANSACTION.COMMIT_FORCE (:numtransact);
commit;
end;
/

transaction state changed to forced commit ( or commit forced =) ), after that purge transcation entry

exec DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY('5.31.1099960'); --local tran id

1 комментарий

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Primary Sidebar

Яндекс.Метрика