작업 문제 해결

이 섹션에서는 예상대로 실행되지 않는 문제 해결 작업에 대한 체계적인 접근 방식을 설명합니다.

이 항목의 내용:

작업이 실행되지 않음

1단계: 작업이 실행되지 않았는지 확인

TASK_HISTORY 테이블 함수를 쿼리하여 작업이 실행되지 않았는지 확인합니다. 작업이 성공적으로 실행되었지만 작업 정의의 SQL 문이 실패했을 수 있습니다. 특히, 예약 및 완료 시간, 오류 코드 및 메시지를 기록해 둡니다.

작업에 선행 작업이 있는 경우(작업의 DAG 에서) 선행 작업이 성공적으로 완료되었는지 확인합니다.

2단계: 작업이 재개되었는지 확인

작업(또는 DAG의 각 작업)의 상태가 RESUMED인지 확인(DESCRIBE TASK 또는 SHOW TASKS 사용)합니다.

개별 작업을 재개하려면 ALTER TASK … RESUME을 실행합니다. 루트 작업에 연결된 모든 종속 작업을 재귀적으로 활성화하려면 각 작업을 개별적으로 활성화하는 대신 SYSTEM$TASK_DEPENDENTS_ENABLE 함수를 쿼리합니다.

작업 세부 정보를 검토하는 동안 작업에 일정이 있는 경우 cron 식도 확인합니다. 예약된 시간이 한 번 이상 발생했는지 확인합니다.

3단계: 작업 소유자에게 부여된 권한 확인

작업 소유자(즉, 작업에 대한 OWNERSHIP 권한이 있는 역할)에 작업 실행에 필요한 다음 권한이 있는지 확인합니다.

오브젝트

권한

참고

계정

EXECUTE TASK

역할이 소유한 모든 작업을 실행하기 위해 필요합니다. 역할에 대한 EXECUTE TASK 권한을 취소하면 모든 후속 작업이 해당 역할에서 시작되지 않습니다.

데이터베이스

USAGE

스키마

USAGE

작업

OWNERSHIP

웨어하우스

USAGE

SHOW GRANTS TO ROLE role_name 을 사용하여 역할에 부여된 권한을 확인합니다.

4단계: 조건 확인

작업에 SYSTEM$STREAM_HAS_DATA 조건이 있는 WHEN 절이 포함된 경우 작업이 마지막으로 실행되도록 예약된 시간에 변경 데이터 캡처(CDC) 레코드가 지정된 스트림에 포함되어 있는지 확인합니다. 스트림에 대한 기록 데이터는 AT | BEFORE 절을 사용하여 쿼리할 수 있습니다.

작업 시간 초과 또는 일정 윈도우 초과

작업의 단일 실행에 대한 기본 제한은 60분입니다. 이 제한은 종료되지 않는 작업에 대한 보호 수단으로 구현되었습니다. TASK_HISTORY 테이블 함수를 쿼리합니다. 작업이 취소되거나 작업에 대해 예약된 윈도우을 초과한 경우 원인은 종종 웨어하우스 크기가 작기 때문입니다. 웨어하우스 크기를 검토하고 일정 창 또는 1시간 제한에 맞게 늘리는 것이 좋습니다.

또는, ALTER TASK … SET USER_TASK_TIMEOUT_MS = <num> 을 실행하여 작업에 대한 시간 제한을 늘리는 것이 좋습니다. 특정 작업에 대해 USER_TASK_TIMEOUT_MS 매개 변수가 설정되었는지 확인하려면 다음 문을 실행하십시오.

SHOW PARAMETERS LIKE 'USER_TASK_TIMEOUT_MS' IN TASK <task_name>;
Copy

여기서 <작업_이름> 은 시간 초과 제한 값을 조정 중인 작업의 이름입니다. 이 문에서 반환되는 레코드가 없을 경우 현재 이 작업의 기본 시간 제한은 3600000 밀리초(60분)입니다.

쿼리 병렬화 문제가 있는 경우에는 웨어하우스 크기를 늘리는 것도, 시간 초과 제한 값을 늘리는 것도 도움이 되지 않을 수 있습니다. 작업에 의해 실행되는 SQL 문을 다시 작성하는 다른 방법을 고려하십시오.