본문 바로가기
AWS

[AWS-Redshift] [Amazon](500310) Invalid operation: VACUUM is running; 오류

by hs_seo 2019. 7. 18.
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

 

반응형