• 고객센터
  • 교육
  • 매뉴얼
  • 데모
  • 제품소개
조회 수 : 4165
2007.11.26 (22:31:18)
>* 고객시스템명 : A/S 시스템
>* TOInB 버전 : 5.x
>* 서버 Platform : Window
>* 문의 유형(질문/요청/참조) : SO 에러시 에러 정보 DB 저장 및 DB 트렌젝션 문의
>* 내용
>
> 1. SO 에서의 에러정보 DB 저장
>
> 작성된 SO 에서 에러발생시 에러정보(TBL_ERROR_CODE, TBL_ERROR_MSG, 기타..) 를 DB 에 저장하려 합니다.
> 이를 위해 에러정보 테이블과 해당 테이블에 값을 저장할 공용 SO (SO 'ErrorWrite') 를 만들었습니다.
>
> - 대상 SO에서 TB_on_error() 에 다음과 같은 형태로 기술
>
>    (1) 파일 로그 기록
>       TBL_Prn(tb_stderr, "TBL_ERROR_CODE[%d] : %s",  TBL_ERROR_CODE, TBL_ERROR_MSG);
>                        
>    (2) 데이터 테이블 생성(ErrInfo)
>
>    (3) SO 'ErrorWrite' 의 input1 포멧에 맞게 TBL_SetFormat() 함수 사용
>
>    (4) 데이터 테이블 에 값 셋팅 ( TBL_PutColumnString(), TBL_PutColumnString()... 사용)
>
>    (5) Row 삽입 ( TBL_InsertRow() )
>
>    (6) 해당 SO 'ErrorWrite' 호출 ( TBL_ExecLocalObject() 사용 )
>
>    (7) 데이터 테이블 삭제 ( 'ErrInfo' , TBL_DeleteDatatable() 사용 )
>
> - 상기와 같이 기술하여 대상 SO 를 컴파일 후 에러를 발생시키면 정상적으로 에러정보 기록 SO 를 호출합니다.
>
>   다만, 대상 SO 에서 에러가 발생한 관계로 TBL_ExecLocalObject()를 사용하여 호출한 에러정보 기록 SO 또한 트렌젝션에서 롤백 처리가 되어  정상적으로 DB 에 저장이 되지 않습니다.
>
> - 해결 방안
>  
>   에러정보 기록 SO ('ErrorWrite') 에서 SO 시작전 롤백 함수( TBL_Rollback() ) 를 수행하여 피호출 SO 에서 발생한 DB트랜젝션을 롤백한 후  에러정보를 DB 에 저장하고 커밋 함수 ( TBL_Commit() ) 를 실행하고자 합니다.
>
> - 고려사항 (문의사항)
>
>   a. 위 로직대로 처리할 경우 혹 제대로 DB 트랜젝션 관리가 안 된다거나 동시에 다른 SO에서 발생된 에러(롤백되어야 할 데이터)까지 커밋될 가능성은 없는지요.
>   b. 위 로직이 혹시 토인비의 트렌젝션 관리 기준에 위배되거나 하진 않는지요.
>   c. 과연 위의 로직이 의도한 바대로 제대로 동작할 지요.

[답변 SO간의 처리]
토인비의 경우 명시적으로 AutoCommit을 사용하고 있습니다.
그러나 위와 같이 TBL_Rollback() TBL_Commit()을 사용하는 경우 즉시 COMMIT, ROLLBACK이 된다고 보시면 됩니다.
그리고 토인비 내부에서 사용되는 Autocommit을 사용하는 경우
SO 내부에서 처리된 SQL은 에러시 자동으로 ROLLBACK 됩니다.
SO에서 SO CALL을 통하여 처리된 서비스의 경우도 동일 하다고 보시면 됩니다.
즉 SO1 -> SO2 를 호출한 경우 SO2에서 에러가 발생된 경우
SO1으로 ERROR를 RETURN하여 ROLLBACK 처리를 하여야 합니다.
이부분은 2. S2_Server Part_021209.doc 메뉴얼에 설명이 잘나와 있습니다.
[문서 다운로드]
http://www.gauce.com/download.php?id=toinbdown&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=14&filenum=1


>
>
>
> 2. 트렌젝션 문의
>
>  하나의 SO 에서 수행된 모든 PL-SQL 문과 select_sql, insert_sql, update_sql 등은 하나의 트렌젝션으로서 관리가 되는지 궁금합니다.
[답변]
SO내부에서 수행된 SQL및 PL-SQL의 경우 전체가 하나의 SESSION으로 유지가 됩니다. 즉 명시적인 Auto Commit이 된다고 보시면 됩니다.

>  또한 위 1번 문의사항과 같이 로컬 혹은 원격지의 호출된 SO 까지 하나의 DB트렌젝션 으로서 관리되고 있는 것인지 또한 의문사항입니다.
[답변]
위의 답변에 기술되어 있습니다. SO 간의 FAIL에 따른 처리를 하여야 합니다. 즉 SO1이 SO2를 호출 하였으면 SO2의 FAIL로 SO1또한 FAIL 처리 되며 이는 return 값에 따른 TB_FAIL이 return 되어 autocommit 되어야 합니다.

>  SO 내 event 함수 내 SQL 실행 문 또는 PL-SQL 수행시 ROLLBACK; 또는 COMMIT; 이라고 명시적으로 주시 않아도 토인비에서 자동적으로 이러한 DB 트랜젝션이 롤백과 커밋을 일으키는 것인 지 또한 궁금합니다.
[답변]
위에서도 언급하였듯이 명시적으로 AUTOCOMMIT 이 됩니다. TBL_Commit 등을 사용하지 않는한...

>
>
> * 관련된 메뉴얼을 찾아 이러한 부분을 충족할 수 있겠지만 검색 공력이 작아 찾지 못하고 이렇게 문의드립니다.
>   부디 좋은 답변 부탁드리겠습니다.
>

좀더 자세한 사항은 위에 링크한 문서를 참고하거나 문의전화 2106-1791  로 문의를 하여 주시기 바랍니다.
번호 제목 닉네임 조회 등록일
497 Tr 파라미터 전달 방법 문의 [1]
엄엄
9488 2016-03-17
496 SAP 연계 메뉴얼 요청 [1]
조성제
10217 2016-01-29
495 출력 시 오류 문의 드립니다. [3]
DA인포메이션
9376 2015-12-14
494 서버 IP변경으로 라이센스 재발급 방법 [1]
루시퍼
7891 2015-11-03
493 Dynamic Report Builder 레포트 관련 문의 [1]
snowaka
7692 2015-08-27
492 Clob처리 관련 답변 부탁드립니다 [1]
메탈키드
7509 2015-07-29
491 토인비웹리포팅 바코드와 PCL5 [1]
고척동제이
8185 2015-07-20
490 toinb 세션 time out 문의 [1]
변주선
8160 2015-07-15
489 토인비5.0 다국어 지원 [1]
김택근
7603 2015-05-21
488 Toinb 문제점 확인요청(천진삼성SDI) [1]
tsdi
7764 2015-05-04
487 서버 디스크 변경시 Toinb 싱행에러 문의 [1]
tsdi
7430 2015-05-04
486 SOB관련 문의 입니다. [1]
9417 2015-02-06
485 IE 11 호환성 문의 [1]
조성제
7785 2015-01-08
484 java 업데이트시 서버에 미치는 영향 [1]
도영곤
8032 2014-09-16
483 SE_LOG variable 함수 관련 문의 드립니다. [1]
임상혁aaa
7519 2014-06-26
482 RunExcelSheet 구현 [1]
김강중
7575 2014-03-27
481 BLOB 처리방법 문의? 파일 [1]
후니7
8926 2014-01-03
480 토인비 변수 비교시 에러 발생(수정) [1]
서원규
7538 2013-03-26
479 토인비 변수 비교시 에러 발생 [1]
서원규
7566 2013-03-26
478 TOInB EVENT REMOTE_ADDR 변수 관련 문의 [1]
서원규
7711 2013-03-22
Tag List
XE Login