오래전에 분산 트랜잭션 관련 오류가 있었을때 처리한 내용입니다. 출처가 기억이 나지 않아서... (원서였는지, 한글로된 블로그 글이었는지...)
두 개의 DB 사이에서 "Database Link"를 이용하여 쿼리를 실행하는 프로시져가 주기적으로 실행될 때, "ORA-01591" 오류가 발생했다. 이럴때의 처리방법.
두 개의 DB 사이에서 "Database Link"를 이용하여 쿼리를 실행하는 프로시져가 주기적으로 실행될 때, "ORA-01591" 오류가 발생했다. 이럴때의 처리방법.
SQL> SELECT LOCAL_TRAN_ID, GLOBAL_TRAN_ID, STATE, MIXED, HOST, COMMIT# FROM DBA_2PC_PENDING;
위의 쿼리로 확인 했을 때, MIXED가 'NO', STATE가 'PREPARED'일 때.
SQL> ROLLBACK FORCE 'TRANS_ID';
혹은
SQL> COMMIT FORCE 'TRANS_ID';
STATE 상태가 'FORCED ROLLBACK' 또는 'FORCED COMMIT'일 때
SQL> EXEC DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY('TRANS_ID');
SQL> COMMIT;
해주고 첫 부분에 있는 쿼리로 확인.
위의 쿼리로 확인 했을 때, MIXED가 'NO', STATE가 'PREPARED'일 때.
SQL> ROLLBACK FORCE 'TRANS_ID';
혹은
SQL> COMMIT FORCE 'TRANS_ID';
STATE 상태가 'FORCED ROLLBACK' 또는 'FORCED COMMIT'일 때
SQL> EXEC DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY('TRANS_ID');
SQL> COMMIT;
해주고 첫 부분에 있는 쿼리로 확인.
'IT 기술 > Oracle' 카테고리의 다른 글
Oracle 11g에서 로그 조회하기 (0) | 2012.12.13 |
---|---|
Oracle 11g R2 설치시 기본 옵션에 Spatial이 있었다. (0) | 2012.06.23 |
Oracle SQL Deveroper로 Oracle과 기타 RDBMS 개발/관리하기 (0) | 2011.12.27 |
문자열 가공... 정규식 쿼리 (0) | 2011.12.05 |
Oracle 10g에서 사용자 계정이 자주 잠겨서 불편할때. (0) | 2011.07.07 |