CREATE SNAPSHOT POLICY¶
Cria uma política de instantâneos. Você associa a política a um ou mais conjuntos de instantâneos. As configurações na política definem o agendamento e os períodos de expiração para cada conjunto de instantâneos que usa a política.
O cronograma determina a frequência com que o Snowflake faz um backup automático e adiciona o instantâneo resultante ao conjunto de instantâneos governado pela política. O período de expiração determina quanto tempo cada instantâneo é retido antes que o Snowflake o exclua automaticamente do conjunto de instantâneos associado.
Dica
A política de instantâneo é opcional para um conjunto de instantâneo. Se você não precisar de backups agendados, um bloqueio de retenção ou um período de expiração, você pode criar um conjunto de instantâneos sem uma política de instantâneos. Você também pode usar ALTER SNAPSHOT SET para aplicar uma política de instantâneos posteriormente a um conjunto de instantâneos existente ou para suspender e retomar os backups agendados especificados na política de instantâneos.
- Consulte também:
ALTER SNAPSHOT POLICY, DROP SNAPSHOT POLICY, SHOW SNAPSHOT POLICIES, CREATE SNAPSHOT SET ALTER SNAPSHOT SET
Sintaxe¶
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> ];
Parâmetros obrigatórios¶
name
Identificador para a política de instantâneos. Deve ser exclusivo para sua conta.
Além disso, o identificador deve começar com um caractere alfabético e não pode conter espaços ou caracteres especiais, a menos que toda a cadeia de caracteres do identificador esteja entre aspas duplas (por exemplo,
"My object"
). Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.Para obter mais informações, consulte Requisitos para identificadores.
Parâmetros opcionais¶
OR REPLACE
Se já existir uma política de instantâneos com esse nome, exclua-a e crie uma nova. Esta cláusula é mutuamente exclusiva com
IF NOT EXISTS
.IF NOT EXISTS
Cria a política de instantâneo somente se não houver uma política de instantâneo com o mesmo nome. Se já existir uma política de instantâneos, o comando retornará uma mensagem de sucesso mesmo que não tenha efeito. Esta cláusula é mutuamente exclusiva com
OR REPLACE
.WITH RETENTION LOCK
Especifica o período de retenção obrigatório para snapshots. Instantâneos com bloqueios de retenção não podem ser excluídos, mesmo por um usuário privilegiado. Para obter mais informações, consulte Restrições para um snapshot com bloqueio de retenção.
Nota
Somente um usuário com o privilégio APPLY SNAPSHOT RETENTION LOCK pode criar uma política de instantâneos com bloqueio de retenção.
Importante
Aplicar uma política de instantâneo com um bloqueio de retenção a um conjunto de instantâneo é irreversível. Devido às sólidas garantias necessárias para a conformidade regulatória, depois de colocar um bloqueio de retenção em um conjunto de instantâneos, não será possível revogar o bloqueio. O suporte Snowflake também não pode revogar esse bloqueio de retenção. Planeje com cuidado antes de definir um bloqueio de retenção em um conjunto de instantâneos com um longo período de expiração, para evitar cobranças inesperadas de armazenamento para conjuntos de instantâneos não excluíveis e para os esquemas e bancos de dados que os contêm.
Se uma organização Snowflake for excluída, ela deixará de ser um cliente Snowflake. Nesse caso, o Snowflake exclui todos os instantâneos, incluindo aqueles com bloqueios de retenção. A exclusão de uma organização Snowflake requer o envolvimento do suporte Snowflake. Não é algo que um administrador possa fazer por acidente.
SCHEDULE = '{ num MINUTE | USING CRON expr time_zone }'
Especifica o cronograma para a criação de instantâneos de um objeto.
Nota
O cronograma mínimo para instantâneos deve ser de 60 minutos.
Cada política de instantâneo deve ter pelo menos uma destas propriedades: de agendamento e de período de expiração. Para obter mais informações, consulte Política de instantâneo.
USING CRON expr time_zone
Especifica uma expressão cron e um fuso horário para o momento em que um instantâneo de um objeto é criado. Oferece suporte a um subconjunto de sintaxe de utilitário cron padrão.
Para uma lista de fusos horários, consulte a lista de fusos horários do banco de dados tz (no Wikipedia).
A expressão cron consiste nos seguintes campos:
# __________ 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) # | | | | | # | | | | | * * * * *
Os seguintes caracteres especiais são suportados:
*
Curinga. Especifica qualquer ocorrência do campo.
L
Significa “último”. Quando usado no campo do dia da semana, permite especificar construções como “a última sexta-feira” (“5L”) de um determinado mês. No campo do dia do mês, ele especifica o último dia do mês.
/n
Indica a enésima instância de uma determinada unidade de tempo. Cada quanta de tempo é computada independentemente. Por exemplo, se
4/3
estiver especificado no campo do mês, o instantâneo será programado para abril, julho e outubro (ou seja, a cada 3 meses, começando com o quarto mês do ano). O mesmo cronograma é mantido nos anos seguintes. Ou seja, o instantâneo não é programado para ser executado em janeiro (3 meses após a execução de outubro).
Nota
Atualmente, a expressão cron avalia apenas em relação ao fuso horário especificado. Alterar o valor do parâmetro TIMEZONE para a conta (ou definir o valor no nível do usuário ou da sessão) não altera o fuso horário para o instantâneo.
A expressão cron define todos os tempos de execução válidos para o instantâneo. O Snowflake tenta criar um instantâneo com base nesse cronograma; no entanto, qualquer tempo de execução válido é ignorado se uma execução anterior não tiver sido concluída antes do próximo tempo de execução válido começar.
Quando tanto um dia específico do mês como um dia da semana são incluídos na expressão cron, o instantâneo é programada em dias que satisfaçam o dia do mês ou o dia da semana. Por exemplo,
SCHEDULE = 'USING CRON 0 0 10-20 * TUE,THU UTC'
agenda um instantâneo às 0AM (meia-noite) em qualquer dia de 10 a 20 e também em qualquer terça ou quinta-feira fora dessas datas.
num MINUTE
Especifica um intervalo (em minutos) de tempo de espera entre instantâneos. Aceita apenas números inteiros positivos.
Também oferece suporte à sintaxe
num M
.Para evitar ambiguidade, um tempo de intervalo base é definido nas seguintes circunstâncias:
Quando o objeto é criado (usando CREATE SNAPSHOT SET … WITH SNAPSHOT POLICY).
Quando um intervalo diferente é definido (usando ALTER SNAPSHOT SET … APPLY SNAPSHOT POLICY ou ALTER SNAPSHOT POLICY … SET SCHEDULE).
O tempo de intervalo base inicia o contador de intervalo a partir da hora atual do relógio. Por exemplo, se o valor de INTERVAL for definido como
10
e o instantâneo agendado for habilitado às 9:03 AM, os próximos instantâneos serão criados às 9:13 AM, às 9:23 AM e assim por diante. Observe que fazemos o melhor para assegurar uma precisão absoluta, mas só garantimos que um instantâneo não seja executado antes do intervalo definido ocorrer (ou seja, no exemplo atual, o instantâneo poderia ser executado primeiro às 9:14 AM, mas definitivamente não será executado às 9:12 AM).
EXPIRE_AFTER_DAYS = days_integer
Especifica o número de dias até que o instantâneo expire. O Snowflake exclui automaticamente os instantâneos expirados. Se esse parâmetro não for especificado, os instantâneos permanecerão no conjunto de instantâneos até serem excluídos manualmente do conjunto.
Valor mínimo:
1
.Valor máximo:
3653
(aproximadamente 10 anos) se você não especificar a cláusulaSCHEDULE
. Se você especificar a cláusulaSCHEDULE
, o máximo depende da frequência com que os instantâneos são tirados. Para obter mais informações, consulte Limitações dos instantâneos durante o período de versão preliminar pública.
Nota
Cada política de instantâneo deve ter pelo menos uma destas propriedades: de agendamento e de período de expiração. Para obter mais informações, consulte Política de instantâneo.
COMMENT = 'string_literal'
Especifica um comentário para a política de instantâneos.
Padrão: sem valor
Requisitos de controle de acesso¶
A função usada para executar essa operação deve ter, no mínimo, os seguintes privilégios:
Privilégio |
Notas |
---|---|
CREATE SNAPSHOT POLICY |
A função usada para criar uma política de instantâneos deve ter esse privilégio no esquema no qual a política é criada. |
APPLY SNAPSHOT RETENTION LOCK |
Somente um usuário com esse privilégio na conta pode criar uma política de instantâneos com bloqueio de retenção. |
Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.
Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.
Notas de uso¶
A retenção Time Travel e Failsafe não se aplica a instantâneos. Um instantâneo não pode ser recuperado depois que expirar.
Em relação aos metadados:
Atenção
Os clientes devem garantir que nenhum dado pessoal (exceto para um objeto do usuário), dados sensíveis, dados controlados por exportação ou outros dados regulamentados sejam inseridos como metadados ao usar o serviço Snowflake. Para obter mais informações, consulte Campos de metadados no Snowflake.
Importante
Se a política de instantâneos tiver um bloqueio de retenção aplicado a ela e houver quaisquer instantâneos não expirados no conjunto de instantâneos, não será possível excluir o conjunto de instantâneos. Nesse caso, você deve aguardar até que todos os instantâneos no conjunto expirem. Esta restrição aplica-se até mesmo a funções privilegiadas como ACCOUNTADMIN, e ao suporte Snowflake. Por esse motivo, tenha cuidado ao especificar o bloqueio de retenção e um longo período de expiração em uma política de instantâneo.
Exemplos¶
Criar uma política de instantâneo que crie um instantâneo a cada hora e expire após 90 dias:
CREATE SNAPSHOT POLICY hourly_snapshot_policy
SCHEDULE = '60 MINUTE'
EXPIRE_AFTER_DAYS = 90
COMMENT = 'Hourly snapshots that expire after 90 days';
Crie uma política de instantâneos com um bloqueio de retenção que crie um instantâneo a cada 24 horas e expire após 90 dias. Os instantâneos criados usando essa política de instantâneos não podem ser modificados ou excluídos antes do período de expiração terminar:
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';
Crie uma política de instantâneo usando uma expressão cron para o agendamento. A instrução a seguir cria uma política que cria instantâneos todas as terças e sextas-feiras da semana às 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';