안녕하세요 마블랑입니다.
이번 포스팅은 오라클DB를 사용하다 발생하는 에러에 관한 내용입니다.
해당 에러메시지는 "ORA-01013 사용자가 현재 작업의 취소를 요청했습니다" 라는 메시지로
영어버전을 사용하시는 분들은 다음과 같이 영문으로 표시가 됩니다.
"ORA-01013 user requested cancel of current operation"
위 에러는 오라클DB에서 쿼리문을 실행하고 데이터를 처리하는 도중에 발생합니다.
에러의 원인은 코드상에서 쿼리문을 실행하고 처리를 요청하였는데 오라클이 이에 대한 응답을 주지 않아
데이터베이스를 연결한 객체에서 요청이 오지 않으므로 작업을 취소하고 중지를 하게됩니다.
작업을 취소하기 때문에 오라클은 처리 도중에 작업자가 취소하였다는 메시지를 출력하고 작업을 중지하는 것입니다.
이 에러를 해결하기 위해서는 쿼리의 실행 타임아웃 시간을 늘려줘야 합니다.
예를 들어 MFC에서 CDatabase 클래스를 이용하여 오라클에 접근을 하였다고 하면 CDatabase::SetQueryTimeout 함수를 실행하여 쿼리의 타임아웃 시간을 늘려줍니다.
SetQueryTimeout 함수의 원형은 다음과 같습니다.
void CDatabase::SetQueryTimeout(
DWORD dwSeconds
);
매개변수는 초(sec)를 입력하면 되므로 1분으로 설정하려면 60, 2분으로 설정하려면 120을 넣어주면 되겠습니다
예를 MFC의 CDatabase 객체로 예시하였지만 다른 언어나 다른 DB관련 객체를 이용하였다면 해당 객체에 맞춰
쿼리의 타임아웃 시간을 설정해주면 ORA-01013 에러는 해결이 됩니다.
이상 오라클 ORA-01013 에러의 해결법이었습니다.
'개발 이야기 > 개발자 이야기' 카테고리의 다른 글
[데이터베이스] SQL Query문 간단 정리 (SELECT, INSERT, UPDATE, DELETE 쿼리문 사용법) (6) | 2019.01.05 |
---|---|
카이사르 암호 시저암호 치환암호 Rot13 키없는 암호 알고리즘 (0) | 2018.12.22 |
[데이터베이스] Window(윈도우)7 과 10 에서의 ODBC 드라이버 등록하기 (0) | 2018.11.16 |
[MFC] CString 문자열 추출 (0) | 2018.11.08 |
[MFC] CString을 특정문자로 나누기 (0) | 2018.11.08 |
댓글