Cenário: Arquivar Dados IoT no Object Storage
Arquive dados mais antigos do esquema do banco de dados de domínio IoT do Autonomous AI Database para o Object Storage após a expiração da janela de retenção de dados ativa, para que você possa acessar os dados após a expiração da janela de retenção de dados ativa.
Use este cenário para definir um limite de retenção para o esquema do banco de dados de domínio IoT, exportar dados que não precisam mais permanecer no ambiente ativo do Autonomous AI Database. Mantenha o arquivamento no serviço Object Storage para acesso ou restauração de longo prazo. O esquema ativo permanece focado na telemetria, nos painéis de controle e na solução de problemas atuais, enquanto o Object Storage preserva registros mais antigos fora do ambiente ativo. Exportar dados históricos em um formato de texto simples de consulta, como Parquet. Exportar dados brutos e rejeitados como arquivos de dump do Data Pump quando você precisar preservar a coluna BLOB content.
Tarefas
- Antes de Começar.
- Etapa 1: Planejar Retenção e Arquivamento de Dados.
- Etapa 2: Escolha o Formato de Arquivamento.
- Etapa 3: Arquivar Dados Históricos no Serviço Object Storage.
- Etapa 4: Arquivar Dados Brutos ou Rejeitados no Serviço Object Storage.
- Etapa 5: Verificar os Objetos de Arquivamento.
- Etapa 6 Opcional: Carregar um Arquivo Compactado do Data Pump em uma Tabela.
Antes de Começar
Você precisa dos privilégios de sistema necessários para ler e gravar em DATA_PUMP_DIR. Consulte Usando o Data Pump. Para concluir esse cenário, você precisa acessar o Autonomous AI Database, o esquema do banco de dados de domínio IoT e o bucket do Object Storage que recebe os arquivos compactados.
Confirme se o seguinte está configurado para o usuário:
- Criar ou selecionar um bucket existente do serviço Object Storage para os arquivos exportados. Para obter mais informações, consulte Colocando Dados no Serviço Object Storage.Seu usuário deve ser membro de um grupo de usuários específico com permissões para criar um bucket. Esta política permite que o grupo de usuários especificado faça tudo com buckets e os objetos associados.
Allow group <user-group-in-customer-tenancy> to manage objects in compartment <bucket-compartment> where target.bucket.name = '<bucket-name>' - Confirme se o usuário do banco de dados pode consultar o esquema IoT de origem:
<domain-short-id>__IOTUse uma política de IoT para permitir que um grupo de usuários tenha acesso total aos recursos de IoT em um compartimento específico.
Allow group <group-name> to manage iot-family in compartment <compartment-name>.Ou use essa política para permitir que um grupo de usuários tenha acesso somente leitura a recursos de IoT em um compartimento específico.
Allow group <group-name> to read iot-family in compartment <compartment-name>. - Crie uma credencial de banco de dados para o serviço Object Storage ou use uma credencial existente que possa gravar no bucket do serviço Object Storage. Consulte Configurando Credenciais e Parâmetros de Local para Armazenamentos de Objetos.
Para criar uma credencial de banco de dados, use esta instrução. Substitua seu OCID de usuário, o ID da tenancy pela tenancy do serviço IoT e a chave de API do OCI pela chave de API do OCI:
BEGIN dbms_cloud.create_credential( credential_name => 'IOT_OBJ_STORE_CRED', user_ocid => 'ocid1.user.oc1..<>', tenancy_ocid => 'ocid1.tenancy.oc1..<>', private_key => '-----BEGIN PRIVATE KEY----- <> -----END PRIVATE KEY----- OCI_API_KEY', fingerprint => '<>' ); EXCEPTION WHEN OTHERS THEN dbms_output.put_line('Credential IOT_OBJ_STORE_CRED creation error.'); END; /
Etapa 1: Planejar Retenção e Arquivamento de Dados
A retenção de dados define por quanto tempo os registros IoT permanecem no esquema de banco de dados do domínio IoT ativo. Mantenha dados recentes ativos quando aplicativos, painéis de controle, análises operacionais ou fluxos de trabalho de solução de problemas precisarem de acesso de baixa latência. Quando os registros estiverem fora da janela de retenção, arquive-os no Object Storage antes de removê-los do esquema ativo. Essa abordagem limita o crescimento no banco de dados operacional e ainda preserva a telemetria mais antiga, cargas úteis brutas e mensagens rejeitadas para auditoria, investigação, análise off-line ou restauração. Para obter mais informações, consulte Atualizando a Retenção de Dados de um Domínio IoT.
Escolha o limite de retenção de seus requisitos de negócios, relatórios e conformidade. Use o mesmo ponto de corte na consulta de exportação e em qualquer processo de limpeza posterior para que o limite de arquivamento seja limpo. As colunas de timestamp, como time_observed para dados históricos e time_received para dados brutos ou rejeitados, são chaves de retenção típicas. Registre o bucket, o prefixo do objeto, o formato de exportação, o nome da credencial, a tabela de origem e o intervalo de tempo de cada conjunto de arquivos compactados para que você possa localizar e recarregar os dados posteriormente.
Etapa 2: Escolha o Formato do Arquivo
Depois de definir o limite de retenção, escolha o formato de exportação com base na tabela do banco de dados de domínio IoT que você deseja arquivar e se precisa preservar os dados BLOB.
- Dados historicizados
- Use
DBMS_CLOUD.EXPORT_DATAcom um formato de texto como Parquet, CSV, JSON ou XML. O Parquet é útil quando os dados mais antigos devem permanecer consultáveis fora do ambiente IoT ativo. - Dados brutos ou rejeitados
- Use
DBMS_CLOUD.EXPORT_DATAcom o formato Data Pump quando a tabela incluir a coluna BLOBcontente você precisar preservar o payload original completo.
Etapa 3: Arquivar Dados Históricos no Object Storage
Os dados históricos já são interpretados pela plataforma IoT. Exporte linhas historiadas que ficaram fora da janela de retenção ao vivo em um formato fácil de consultar para que o relatório ou a análise off-line possam ler o arquivo compactado do Object Storage.
Este exemplo exporta registros com mais de três meses para um objeto Parquet no Object Storage.
begin dbms_cloud.export_data( credential_name => 'IOT_OBJ_STORE_CRED', file_uri_list => 'https://objectstorage.<region>.oraclecloud.com/n/<namespace>/b/<bucket>/o/iot-archive/historized/historized_data_older_than_3_months.parquet', format => json_object( 'type' value 'parquet' ), query => q'[ select * from <domain-short-id>__IOT.HISTORIZED_DATA where time_observed < add_months(systimestamp, -3) ]' ); end; /Para carregar o arquivo compactado Parquet em uma tabela de destino posteriormente, crie uma tabela de destino compatível e use
DBMS_CLOUD.COPY_DATA.begin dbms_cloud.copy_data( table_name => 'HISTORIZED_DATA_ARCHIVE', credential_name => 'IOT_OBJ_STORE_CRED', file_uri_list => 'https://objectstorage.<region>.oraclecloud.com/n/<namespace>/b/<bucket>/o/iot-archive/historized/historized_data_older_than_3_months.parquet', format => json_object( 'type' value 'parquet' ) ); end; /
Etapa 4: Arquivar Dados Brutos ou Rejeitados no Object Storage
Os dados brutos e rejeitados podem incluir a coluna BLOB content. Use uma exportação do Data Pump quando o processo de retenção mover essas linhas para fora do ambiente ativo e você precisar preservar a linha completa, incluindo o conteúdo BLOB. Para arquivar tabelas de banco de dados IoT, use Exportando Dados do Autonomous AI Database para o Object Store ou para Outros Oracle Databases.
Exportar dados brutos:
begin dbms_cloud.export_data( credential_name => 'IOT_OBJ_STORE_CRED', file_uri_list => 'https://objectstorage.<region>.oraclecloud.com/n/<namespace>/b/<bucket>/o/iot-archive/raw/raw_data_older_than_3_months.dmp', format => json_object( 'type' value 'datapump', 'compression' value 'HIGH', 'version' value 'LATEST' ), query => q'[ select * from <domain-short-id>__IOT.RAW_DATA where time_received < add_months(systimestamp, -3) ]' ); end; /Exportar dados rejeitados:
begin dbms_cloud.export_data( credential_name => 'IOT_OBJ_STORE_CRED', file_uri_list => 'https://objectstorage.<region>.oraclecloud.com/n/<namespace>/b/<bucket>/o/iot-archive/rejected/rejected_data_older_than_3_months.dmp', format => json_object( 'type' value 'datapump', 'compression' value 'HIGH', 'version' value 'LATEST' ), query => q'[ select * from <domain-short-id>__IOT.REJECTED_DATA where time_received < add_months(systimestamp, -3) ]' ); end; /
Use
DBMS_CLOUD.COPY_DATA para formatos de texto como Parquet, CSV, JSON ou XML. Para arquivos de dump do Data Pump, use Importação do Data Pump quando precisar restaurar os dados arquivados.Etapa 5: Verificar os Objetos de Arquivamento
Use o comando da CLI do Object Storage oci os object list para confirmar se os arquivos compactados foram gravados no bucket do Object Storage. Para obter mais informações, consulte Listando Buckets do Serviço Object Storage e Listando Objetos do Serviço Object Storage em um Bucket.
oci os object list \
--namespace <namespace> \
--bucket-name <bucket> \
--prefix iot-archive/
Depois de verificar os arquivos compactados, siga seu processo de limpeza de retenção aprovado para remover o intervalo de tempo arquivado do esquema IoT ativo.
Etapa Opcional 6: Carregar um Arquivo Compactado do Data Pump em uma Tabela
Use este procedimento de cópia quando precisar ler linhas brutas ou rejeitadas arquivadas do serviço Object Storage de volta para uma tabela do Autonomous AI Database para investigação, validação ou restauração direcionada. O procedimento lê o arquivo de dump do Data Pump do Object Storage e o carrega na tabela de destino especificada; ele não torna o arquivo compactado parte do caminho de ingestão de IoT ativo. Para uma restauração completa no nível do esquema, use a Importação do Data Pump. Para obter mais informações, consulte Fazer Download do Arquivo de Dump, Executar Importação do Data Pump e Limpar o Armazenamento de Objetos.
Carregue o arquivo de dump do Object Storage em uma tabela de arquivamento de destino:
begin
dbms_cloud.copy_data(
table_name => 'RAW_DATA_ARCHIVE',
credential_name => 'IOT_OBJ_STORE_CRED',
file_uri_list => 'https://objectstorage.<region>.oraclecloud.com/n/<namespace>/b/<bucket>/o/iot-archive/raw/raw_data_older_than_3_months.dmp',
format => json_object(
'type' value 'datapump',
'rejectlimit' value 0
)
);
end;
/
Perguntas Frequentes
Esta seção de Perguntas Frequentes descreve as histórias do usuário de arquivamento do Object Storage neste cenário.
- Quais dados devem permanecer no esquema de banco de dados IoT ativo?
- Mantenha os dados de que aplicativos, painéis de controle, análises operacionais e fluxos de trabalho de solução de problemas precisam para acesso de baixa latência. Arquive registros mais antigos antes que eles fiquem fora da janela de retenção que você define na Etapa 1: Planejar Retenção de Dados e Arquivamento.
- Preciso usar o mesmo formato de arquivamento para cada tabela IoT?
- Não. Use um formato de texto fácil de consultar, como Parquet, para dados históricos quando quiser inspecionar ou analisar registros mais antigos fora do ambiente ativo. Use o formato do Data Pump para dados brutos ou rejeitados quando precisar preservar a linha completa, incluindo a coluna BLOB
content. - Posso consultar dados IoT arquivados posteriormente?
- Sim. Para arquivos Parquet, CSV, JSON ou XML, carregue o objeto em uma tabela de destino compatível com
DBMS_CLOUD.COPY_DATAou use um workflow de relatório que possa ler o formato exportado. Para arquivos de dump do Data Pump, use a Importação do Data Pump ou o procedimento de cópia mostrado na Etapa Opcional 6: Carregar um Arquivo Compactado do Data Pump em uma Tabela quando precisar inspecionar linhas arquivadas em uma tabela de banco de dados. - O que devo gravar para cada conjunto de arquivos?
- Registre a tabela de origem, o limite de retenção, o intervalo de tempo, o bucket do serviço Object Storage, o prefixo do objeto, o formato de exportação, o nome da credencial e o resultado da verificação. Esses metadados ajudam a localizar o objeto de arquivamento correto e recarregar os dados posteriormente.
- Por que a etapa de restauração opcional usa
DBMS_CLOUD.COPY_DATA? - Use
DBMS_CLOUD.COPY_DATAquando precisar de uma carga direcionada de um arquivo compactado do serviço Object Storage para uma tabela de banco de dados para validação, investigação ou restauração parcial. Use a Importação do Data Pump quando precisar de um workflow de restauração completo do Data Pump.
Próximas Etapas
Depois de arquivar e verificar dados IoT, continue com as tarefas de retenção e restauração do seu ambiente.
- Atualize a configuração ou o processo de limpeza de retenção de dados do domínio IoT para que o esquema ativo mantenha apenas a janela operacional necessária.
- Aplique seus requisitos de retenção, ciclo de vida e controle de acesso do serviço Object Storage ao bucket de arquivamento e aos prefixos.
- Documente o local do arquivo, a tabela de origem, o intervalo de tempo, o formato e o resultado da verificação para futuras solicitações de auditoria ou restauração.
- Use
DBMS_CLOUD.COPY_DATAou Importação do Data Pump para recarregar dados arquivados quando precisar inspecionar ou restaurar registros mais antigos.