CREATE SNAPSHOT POLICY

스냅샷 정책을 만듭니다. 정책을 하나 이상의 스냅샷 세트와 연결합니다. 정책의 설정은 정책을 사용하는 각 스냅샷 세트의 일정과 만료 기간을 정의합니다.

일정에 따라 Snowflake가 자동으로 백업을 수행하고 결과 스냅샷을 정책이 적용되는 스냅샷 세트에 추가하는 빈도가 결정됩니다. 만료 기간에 따라 Snowflake가 연결된 스냅샷 세트에서 스냅샷을 자동으로 삭제하기 전에 각 스냅샷이 보존되는 기간이 결정됩니다.

스냅샷 정책은 스냅샷 세트에 대해 선택 사항입니다. 예약된 백업, 보존 잠금 또는 만료 기간이 필요하지 않은 경우 스냅샷 정책 없이 스냅샷 세트를 생성할 수 있습니다. ALTER SNAPSHOT SET을 사용하여 스냅샷 정책을 나중에 기존 스냅샷 세트에 적용하거나 스냅샷 정책에 지정된 예약된 백업을 일시 중단했다가 재개할 수도 있습니다.

참고 항목:

ALTER SNAPSHOT POLICY, DROP SNAPSHOT POLICY, SHOW SNAPSHOT POLICIES, CREATE SNAPSHOT SET ALTER SNAPSHOT SET

구문

CREATE [OR REPLACE] SNAPSHOT POLICY [IF NOT EXISTS] <name>
   [ WITH RETENTION LOCK ]
   [ SCHEDULE = '{ <num> MINUTE | USING CRON <expr> <time_zone> }' ]
   [ EXPIRE_AFTER_DAYS = <days_integer> ]
   [ COMMENT = <string> ];
Copy

필수 매개 변수

name

스냅샷 정책의 식별자입니다. 계정에 대해 고유해야 합니다.

또한, 식별자는 알파벳 문자로 시작해야 하며 전체 식별자 문자열을 큰따옴표(예: "My object")로 묶지 않는 한 공백이나 특수 문자를 포함할 수 없습니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.

자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.

선택적 매개 변수

OR REPLACE

이 이름의 스냅샷 정책이 이미 있는 경우 삭제하고 새 스냅샷 정책을 만듭니다. 이 절은 IF NOT EXISTS 와 상호 배타적입니다.

IF NOT EXISTS

이름이 같은 스냅샷 정책이 없는 경우에만 스냅샷 정책을 생성합니다. 스냅샷 정책이 이미 있는 경우 이 명령은 효과가 없더라도 성공 메시지를 반환합니다. 이 절은 OR REPLACE 와 상호 배타적입니다.

WITH RETENTION LOCK

스냅샷의 필수 보존 기간을 지정합니다. 보존 잠금이 설정된 스냅샷은 권한이 있는 사용자라도 삭제할 수 없습니다. 자세한 내용은 보존 잠금이 있는 스냅샷에 대한 제한 사항 을 참조하세요.

참고

APPLY SNAPSHOT RETENTION LOCK 권한이 있는 사용자만 보존 잠금이 설정된 스냅샷 정책을 생성할 수 있습니다.

중요

스냅샷 세트에 보존 잠금이 설정된 스냅샷 정책을 적용하면 되돌릴 수 없습니다. 규정 준수에 필요한 강력한 보장으로 인해 스냅샷 세트에 보존 잠금을 적용한 후에는 잠금을 취소할 수 없습니다. Snowflake 지원도 이러한 보존 잠금을 취소할 수 없습니다. 만료 기간이 긴 스냅샷 세트에 보존 잠금을 설정하기 전에 신중하게 계획하여 삭제할 수 없는 스냅샷 세트 및 이를 포함하는 스키마와 데이터베이스에 예기치 않은 저장소 요금이 부과되지 않도록 하세요.

Snowflake 조직이 삭제되면 해당 조직은 더 이상 Snowflake 고객이 아닙니다. 이 경우 Snowflake는 보존 잠금이 설정된 스냅샷을 포함하여 모든 스냅샷을 삭제합니다. Snowflake 조직을 삭제하려면 Snowflake 지원의 참여가 필요합니다. 관리자가 실수로 삭제할 수 없습니다.

SCHEDULE = '{ num MINUTE | USING CRON expr time_zone }'

오브젝트의 스냅샷 생성 일정을 지정합니다.

참고

스냅샷의 최소 일정은 60분이어야 합니다.

각 스냅샷 정책에는 일정 및 만료 기간 속성 중 하나 또는 둘 다 있어야 합니다. 자세한 내용은 스냅샷 정책 섹션을 참조하십시오.

  • USING CRON expr time_zone

    오브젝트의 스냅샷이 생성되는 시점의 cron 식과 타임존을 지정합니다. 표준 cron 유틸리티 구문의 서브세트를 지원합니다.

    타임존 목록은 (Wikipedia에서) tz 데이터베이스 타임존 목록 을 참조하십시오.

    cron 식은 다음 필드로 구성됩니다.

    # __________ minute (0-59)
    # | ________ hour (0-23)
    # | | ______ day of month (1-31, or L)
    # | | | ____ month (1-12, JAN-DEC)
    # | | | | __ day of week (0-6, SUN-SAT, or L)
    # | | | | |
    # | | | | |
      * * * * *
    

    다음 특수 문자가 지원됩니다.

    *

    와일드카드. 필드의 모든 발생을 지정합니다.

    L

    “last(마지막)”를 의미합니다. day-of-month(요일) 필드에 사용하면 해당 월의 “마지막 금요일”(“5L”)과 같은 구문을 지정할 수 있습니다. day-of-month 필드에서는 해당 월의 마지막 요일을 지정합니다.

    /n

    주어진 시간 단위의 n번째 인스턴스를 나타냅니다. 시간의 각 양은 독립적으로 계산됩니다. 예를 들어, 월 필드에 4/3 이 지정된 경우 스냅샷은 4월, 7월, 10월로 예약됩니다(즉, 해당 연도의 4번째 달부터 3개월마다). 다음 해에도 동일한 일정이 유지됩니다. 즉, 스냅샷은 1월(10월 실행 후 3개월)에 실행되도록 예약되지 않습니다.

    참고

    • cron 식은 현재 지정된 타임존에 대해서만 계산됩니다. 계정에 대한 TIMEZONE 매개 변수 값을 변경해도(또는 사용자 또는 세션 수준에서 값 설정) 스냅샷의 타임존이 변경되지는 않습니다.

    • cron 식은 스냅샷에 대한 모든 유효한 실행 시간을 정의합니다. Snowflake는 이 일정에 따라 스냅샷을 만들려고 시도하지만, 다음 유효한 실행 시간이 시작되기 전에 이전 실행이 완료되지 않으면 유효한 실행 시간은 건너뜁니다.

    • 특정 일자와 요일이 cron 식에 포함된 경우, 날짜 또는 요일 중 하나`를 만족하는 날짜에 스냅샷이 고침이 예약됩니다. 예를 들어, :samp:`SCHEDULE = ‘USING CRON 0 0 10-20 * TUE,THU UTC’ 는 해당 월의 10일에서 20일 사이에서 0AM(자정)에 스냅샷을 예약하고 해당 날짜 이외의 모든 화요일이나 목요일에도 스냅샷을 예약합니다.

  • num MINUTE

    스냅샷 사이의 대기 시간 간격(분)을 지정합니다. 양의 정수만 허용합니다.

    또한 num M 구문을 지원합니다.

    모호성을 피하기 위해 다음과 같은 상황에서 *기본 간격 시간*이 설정됩니다.

    • 오브젝트를 생성할 때(CREATE SNAPSHOT SET … WITH SNAPSHOT POLICY 사용)

    • 다른 간격이 설정될 때(ALTER SNAPSHOT SET … APPLY SNAPSHOT POLICY 또는 ALTER SNAPSHOT POLICY … SET SCHEDULE 사용)

    기본 간격 시간은 현재 시계 시간부터 간격 카운터를 시작합니다. 예를 들어, INTERVAL 값 10 이 설정되고 예약된 스냅샷이 9:03 AM에 활성화되면 다음 스냅샷은 9:13 AM, 9:23 AM 등에 생성됩니다. 당사는 절대 정밀도를 보장하기 위해 최선을 다하지만, 설정된 간격이 발생하기 전에 스냅샷이 실행되지 않는다는 것만 보장합니다(예: 현재 예제에서 스냅샷은 9:14 AM에 처음 실행될 수 있지만, 9:12 AM에는 확실히 실행되지 않음).

EXPIRE_AFTER_DAYS = days_integer

스냅샷이 만료될 때까지의 일 수를 지정합니다. Snowflake는 만료된 스냅샷을 자동으로 삭제합니다. 이 매개 변수를 지정하지 않으면 스냅샷은 스냅샷 세트에서 수동으로 삭제될 때까지 스냅샷 세트에 유지됩니다.

참고

각 스냅샷 정책에는 일정 및 만료 기간 속성 중 하나 또는 둘 다 있어야 합니다. 자세한 내용은 스냅샷 정책 섹션을 참조하십시오.

COMMENT = 'string_literal'

스냅샷 정책에 대한 설명을 지정합니다.

기본값: 값 없음

액세스 제어 요구 사항

이 작업을 실행하는 데 사용되는 역할 에는 최소한 다음 권한 이 있어야 합니다.

권한

참고

CREATE SNAPSHOT POLICY

스냅샷 정책을 생성하는 데 사용되는 역할은 정책이 생성된 스키마에 대해 이 권한이 있어야 합니다.

APPLY SNAPSHOT RETENTION LOCK

계정에 대해 이 권한이 있는 사용자만 보존 잠금이 설정된 스냅샷 정책을 생성할 수 있습니다.

지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.

보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.

사용법 노트

  • Time Travel 및 Failsafe 보존은 스냅샷에 적용되지 않습니다. 스냅샷은 만료된 후에는 복구할 수 없습니다.

  • 메타데이터 관련:

    주의

    고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.

중요

스냅샷 정책에 보존 잠금이 적용되어 있고 스냅샷 세트에 만료되지 않은 스냅샷이 있는 경우 스냅샷 세트를 삭제할 수 없습니다. 이 경우 세트의 모든 스냅샷이 만료될 때까지 기다려야 합니다. 이 제한은 ACCOUNTADMIN과 같은 권한이 있는 역할과 Snowflake 지원에도 적용됩니다. 따라서 스냅샷 정책에서 보존 잠금과 긴 만료 기간을 지정할 때는 주의해야 합니다.

매시간 스냅샷을 생성하고 90일 후에 만료되는 스냅샷 정책을 만듭니다.

CREATE SNAPSHOT POLICY hourly_snapshot_policy
  SCHEDULE = '60 MINUTE'
  EXPIRE_AFTER_DAYS = 90
  COMMENT = 'Hourly snapshots that expire after 90 days';
Copy

24시간마다 스냅샷을 생성하고 90일 후에 만료되는 보존 잠금이 있는 스냅샷 정책을 만듭니다. 이 스냅샷 정책을 사용하여 생성된 스냅샷은 만료 기간이 종료되기 전에는 수정하거나 삭제할 수 없습니다.

CREATE SNAPSHOT POLICY daily_snapshot_policy_with_lock
  WITH RETENTION LOCK
  SCHEDULE = '1440 MINUTE'
  EXPIRE_AFTER_DAYS = 90
  COMMENT = 'regulatory backups expire after 90 days with retention lock';
Copy

일정에 대한 cron 식을 사용하여 스냅샷 정책을 만듭니다. 다음 문은 매주 화요일과 금요일 11PM에 스냅샷을 생성하는 정책을 생성합니다.

CREATE SNAPSHOT POLICY twice_weekly_snapshot_policy
  SCHEDULE = 'USING CRON 0 23 * * 2,5 UTC'
  EXPIRE_AFTER_DAYS = 7
  COMMENT = 'Twice-weekly snapshots that expire after 7 days';
Copy