• 고객센터
  • 교육
  • 매뉴얼
  • 데모
  • 제품소개
조회 수 : 4164
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 no image Tr 파라미터 전달 방법 문의 [1]
엄엄
9488 2016-03-17
496 no image SAP 연계 메뉴얼 요청 [1]
조성제
10217 2016-01-29
495 no image 출력 시 오류 문의 드립니다. [3]
DA인포메이션
9376 2015-12-14
494 no image 서버 IP변경으로 라이센스 재발급 방법 [1]
루시퍼
7890 2015-11-03
493 no image Dynamic Report Builder 레포트 관련 문의 [1]
snowaka
7692 2015-08-27
492 no image Clob처리 관련 답변 부탁드립니다 [1]
메탈키드
7509 2015-07-29
491 no image 토인비웹리포팅 바코드와 PCL5 [1]
고척동제이
8185 2015-07-20
490 no image toinb 세션 time out 문의 [1]
변주선
8160 2015-07-15
489 no image 토인비5.0 다국어 지원 [1]
김택근
7603 2015-05-21
488 no image Toinb 문제점 확인요청(천진삼성SDI) [1]
tsdi
7764 2015-05-04
게시판을 이용해 주셔서 감사합니다. 다음양식에 맞게 입력해주세요. 포트랑 디비관련은 문제가 없습니다. 디비 TNS 확인 및 web to toinb 포트 전부 확인 하였습니다. Toinb 문제점 확인요청(천진삼성SDI) * 고객시스템명 : SFC 시스템 ( 천진삼성SDI ) * TOInB 버전 : TblVersion= tbl_4.0.2.1.0 * 서버 Platform : hpux 11.23 * 문의 유형(질문/요청/참조) : * 내용 : 긴급 부탁 합니다. 변경점 - DISK 교체 HP XP10000 에서 SS7400 로 전환. 현상 - Toinb 컴포넌트 사용 웝화면 접속시 죽어버림 (화면 무 반응) SE 및 SOM 로그에 컴포넌트 콜 이역이 보이지 않음. Toinb SE 및 SOM 전부 정상 실행이 되고 있으며 또한 Toinb 파일 컴파일이 됨. 참고 Toinb 서비스 가동 상태 tjsfcweb:/toinb/toinb/bin> tb_stat infco ALL HP-UX ############## infco_TB_SE ######################### 401 S toinb 19793 19789 0 154 20 e00000016b0e8b80 345 e00000011eaa1080 13:40:37 ? 0:00 TB_se_ora PROC_STATIC 8 infco 0 OFF 401 S toinb 19792 19789 0 154 20 e00000016b782040 345 e00000011eaa1080 13:40:37 ? 0:00 TB_se_ora PROC_STATIC 7 infco 0 OFF 401 S toinb 19789 1 0 134 20 e0000001705994c0 106 e00000011eaa10c0 13:40:37 ? 0:00 TB_svcd infco SE 401 S toinb 19790 19789 0 154 20 e00000017004e040 345 e00000011eaa10c0 13:40:37 ? 0:00 TB_se_ora PROC_STATIC 6 infco 0 OFF 401 S toinb 19795 19789 0 154 20 e00000016b782280 345 e00000011eaa1100 13:40:37 ? 0:00 TB_se_ora PROC_STATIC 10 infco 0 OFF 401 S toinb 19794 19789 0 154 20 e00000017091b280 345 e00000011eaa10c0 13:40:37 ? 0:00 TB_se_ora PROC_STATIC 9 infco 0 OFF ############## infco_TB_SOM ######################## 401 S toinb 19800 19796 0 134 20 e0000001699c0b80 106 e00000011eaa1100 13:40:37 ? 0:00 TB_som PROC_STATIC 8 infco 0 OFF 401 S toinb 19801 19796 0 154 20 e00000016b7824c0 106 e00000011eaa1100 13:40:37 ? 0:00 TB_som PROC_STATIC 9 infco 0 OFF 401 S toinb 19802 19796 0 154 20 e00000017033e4c0 106 e00000011eaa10c0 13:40:37 ? 0:00 TB_som PROC_STATIC 10 infco 0 OFF 401 S toinb 19799 19796 0 154 20 e00000017091b700 106 e00000011eaa1100 13:40:37 ? 0:00 TB_som PROC_STATIC 7 infco 0 OFF 401 S toinb 19796 1 0 154 20 e00000017004e940 106 e00000011eaa10c0 13:40:37 ? 0:00 TB_svcd infco SOM 401 S toinb 19797 19796 0 154 20 e00000017061d280 106 e00000011eaa10c0 13:40:37 ? 0:00 TB_som PROC_STATIC 6 infco 0 OFF SE Log : ##### TB_svcd Started VER (4.0.2.1.9) ########### ####### TB_se_ora Started [STATIC] ####### ####### TB_se_ora Started [STATIC] ####### ####### TB_se_ora Started [STATIC] ####### ####### TB_se_ora Started [STATIC] ####### ####### TB_se_ora Started [STATIC] ####### infco_TB_SE.log: END
487 no image 서버 디스크 변경시 Toinb 싱행에러 문의 [1]
tsdi
7430 2015-05-04
486 no image SOB관련 문의 입니다. [1]
9417 2015-02-06
게시판을 이용해 주셔서 감사합니다. 다음양식에 맞게 입력해주세요. * 고객시스템명 : * TOInB 버전 : * 서버 Platform : * 문의 유형(질문/요청/참조) : * 내용 : 안녕하세요 SOB관련 문의 입니다. SQL 실행시 속도가 5분이상 걸리는 쿼리인 경우 입니다. 쿼리에 rownum < 10 조건절을 걸어 ! 를 클릭하면 문제가 없는 쿼리 입니다 위 조건을 안걸고 SOB상에서 !를 클릭하여 실행시 Socket Error - Receive(CSInfo1) 이라는 얼럿창이 뜨고 실행이 안되 어떻게 처리 해야 할지 모르겠습니다. 컴파일이 된상태이기 때문에 직접 화면에서 호출하면 한참동안돌다가 오류가 나오고 로그에 남는 부분은 ... [SE00-90602 2015-02-06 13:40:42 <5112> TyIntList TB_grid.c (2348)] 데이터를 전송하는데 실패했습니다. F:TB_GridSend() V:send_buf Value to send( 820byte) sent value(-1 byte) [SE00-90602 2015-02-06 13:40:42 <5112> TyIntList TB_grid.c (2348)] 데이터를 전송하는데 실패했습니다. F:TB_GridSend() V:send_buf Value to send( 820byte) sent value(-1 byte) [SE00-90602 2015-02-06 13:40:42 <5112> TyIntList TB_socket.c (713)] 데이터를 전송하는데 실패했습니다. F:TB_SocketSend() Data(CS_INFO) Hint(-1) Error Code(10054) [SE00-90602 2015-02-06 13:40:42 <5112> TyIntList TB_databuffer.c (921)] 데이터를 전송하는데 실패했습니다. F:TB_DataBufferSend() V:send_buf Value to send(80byte) sent value(-1byte) [SE00-90602 2015-02-06 13:40:42 <5112> TyIntList TB_communicate.c (331)] 데이터를 전송하는데 실패했습니다. F:TB_SocketSendResult() [SE00 2015-02-06 13:40:42 <5112> System engine TB_se_master.c (572)] F:SE_MAIN() connect_svcd Child[03] INPUT=[2], DB RETURN=[DB_SUCC] [SE00 2015-02-06 13:40:42 <5112> MagicProject tb_se_proc.cpp (987)] Child[03] F:WorkThread() connection from (10.63.118.40) end ............................ 입니다 . 이러한 로그를 보고 제가 더 할수 있는 부분이 무엇이 있을까요??
485 no image IE 11 호환성 문의 [1]
조성제
7785 2015-01-08
484 no image java 업데이트시 서버에 미치는 영향 [1]
도영곤
8032 2014-09-16
483 no image SE_LOG variable 함수 관련 문의 드립니다. [1]
임상혁aaa
7519 2014-06-26
482 no image RunExcelSheet 구현 [1]
김강중
7575 2014-03-27
481 no image BLOB 처리방법 문의? 파일 [1]
후니7
8926 2014-01-03
480 no image 토인비 변수 비교시 에러 발생(수정) [1]
서원규
7538 2013-03-26
게시판을 이용해 주셔서 감사합니다. 다음양식에 맞게 입력해주세요. * 고객시스템명 : 신세계 상품권 시스템 * TOInB 버전 : 4.0.1.20 * 서버 Platform : AIX 5.3 * 문의 유형(질문/요청/참조) : 질문 * 내용 : 안녕하세요. 아래와 같이 EVENT 처리 후 컴파일시 에러가 발생합니다. =================================================================================== TB_BOOL cfs_vidchk_s01_TB_on_work ( TB_SESSION_PGV *spgv ) { /* To Do, Add your script here */ TBL_Prn(tb_stderr, "CONNECT CUST IP ADDRESS=[ %s ]", REMOTE_ADDR); EXEC SQL SELECT TRIM(OTHNM) INTO :H_DATA FROM GO712T WHERE COMPCD = '01' AND SYSDIV = '07' AND OTHCLCD = '12' AND OTHCD1 = :V_USERID; TBL_Prn (tb_stderr, "H_DATA = [%s]", H_DATA); TBL_Prn (tb_stderr, "V_USERID = [%s]", V_USERID); if (strcmp(REMOTE_ADDR, H_DATA) != 0){ TBL_Prn (tb_stderr, "사용자 IP 체크 오류"); sprintf (TBL_ERR_MSG, "[입력불가]\n사용자 IP 체크 오류"); return FAILED; } return (TB_SUCC); } ================================================================================= if (strcmp(REMOTE_ADDR, H_DATA) != 0){ TBL_Prn (tb_stderr, "사용자 IP 체크 오류"); sprintf (TBL_ERR_MSG, "[입력불가]\n사용자 IP 체크 오류"); return FAILED; } 이 부분 때문에 에러가 발생하는데 어떻게 해야 두 변수 값(REMOTE_ADDR, H_DATA)을 비교 가능한지 알고 싶습니다. 에러코드 "cfs_vidchk_s01.c", line 83.24: 1506-045 (S) Undeclared identifier FAILED. make: The error code from the last command is 1. Stop. REMOTE_ADDR 이변수로 인해 발생하는 에러로 보여집니다. 빠른 답변 부탁드립니다.
479 no image 토인비 변수 비교시 에러 발생 [1]
서원규
7565 2013-03-26
478 no image TOInB EVENT REMOTE_ADDR 변수 관련 문의 [1]
서원규
7711 2013-03-22
Tag List
XE Login