오래전에 분산 트랜잭션 관련 오류가 있었을때 처리한 내용입니다. 출처가 기억이 나지 않아서... (원서였는지, 한글로된 블로그 글이었는지...)

두 개의 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;

해주고 첫 부분에 있는 쿼리로 확인.




YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


 통계학개론 리포트를 작성하던 중, OpenOffice.org의 calc에서 이상한 점을 발견했습니다. A, B열의 data를 가지고 그래프와 표준편차를 구하는 함수로 계산된 결과를 보니 뭔가 맞지 않는다는 느낌이 들었었습니다. 열 건 정도 되는 Data를 눈으로 봐도 B의 표준편차가 적을텐데, 결과가 반대로 나오더군요. 해당 함수를 다시 확인해봤는데, 오타는 없었습니다.
=STDEV(A1:A10)
=STDEV(B1:B10)
위의 함수였거든요.
어쩔수 없이 MS Excel에서 돌려보니 제가 예상한 결과가 나오네요. 한글 OpenOffice.org 3.2의 버그인지 아니면 제가 옵션같은걸 잘못줬는지 모르겠습니다. 암튼 리포트 제출은 했지만 뭔가 찜찜한게...
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


 현재 재직중인 직장에서 TmaxData의 Tibero4로 DBMS를 migration 및 신규 서비스 구축을 한다는 말씀을 드렸었나요? 음... 암튼 지금 그런 일이 진행되고 있습니다. 나름 대규모 작업이 진행중인데요.
국내 기업이다보니 버그나 기능 개선이 요구되면 그때그때 패치가 되고 있습니다. 이건 뭐 긍정적이라고 생각합니다. 아직 개선할 점이 많은게 문제이긴하지만 대응이 빠른 편이라고 생각합니다. 좋게좋게 생각해야죠.

 이번에 말씀드리려는건 현재 패치가 진행중이라고 알고있는데요. PSM(Oracle의 PL/SQL에 해당함)을 이용해서 함수(Function)를 만들어서 쓸때 생기는 문제입니다.

문제점 : select문장에서 만들어 놓은 함수를 실행시켰는데, 널(null) 값이 반환된다.

원인 : 함수안에서 실행되는 Query 문장이 인덱스를 타게되면 널(null) 값이 반환된다.

해결책 : 현재 패치 진행중이라고 한다. 일단 Full table scan하도록 힌트를 주면 됨.

 뭐... 패치 중이니까요... 곧 해결되겠죠.
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST