Use o Data Transmission Service (DTS) para sincronizar dados de um banco de dados Oracle auto-gerenciado com um projeto do MaxCompute. O DTS oferece suporte à sincronização de schema, sincronização completa de dados e sincronização incremental de dados (captura de alterações via redo logs e archived logs).
Como funciona
O DTS sincroniza dados em três fases sequenciais:
Schema synchronization — O DTS cria as tabelas de destino no MaxCompute. Cada nome de tabela recebe o sufixo
_base. Por exemplo, se a tabela de origem forcustomer, o DTS criará a tabelacustomer_baseno MaxCompute.Full data synchronization — O DTS copia todas as linhas existentes do banco de dados Oracle de origem para as tabelas correspondentes com sufixo
_baseno MaxCompute.Incremental data synchronization — O DTS lê os redo logs e archived logs do Oracle e grava os registros de alteração em uma tabela separada de dados incrementais no MaxCompute. O nome da tabela de dados incrementais recebe o sufixo
_log. Por exemplo, as alterações na tabelacustomersão gravadas emcustomer_log.
Faturamento
|
Tipo de sincronização |
Taxa |
|
Sincronização de schema e sincronização completa de dados |
Gratuito |
|
Sincronização incremental de dados |
Pago. Para mais informações, consulte Visão geral do faturamento. |
Operações SQL suportadas
|
Tipo de operação |
Instruções SQL |
|
DML (linguagem de manipulação de dados) |
INSERT, UPDATE, DELETE |
|
DDL (linguagem de definição de dados) |
ADD COLUMN (colunas de atributo não suportadas) |
Nota
O DTS não sincroniza chaves estrangeiras. As operações em cascata e de exclusão no banco de dados de origem não são replicadas para o destino.
Pré-requisitos
Antes de começar, certifique-se de ter:
Ativado o MaxCompute e criado um projeto do MaxCompute. Consulte Activate MaxCompute and DataWorks e Create a MaxCompute project.
Configurado uma lista de permissões de endereços IP no cliente do MaxCompute para permitir o acesso do DTS. Consulte Configure an IP address whitelist to allow access from Alibaba Cloud services to MaxCompute.
-
Criado um par de AccessKey para a conta Alibaba Cloud proprietária do projeto MaxCompute de destino. Consulte Criar um par de AccessKey.
Nota
Alternativamente, crie um usuário RAM e defina-o como superadministrador do projeto MaxCompute.
-
Configurado o banco de dados Oracle de origem:
Executando no modo ARCHIVELOG, com arquivos de archived log acessíveis e um período de retenção adequado. Consulte Gerenciando arquivos de archived redo log.
Supplemental logging ativado, com
SUPPLEMENTAL_LOG_DATA_PKeSUPPLEMENTAL_LOG_DATA_UIdefinidos como Yesconfigurações de notificação de alerta. Consulte Supplemental logging.Uma conta de banco de dados com as permissões necessárias. Consulte Prepare an Oracle database.
Revisado as capacidades e limites do DTS para sincronização com Oracle e, opcionalmente, avaliado a viabilidade da migração com o Advanced Database & Application Migration (ADAM). Consulte Visão geral.
Limitações
Requisitos do banco de dados de origem
As tabelas devem possuir uma chave primária ou chave única, com todos os campos únicos. Caso contrário, linhas duplicadas poderão aparecer no destino.
Oracle 12c e versões posteriores: os nomes das tabelas não podem exceder 30 bytes.
Ao renomear tabelas ou colunas no destino (Selected Objects > clique com o botão direito), uma única tarefa suporta até 1,000 tables. Para cargas de trabalho maiores, divida as tabelas em várias tarefas ou sincronize todo o banco de dados sem renomeação.
Oracle Real Application Cluster (RAC): utilize um endereço IP virtual (VIP), e não um endereço IP Single Client Access Name (SCAN). Após especificar o VIP, o failover de nó não é suportado.
Se o banco de dados Oracle RAC se conectar via Express Connect, especifique um VIP ao configurar a tarefa.
Requisitos de retenção de logs
Os redo logs e archived logs devem atender aos seguintes períodos mínimos de retenção:
|
Modo de sincronização |
Período mínimo de retenção |
|
Apenas sincronização incremental de dados |
24 horas |
|
Sincronização completa de dados + sincronização incremental de dados |
7 dias |
Se os logs forem limpos antes que o DTS possa lê-los, a tarefa falhará. Em casos extremos, pode ocorrer inconsistência ou perda de dados. Após a conclusão da sincronização completa de dados, você poderá reduzir o período de retenção para 24 horas.
Períodos de retenção inferiores a esses mínimos podem fazer com que o DTS perca dados de log, o que pode comprometer as garantias do Acordo de Nível de Serviço (SLA).
Outras limitações
Não execute um failover entre primário e secundário enquanto a tarefa estiver em execução, pois isso causará falha na tarefa.
Strings
VARCHAR2vazias (tratadas como NULL pelo Oracle) causam falhas se a coluna correspondente no destino tiver uma restriçãoNOT NULL.Tabelas com a política Fine-Grained Audit (FGA) habilitada: o DTS não consegue ler a pseudocoluna
ORA_ROWSCNe a tarefa falha. Desative a política FGA nas tabelas afetadas ou exclua-as da sincronização.Evite atualizar campos
LONGTEXTdurante a execução da sincronização.Não execute operações DDL durante a sincronização de schema ou a sincronização inicial completa de dados.
Não utilize o Oracle Data Pump para gravar no banco de dados de origem durante a sincronização incremental de dados, pois isso pode resultar em perda de dados.
Tabelas externas não podem ser sincronizadas.
O MaxCompute não suporta restrições de chave primária. Se ocorrerem erros de rede durante a sincronização, o DTS poderá gravar linhas duplicadas no MaxCompute.
Grave no projeto MaxCompute de destino apenas por meio do DTS para evitar inconsistência de dados.
Caso o DTS precise recuperar uma instância com falha, o processo pode levar até 8 horas e envolver a reinicialização da instância ou o ajuste de parâmetros da instância DTS (parâmetros do banco de dados não são modificados). Para visualizar os parâmetros que podem ser alterados, consulte Modificar parâmetros da instância.
Considerações de desempenho
Realize a sincronização de dados fora dos horários de pico. A sincronização completa de dados consome recursos de leitura e gravação tanto nos bancos de dados de origem quanto nos de destino.
Após a sincronização completa de dados, o tablespace de destino pode ficar maior que o de origem devido à fragmentação causada por operações INSERT concorrentes.
A latência de sincronização é calculada com base no timestamp do registro sincronizado mais recente no destino em comparação com o timestamp atual na origem. Se nenhuma operação DML for executada na origem por um longo período, a leitura da latência pode ser imprecisa. Execute uma operação DML na origem para atualizá-la ou ative uma tabela de heartbeat caso esteja sincronizando um banco de dados inteiro.
Permissões necessárias para a conta do banco de dados
|
Banco de dados |
Permissões necessárias |
Referência |
|
Banco de dados Oracle auto-gerenciado |
Permissões refinadas |
Para sincronizar dados incrementais, o archive logging e o supplemental logging devem estar habilitados no banco de dados Oracle. Consulte Configure an Oracle database.
Criar uma tarefa de sincronização de dados
Etapa 1: Abrir a página Data Synchronization
Utilize um dos consoles a seguir para iniciar:
Console do DTS
Faça login no console do DTS.console do DTS
No painel de navegação à esquerda, clique em Data Synchronization.
No canto superior esquerdo, selecione a região onde a tarefa de sincronização de dados será executada.
Console do DMS
Nota
O caminho exato de navegação pode variar dependendo do modo do console do DMS. Consulte Modo simples e Personalizar o layout e o estilo do console do DMS.
Faça login no console do DMS.console do DMS
Na barra de navegação superior, passe o ponteiro sobre Data + AI e escolha DTS (DTS) > Data Synchronization.
Na lista suspensa ao lado de Data Synchronization Tasks, selecione a região onde a tarefa será executada.
Etapa 2: Configurar os bancos de dados de origem e de destino
Clique em Create Task para abrir a página de configuração da tarefa. Configure os parâmetros conforme descrito abaixo:
| Seção | Parâmetro | Descrição |
|---|---|---|
| N/A | Task Name | Nome da tarefa do DTS. O DTS gera um nome automaticamente. Especifique um nome descritivo para facilitar a identificação. Os nomes das tarefas não precisam ser únicos. |
| Source Database | Select Existing Connection | Selecione uma instância de banco de dados registrada na lista suspensa para preencher automaticamente os parâmetros de conexão. Se a instância não estiver registrada, configure os parâmetros manualmente. |
| Database Type | Selecione Oracle. | |
| Access Method | Selecione o método correspondente ao local onde o banco de dados Oracle está implantado. Este exemplo utiliza Self-managed Database on ECS. Para outros métodos de acesso, consulte Preparation overview. | |
| Instance Region | Região onde reside o banco de dados Oracle de origem. | |
| ECS Instance ID | ID da instância ECS que executa o banco de dados Oracle de origem. | |
| Port Number | Porta de service do Oracle. Padrão: 1521. | |
| Oracle Type | Non-RAC Instance: requer o SID (ID do sistema). RAC or PDB Instance: requer o Service Name. Este exemplo utiliza RAC or PDB Instance com um Service Name. | |
| Database Account | Conta do Oracle. Para as permissões necessárias, consulte Required database account permissions. | |
| Database Password | Senha da conta do Oracle. | |
| Destination Database | Select Existing Connection | Selecione uma instância de banco de dados registrada na lista suspensa para preencher automaticamente os parâmetros de conexão. Se a instância não estiver registrada, configure os parâmetros manualmente. |
| Database Type | Selecione MaxCompute. | |
| Access Method | Selecione Alibaba Cloud Instance. | |
| Instance Region | Região onde reside o projeto MaxCompute de destino. | |
| Project | Nome do projeto MaxCompute de destino. | |
| AccessKey ID of Alibaba Cloud Account | AccessKey ID do par de AccessKey preparado na seção de pré-requisitos. | |
| AccessKey Secret of Alibaba Cloud Account | AccessKey secret do par de AccessKey preparado na seção de pré-requisitos. |
Etapa 3: Testar a conectividade
Na parte inferior da página, clique em Test Connectivity and Proceed. Na caixa de diálogo CIDR Blocks of DTS Servers, clique em Test Connectivity.
Nota
Os blocos CIDR dos servidores DTS devem ser adicionados às configurações de segurança dos bancos de dados de origem e de destino. Isso pode ser feito automática ou manualmente. Consulte Adicionar endereços IP de servidores DTS a uma lista de permissões.
Clique em OK para conceder permissões à sua conta do MaxCompute e, em seguida, clique em Test Connectivity and Proceed.
Etapa 4: Configurar objetos para sincronização
Na etapa Configure Objects, defina os seguintes parâmetros:
|
Parâmetro |
Descrição |
|
Synchronization Types |
A opção Incremental Data Synchronization vem selecionada por padrão. Selecione também Schema Synchronization e Full Data Synchronization para executar todas as três fases. |
|
Naming Rules of Additional Columns |
O DTS adiciona colunas extras às tabelas de destino. Se o nome de uma coluna adicional entrar em conflito com uma coluna existente, a tarefa falhará e poderá ocorrer perda de dados. Escolha New Rule ou Previous Rule conforme suas necessidades. Verifique se há conflitos de nomenclatura antes de definir este parâmetro. Consulte Naming rules for additional columns. |
|
Partition Definition of Incremental Data Table |
Selecione os nomes das partições de acordo com seus requisitos. Consulte Partition. |
|
Processing Mode of Conflicting Tables |
Precheck and Report Errors (padrão): verifica se existem nomes de tabelas idênticos na origem e no destino. A pré-verificação falha se houver conflitos. Para resolver conflitos, utilize o recurso de mapeamento de nomes de objetos para renomear as tabelas de destino. Consulte Mapear nomes de objetos. Ignore Errors and Proceed: ignora a verificação de conflitos. Durante a sincronização completa, os registros existentes no destino são mantidos; durante a sincronização incremental, os registros existentes são sobrescritos. Se os schemas forem diferentes, a inicialização poderá falhar ou apenas algumas colunas serão sincronizadas. |
|
Capitalization of Object Names in Destination Instance |
Controla o uso de maiúsculas e minúsculas nos nomes de bancos de dados, tabelas e colunas no destino. Padrão: DTS default policy. Consulte Especificar o uso de maiúsculas e minúsculas nos nomes de objetos na instância de destino. |
|
Source Objects |
Selecione uma ou mais tabelas e clique em |
|
Selected Objects |
Para renomear um único objeto: clique com o botão direito nele e especifique um novo nome. Consulte Mapear o nome de um único objeto. Para renomear vários objetos: clique em Batch Edit. Consulte Mapear vários nomes de objetos de uma vez. Para filtrar linhas: clique com o botão direito na tabela e defina as condições de filtro. Consulte Specify filter conditions. Renomear um objeto pode causar falha na sincronização de outros objetos dependentes. |
Etapa 5: Configurar definições avançadas
Clique em Next: Advanced Settings e configure os itens a seguir:
|
Parâmetro |
Descrição |
|
Dedicated Cluster for Task Scheduling |
Por padrão, o DTS agenda tarefas em um cluster compartilhado. Adquira um cluster dedicado para obter maior estabilidade. Consulte O que é um cluster dedicado do DTS. |
|
Retry Time for Failed Connections |
Tempo durante o qual o DTS tenta reconectar após uma falha de conexão. Valores válidos: 10–1440 minutos. Padrão: 720 minutos. Defina este valor para pelo menos 30 minutos. Se várias tarefas compartilharem o mesmo banco de dados de origem ou de destino, o menor tempo de nova tentativa será aplicado. O DTS cobra pela instância durante as novas tentativas. |
|
Retry Time for Other Issues |
Tempo durante o qual o DTS tenta novamente após uma falha de DDL ou DML. Valores válidos: 1–1440 minutos. Padrão: 10 minutos. Defina este valor como superior a 10 minutos e inferior ao valor de Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Synchronization |
Limite a velocidade da sincronização completa para reduzir a carga nos servidores de banco de dados. Configure QPS (queries per second) to the source database, RPS of Full Data Migration e Data migration speed for full migration (MB/s). Disponível apenas quando Full Data Synchronization estiver selecionado. |
|
Enable Throttling for Incremental Data Synchronization |
Limite a velocidade da sincronização incremental configurando RPS of Incremental Data Synchronization e Data synchronization speed for incremental synchronization (MB/s). |
|
Actual Write Code |
Formato de codificação para os dados gravados no destino. Selecione conforme suas necessidades. |
|
Environment Tag |
Uma tag opcional para identificar a instância do DTS. |
|
Configure ETL |
Habilita o recurso de extração, transformação e carregamento (ETL). Selecione Yes para inserir instruções de processamento de dados no editor de código. Consulte Configurar ETL em uma tarefa de migração ou sincronização de dados. Selecione No para pular. Consulte também O que é ETL? |
|
Monitoring and Alerting |
Configure alertas para falhas de tarefa ou alta latência de sincronização. Selecione Yes e defina o limiar de alerta e os contatos de notificação. Consulte Configurar monitoramento e alertas ao criar uma tarefa do DTS. |
Etapa 6: Executar a pré-verificação
Clique em Next: Save Task Settings and Precheck.
Nota
Para visualizar os parâmetros da API desta configuração de tarefa, passe o mouse sobre o botão e clique em Preview OpenAPI parameters.
O DTS executa uma pré-verificação antes que a tarefa possa ser iniciada. Se a pré-verificação falhar:
Clique em View Details ao lado de cada item com falha, resolva o problema e clique em Precheck Again.
Para itens de alerta que podem ser ignorados: clique em Confirm Alert Details, depois em Ignore na caixa de diálogo, em seguida em OK e finalmente em Precheck Again. Alertas ignorados podem resultar em inconsistência de dados.
Etapa 7: Adquirir uma instância de sincronização de dados
Aguarde até que a Success Rate atinja 100% e clique em Next: Purchase Instance.
-
Na página buy, configure os seguintes itens:
Seção Parâmetro Descrição New Instance Class Billing Method Subscription: pagamento antecipado por um período fixo — mais econômico para uso de longo prazo. Pay-as-you-go: faturamento por hora — adequado para uso de curto prazo. Libere a instância quando não for mais necessária para interromper as cobranças. Resource Group Settings Grupo de recursos da instância. Padrão: default resource group. Consulte O que é Resource Management? Instance Class Classe de throughput de sincronização. Consulte Classes de instâncias de sincronização de dados. Subscription Duration Disponível para o método de faturamento Subscription. Opções: 1–9 meses, 1 ano, 2 anos, 3 anos ou 5 anos. Leia e aceite os Data Transmission Service (Pay-as-you-go) Service Terms.
Clique em Buy and Start e, em seguida, clique em OK na caixa de diálogo de confirmação.
A tarefa aparecerá na lista de tarefas. Acompanhe o progresso por meio dessa lista.
Schema da tabela de dados incrementais
Nota
Execute set odps.sql.allow.fullscan=true; no MaxCompute para permitir varreduras completas de tabela no projeto.
O DTS grava registros de alterações incrementais na tabela _log no MaxCompute. Cada linha na tabela de dados incrementais representa um evento de alteração e inclui os seguintes campos de metadados, além das colunas da tabela de origem:
|
Campo |
Descrição |
|
|
Identificador exclusivo para a entrada de log. Incrementa automaticamente para cada nova entrada. Para uma operação UPDATE, o DTS gera duas entradas (valores pré-atualização e pós-atualização) com o mesmo |
|
|
Tipo de operação: |
|
|
Timestamp da operação em UTC. Também corresponde ao timestamp do arquivo de binary log. |
|
|
Indica se a linha contém valores pré-atualização: |
|
|
Indica se a linha contém valores pós-atualização: |