[AWS-Redshift] [Amazon](500310) Invalid operation: VACUUM is running; 오류
Caused by: java.sql.SQLException: [Amazon](500310) Invalid operation: VACUUM is running;
at com.amazon.redshift.client.messages.inbound.ErrorResponse.toErrorException(Unknown Source)
at com.amazon.redshift.client.PGMessagingContext.handleErrorResponse(Unknown Source)
at com.amazon.redshift.client.PGMessagingContext.handleMessage(Unknown Source)
at com.amazon.jdbc.communications.InboundMessagesPipeline.getNextMessageOfClass(Unknown Source)
at com.amazon.redshift.client.PGMessagingContext.doMoveToNextClass(Unknown Source)
at com.amazon.redshift.client.PGMessagingContext.getErrorResponse(Unknown Source)
at com.amazon.redshift.client.PGClient.handleErrorsScenario3(Unknown Source)
at com.amazon.redshift.client.PGClient.handleErrors(Unknown Source)
at com.amazon.redshift.client.PGClient.handleAtomicStmtErrors(Unknown Source)
레드쉬프트(Redshift)의 Vacuum 작업은 데이터 파편화를 정리하는 작업입니다. Vacuum 동작은 한번씩 동작할 수 있습니다. 기존에 동작중인 Vacuum 동작이 있는데 다시 요청했을 때 오류가 발생합니다.이번 경우는 MR로 작업을 요청하고 MR을 kill 하였으나, 레드쉬프트 내부적으로 계속 Vacuum 작업이 진행되어 발생하였습니다. 이럴때는 동작중인 프로세스를 확인하고, Vacuum 작업을 kill 하거나 작업이 완료되는 것을 기다리면 됩니다.
# 동작중인 쿼리 확인
select pid, user_name, starttime, query
from stv_recents
where status='Running';
pid | btrim | starttime | substring
-------+------------+----------------------------+----------------------
18764 | masteruser | 2013-03-28 18:39:49.355918 | select sellerid, fir
(1 row)
# 실행중인 쿼리 취소
cancel 18764;
https://docs.aws.amazon.com/ko_kr/redshift/latest/dg/determine_pid.html
실행 중인 쿼리의 프로세스 ID(PID) 확인 - Amazon Redshift
실행 중인 쿼리의 프로세스 ID(PID) 확인 앞의 예에서는 SVL_QLOG 뷰에서 완료된 쿼리의 쿼리 ID와 프로세스 ID(PID)를 가져오는 방법을 배웠습니다. 아직도 실행 중인 쿼리의 PID를 찾아야 합니다. 예를 들어 실행에 너무 긴 시간이 소요되는 쿼리를 취소해야 하는 경우, PID가 필요합니다. STV_RECENTS 시스템 테이블을 쿼리하여 실행 중인 쿼리의 프로세스 ID 목록과 해당 쿼리 문자열을 가져올 수 있습니다. 쿼리가 여러 개의 PID
docs.aws.amazon.com
https://docs.aws.amazon.com/ko_kr/redshift/latest/dg/cancel_query.html
6단계: 쿼리 취소 - Amazon Redshift
6단계: 쿼리 취소 시간이 너무 오래 걸리거나 과도한 클러스터 리소스를 사용하는 쿼리를 사용자가 실행하는 경우, 해당 쿼리를 취소해야 합니다. 예를 들어 사용자가 티켓 판매자의 이름과 판매된 티켓 수량이 포함된 티켓 판매자 목록을 만들려 할 수 있습니다. 다음 쿼리는 SALES 테이블과 USERS 테이블에서 데이터를 선택하고 WHERE 절에서 SELLERID와 USERID를 일치시켜 두 테이블을 조인합니다. select sellerid, firstname
docs.aws.amazon.com