본문 바로가기
개발 이야기/개발자 이야기

[데이터베이스] ORA-01013 사용자가 현재 작업의 취소를 요청했습니다.(user requested cancel of current operation) 해결방법(CDatabase 타임아웃 설정,timeout set)

by 런던살자 2018. 11. 18.

안녕하세요 마블랑입니다.

 

이번 포스팅은 오라클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 에러의 해결법이었습니다.

 

댓글