현상
DBMS_JOB.SUMMIT 을 사용하여 INTERVAL 을 주어서 JOB 을 수행할 시에 DBA_JOB_HISTORY 상에서는 SUCCESS 로 확인되나, 실제로는 반영되지 않는 현상이 발생하였습니다.
(반면, DBMS_JOB.RUN을 통해 직접 반영할 시 정상적으로 수행됩니다.)
원인
작업 할당 대기 상태의 WTHR에 있을 때, STMT_CANCEL, SESS_KILL 등 CHK_SESSKILL condition의 signal이 전송될 경우 따로 err stack을 초기화해주는 로직이 없어 error가 계속 남아있게 됩니다.
해결
1.
패치를 적용합니다. (적용 패치: 297861a)
주의
티맥스티베로에서 제공하는기술지원을 통해 패치를 적용합니다.
2.
회피책을 설정하여 오류 해결을 시도할 수 있습니다.
•
회피책: 에러코드를 인위적으로 남겨 err stack 초기화 하는 방식으로 임시 조치 가능합니다.
아래는 회피책을 적용해 해결하는 순서입니다.
1.
PSM 내 내용 수정
RAISE_APPLICATION_ERROR(-20000, 'CLEAR ERROR STACK'); 적용20000 ~ -20999 사이의 에러코드는 사용자 지정 에러코드로 해당 범위 내에서 아무 값이나 사용해도 무방합니다.
CREATE OR REPLACE PROCEDURE TIBERO."JOB_TEST"
IS
errCode VARCHAR2 (20);
errMsg VARCHAR2 (500);
BEGIN
RAISE_APPLICATION_ERROR(-20000, 'CLEAR ERROR STACK');
DELETE FROM TIBERO.BOOKS_LINK;
INSERT INTO TIBERO.BOOKS_LINK
(
CTRT_ACCT_BOOK_MNG_NO
, FIS_YEAR
, EXP_FG
…(중략)
SQL
복사
2.
수행 결과
tbSQL 6
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
SQL> select * from dba_job_history where job=16;
JOB SCHEMA_USER START_DATE END_DATE RESULT COMMENTS
------ ----------- --------------------- -------------------- --------- --------------------
16 18 20230428 14:38:30 20230428 12:02:45 FAIL ERROR CODE= -20000
16 18 20230428 14:40:08 20230428 14:42:50 SUCCESS
SQL
복사
3.
수행 이후 주석 처리 방법
RAISE_APPLICATION_ERROR 포함하여 JOB 1회 수행 후 주석 처리합니다.
CREATE OR REPLACE PROCEDURE TIBERO."JOB_TEST"
IS
errCode VARCHAR2 (20);
errMsg VARCHAR2 (500);
BEGIN
--RAISE_APPLICATION_ERROR(-20000, 'CLEAR ERROR STACK');
DELETE FROM TIBERO.BOOKS_LINK;
INSERT INTO TIBERO.BOOKS_LINK
(
CTRT_ACCT_BOOK_MNG_NO
, FIS_YEAR
, EXP_FG
…(중략)
tbSQL 6
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
SQL> select * from dba_job_history where job=16;
JOB SCHEMA_USER START_DATE END_DATE RESULT COMMENTS
------ ----------- --------------------- -------------------- --------- --------------------
16 18 20230428 14:38:30 20230428 12:02:45 SUCCESS
16 18 20230428 14:40:08 20230428 14:42:50 SUCCESS
SQL
복사