Use o Data Transmission Service (DTS) para sincronizar dados continuamente de um banco de dados Oracle autogerenciado para um cluster PolarDB for PostgreSQL (Compatible with Oracle). O DTS oferece suporte à sincronização de schema, sincronização completa de dados e sincronização incremental de dados, mantendo o cluster de destino atualizado enquanto a source Oracle continua atendendo ao tráfego de produção.
Pré-requisitos
Antes de começar, verifique se você possui:
Um cluster PolarDB for PostgreSQL (Compatible with Oracle) com capacidade de armazenamento superior ao espaço utilizado no banco de dados Oracle de source. Para criar um cluster, consulte Criar um cluster PolarDB for PostgreSQL (Compatible with Oracle). Para obter informações sobre as versões compatíveis dos bancos de dados de source e de destino, consulte Visão geral da solução de sincronização.
Um banco de dados criado no cluster de destino para receber os dados sincronizados. Consulte Gerenciamento de banco de dados.
O banco de dados Oracle autogerenciado executando no modo ARCHIVELOG com um período de retenção de log suficiente. Consulte ARCHIVELOG.
Supplemental logging ativado no banco de dados Oracle de source, com
supplemental_log_data_pkesupplemental_log_data_uihabilitados. Para mais informações, consulte Supplemental Logging.Uma avaliação de banco de dados concluída usando o Advanced Database & Application Migration (ADAM). O ADAM analisa seu schema Oracle e sinaliza objetos que o DTS não consegue sincronizar, permitindo resolver problemas de compatibilidade antes do início da tarefa. Consulte Visão geral da avaliação de banco de dados e Limitações e preparações para bancos de dados Oracle.
Faturamento
|
Tipo de sincronização |
Preço |
|
Sincronização de schema e sincronização completa de dados |
Gratuito |
|
Sincronização incremental de dados |
Pago. Consulte Visão geral de faturamento |
Operações SQL suportadas
|
Tipo de operação |
Instruções SQL |
|
DML (Data Manipulation Language) |
INSERT, UPDATE e DELETE |
|
DDL (Data Definition Language) |
CREATE TABLE (exceto CREATE TABLE AS SELECT e tabelas com partições ou subpartições); ALTER TABLE (ADD COLUMN, ADD INDEX, DROP COLUMN, DROP INDEX, MODIFY COLUMN, RENAME COLUMN); DROP TABLE; RENAME TABLE; TRUNCATE TABLE; CREATE INDEX |
Permissões de conta de banco de dados
|
Banco de dados |
Permissões necessárias |
Referência |
|
Oracle autogerenciado |
Permissões refinadas |
|
|
PolarDB for PostgreSQL (Compatible with Oracle) |
Permissões de proprietário de schema (conta privilegiada recomendada) |
Criar uma conta de banco de dados e Gerenciamento de banco de dados |
Ative o modo ARCHIVELOG e o supplemental logging para capturar alterações incrementais de dados. Consulte Configuração do banco de dados.
Limitações
Limitações do banco de dados de source
|
Limitação |
Detalhes |
|
Chave primária ou restrição única obrigatória |
As tabelas devem ter uma chave primária ou restrição única com valores de campo exclusivos. Tabelas sem essa configuração geram dados duplicados no destino. |
|
Comprimento do nome da tabela (Oracle 12c e posterior) |
Os nomes das tabelas não podem exceder 30 bytes. |
|
Máximo de tabelas por tarefa (sincronização no nível de tabela com mapeamento) |
1.000 tabelas. Para ultrapassar esse limite, divida as tabelas em várias tarefas ou sincronize todo o banco de dados como um único objeto. |
|
Oracle RAC conectado via Express Connect |
Se o banco de dados de source for um Oracle RAC conectado por meio de um circuito Express Connect, configure um de seus VIPs nas configurações de conexão. Caso o banco de dados Oracle autogerenciado seja um cluster RAC, não é possível configurar um IP SCAN — use um VIP nas configurações de conexão. O failover de nó RAC não é suportado com essa configuração. |
|
Redo logs e archive logs |
Redo logs e archive logs devem estar habilitados. |
|
Retenção de log |
Para tarefas apenas incrementais: retenha logs por pelo menos 24 horas. Para tarefas completas + incrementais: retenha logs por pelo menos 7 dias; após a conclusão da sincronização completa, reduza esse período para 24 horas. Se o DTS não conseguir acessar esses logs, a tarefa poderá falhar ou causar perda de dados — esse cenário não é coberto pelo Service Level Agreement (SLA) do DTS. |
|
Alternância primário/secundário |
Se ocorrer uma alternância primário/secundário no banco de dados de source durante a sincronização, a tarefa falhará. |
|
String vazia VARCHAR2 com restrição NOT NULL |
O Oracle trata uma string VARCHAR2 vazia como nula. Se a coluna de destino tiver uma restrição NOT NULL, a tarefa falhará. |
|
Política de Fine-Grained Audit (FGA) |
Se o FGA estiver habilitado em uma tabela, o DTS não conseguirá detectar a pseudocoluna |
|
Atualização apenas de campos de texto grande |
Não suportado. A tarefa falhará se uma instrução UPDATE modificar apenas campos de texto grande. |
|
DDL durante a sincronização de schema ou completa |
Não execute operações DDL que alterem o schema durante a sincronização de schema ou a sincronização completa. As consultas do DTS causam bloqueios de metadados na source, o que também pode impedir operações DDL nesse local. |
Outras limitações
|
Limitação |
Detalhes |
|
Oracle Data Pump durante sincronização incremental |
Não utilize o Oracle Data Pump para gravar no banco de dados de source durante a sincronização incremental — pode ocorrer perda de dados. |
|
Tabelas externas |
Não podem ser sincronizadas. |
|
Horário de sincronização |
Execute a sincronização fora dos horários de pico. A sincronização inicial completa de dados consome recursos de leitura e gravação tanto nos bancos de dados de source quanto de destino. |
|
Tamanho do tablespace após sincronização completa |
Operações INSERT simultâneas durante a sincronização completa causam fragmentação de tabela no destino. O tamanho do tablespace de destino será maior que o da source após a conclusão da sincronização completa. |
|
Cálculo de latência de sincronização |
O DTS calcula a latência com base no timestamp do registro sincronizado mais recente e no timestamp atual da source. Se nenhuma operação DML for executada na source por um longo período, a latência relatada poderá ser imprecisa. Para manter a precisão da latência, crie uma tabela de heartbeat ao sincronizar um banco de dados inteiro — o DTS a atualiza a cada segundo. |
|
Índices únicos baseados em ROWID |
O cluster de destino gera índices únicos (por exemplo, |
|
Terminador de string |
O cluster de destino não suporta o terminador de string |
|
Restrições CHECK |
As restrições CHECK da source são convertidas em restrições NOT NULL no destino. |
|
Compatibilidade de conjunto de caracteres |
Os conjuntos de caracteres da source e do destino devem ser compatíveis. A incompatibilidade causa inconsistência de dados ou falha na tarefa. |
|
Compatibilidade de tipos de dados |
Use o recurso de sincronização de schema do DTS para evitar falhas decorrentes de tipos de dados incompatíveis. |
|
Fuso horário |
A source e o destino devem usar o mesmo fuso horário. |
|
Tipos definidos personalizados |
Sincronizados com o destino. Objetos de tipo interno gerados automaticamente pelo Oracle não são sincronizados — o destino já os suporta. |
|
Gravações externas no destino durante a sincronização |
Não grave dados de sources diferentes do DTS no destino durante a sincronização — pode ocorrer inconsistência de dados. |
|
Sequências |
O DTS valida o conteúdo dos dados, mas não metadados como sequências. Valide as sequências manualmente. Após migrar sua aplicação para o destino, as sequências não serão incrementadas a partir do valor máximo da source. Atualize os valores das sequências no destino antes da migração. Consulte Atualizar o valor da sequência no banco de dados de destino. |
|
|
Em uma tarefa de sincronização completa ou incremental, se as tabelas a serem sincronizadas contiverem chaves estrangeiras, triggers ou event triggers: o DTS define |
|
Recuperação de falha na tarefa |
Se uma tarefa falhar, a equipe de suporte do DTS tentará restaurá-la dentro de 8 horas. Eles podem reiniciar a tarefa ou ajustar parâmetros da tarefa (não parâmetros do banco de dados). |
Durante a sincronização de schema, o DTS sincroniza chaves estrangeiras da source para o destino. Durante a sincronização completa e incremental, o DTS desativa temporariamente as verificações de restrições e operações em cascata de chaves estrangeiras no nível de sessão. Pode ocorrer inconsistência de dados se operações de atualização ou exclusão em cascata forem executadas na source enquanto a tarefa estiver ativa.
Criar uma tarefa de sincronização
Etapa 1: Abrir a lista de tarefas de sincronização de dados
Abra a lista de tarefas usando o console do DTS ou o console do DMS.
Console do DTS
Faça login no console do DTS.
No painel de navegação à esquerda, clique em Data Synchronization.
No canto superior esquerdo, selecione a região onde a instância de sincronização estará localizada.
Console do DMS
Nota
As etapas podem variar dependendo do modo e do layout do console do DMS. Consulte Console do modo simples e Personalizar o layout e o estilo do console do DMS.
Faça login no console do DMS.
Na barra de menu superior, escolha .
À direita de Data Synchronization Tasks, selecione a região da instância de sincronização.
Etapa 2: Configurar a tarefa
Clique em Create Task.
-
(Opcional) No canto superior direito, clique em New Configuration Page para alternar para a nova interface de configuração.
Se o botão exibir Back to Previous Version , você já está na nova página de configuração. Recomenda-se o uso da nova versão.
-
Configure os bancos de dados de source e de destino utilizando os seguintes parâmetros.
Configurações da tarefa
Parâmetro
Descrição
Task Name
O DTS gera um nome automaticamente. Especifique um nome descritivo para facilitar a identificação — o nome não precisa ser exclusivo.
Banco de dados de source
Parâmetro
Descrição
Select Existing Connection
Selecione uma instância de banco de dados registrada na lista ou deixe em branco e configure os campos abaixo manualmente. No console do DMS, este campo é rotulado como Select a DMS database instance.
Database Type
Selecione Oracle.
Access Method
Selecione o método correspondente à implantação do seu banco de dados de source. Este tópico usa Self-managed Database on ECS como exemplo. Para outros métodos de acesso e quaisquer etapas adicionais necessárias, consulte Visão geral das preparações.
Instance Region
Selecione a região onde reside o banco de dados Oracle de source.
ECS Instance ID
Selecione o ID da instância ECS que executa o banco de dados Oracle de source.
Port Number
Insira a porta de serviço do banco de dados Oracle de source. O padrão é 1521.
Oracle Type
Selecione Non-RAC Instance e forneça o SID, ou selecione RAC or PDB Instance e forneça o Service Name. Este tópico utiliza RAC or PDB Instance com um Service Name.
Database Account
Insira a conta do banco de dados. Para requisitos de permissão, consulte Permissões de conta de banco de dados.
Database Password
Insira a senha da conta do banco de dados.
Encryption
Selecione Non-encrypted ou SSL-encrypted. Para criptografia SSL, faça upload do CA Certificate e insira a CA Key. A criptografia SSL está disponível apenas quando Access Method for Express Connect, VPN Gateway, or Smart Access Gateway e Oracle Type for RAC or PDB Instance.
Banco de dados de destino
Parâmetro
Descrição
Select Existing Connection
Selecione uma instância de banco de dados registrada na lista ou deixe em branco e configure os campos abaixo manualmente. No console do DMS, este campo é rotulado como Select a DMS database instance.
Database Type
Selecione PolarDB (Compatible with Oracle).
Access Method
Selecione Alibaba Cloud Instance.
Instance Region
Selecione a região onde o cluster de destino está localizado.
Instance ID
Selecione o ID do cluster PolarDB for PostgreSQL (Compatible with Oracle) de destino.
Database Name
Insira o nome do banco de dados no cluster de destino que receberá os objetos sincronizados.
Database Account
Insira a conta do banco de dados para o cluster de destino. Para requisitos de permissão, consulte Permissões de conta de banco de dados.
Database Password
Insira a senha da conta do banco de dados.
Encryption
Selecione Non-encrypted ou SSL-encrypted. Para criptografia SSL, faça upload do CA Certificate.
-
Clique em Test Connectivity and Proceed na parte inferior da página. Na caixa de diálogo CIDR Blocks of DTS Servers, clique em Test Connectivity.
Adicione os blocos de endereços IP dos servidores DTS às configurações de segurança dos bancos de dados de source e de destino antes do teste de conectividade. O DTS pode adicioná-los automaticamente ou você pode adicioná-los manualmente. Consulte Adicionar a lista de permissões de endereços IP dos servidores DTS .
Etapa 3: Selecionar objetos para sincronizar
-
Na página Configure Objects, defina os seguintes parâmetros.
Parâmetro Descrição Synchronization Types O DTS sempre seleciona Incremental Data Synchronization. Por padrão, Schema Synchronization e Full Data Synchronization também são selecionados. O DTS usa os dados completos dos objetos selecionados para inicializar o cluster de destino antes de iniciar a sincronização incremental. Processing Mode of Conflicting Tables Precheck and Report Errors: Verifica se existem tabelas com o mesmo nome no destino. Se encontradas, a pré-verificação relata um erro e a tarefa não inicia. Para lidar com conflitos de nomenclatura sem excluir ou renomear a tabela de destino, mapeie o objeto para um nome diferente. Consulte Mapeamento de nomes de colunas e tabelas de banco de dados. Ignore Errors and Proceed: Ignora a verificação de conflito de nomes. AvisoEsta opção pode causar inconsistência de dados. Durante a sincronização completa, o DTS ignora registros da source que entram em conflito com registros de destino. Durante a sincronização incremental, o DTS substitui os registros de destino pelos registros da source. Se os schemas forem inconsistentes, a inicialização de dados poderá falhar parcial ou totalmente.
Capitalization of Object Names in Destination Instance Define a política de maiúsculas e minúsculas para nomes de bancos de dados, tabelas e colunas no destino. O padrão é DTS default policy. Consulte Política de maiúsculas e minúsculas para nomes de objetos de destino. Source Objects Clique nos objetos na caixa Source Objects e, em seguida, clique no ícone de seta para a direita para movê-los para a caixa Selected Objects. É possível selecionar objetos no nível de banco de dados, tabela ou coluna. Selected Objects Se você não estiver usando uma conta privilegiada, ou se o nome do schema da source não corresponder às convenções de nomenclatura do PolarDB for PostgreSQL (Compatible with Oracle), clique com o botão direito no schema no painel Selected Objects, abra a caixa de diálogo Edit Schema e atualize o Schema Name para corresponder ao banco de dados de destino. Consulte Mapear nomes de tabelas e colunas. Para selecionar operações SQL específicas para um banco de dados ou tabela, clique com o botão direito no objeto e escolha as operações na caixa de diálogo. Para aplicar filtros de linha, clique com o botão direito em uma tabela e configure as condições de filtro. Consulte Definir condições de filtro. Renomear um objeto pode interromper a sincronização de outros objetos que dependem dele. -
Clique em Next: Advanced Settings e configure os seguintes parâmetros.
Parâmetro Descrição Dedicated Cluster for Task Scheduling O DTS usa um cluster compartilhado por padrão. Para maior estabilidade da tarefa, adquira um cluster dedicado. 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. Padrão: 720 minutos. Intervalo válido: 10–1.440 minutos. Defina como 30 minutos ou mais. Se a conexão for restaurada dentro desse período, a tarefa será retomada automaticamente. NotaQuando várias instâncias do DTS compartilham uma source ou um destino, o DTS aplica a menor duração de nova tentativa configurada entre todas as instâncias. O DTS cobra pelo tempo de execução durante as novas tentativas de conexão.
Retry Time for Other Issues Tempo durante o qual o DTS tenta novamente após erros que não sejam de conexão (por exemplo, erros de execução DDL ou DML). Padrão: 10 minutos. Intervalo válido: 1–1.440 minutos. Defina como 10 minutos ou mais. Este valor deve ser menor que Retry Time for Failed Connections. Enable Throttling for Full Data Synchronization Limita as taxas de leitura/gravação da sincronização completa para reduzir a carga no destino. Defina Queries per second (QPS) 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. Você também pode ajustar a taxa enquanto a tarefa está em execução. Enable Throttling for Incremental Data Synchronization Limita as taxas de sincronização incremental. Defina RPS of Incremental Data Synchronization e Data synchronization speed for incremental synchronization (MB/s). Environment Tag Anexe uma tag de ambiente à instância para identificação. Actual Write Code Selecione o tipo de codificação para os dados gravados no destino. Configure ETL Escolha se deseja ativar extração, transformação e carregamento (ETL). Selecione Yesnotificações de alerta 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 desativar o ETL. Para informações gerais sobre ETL, consulte O que é ETL? Monitoring and Alerting Configure alertas para falhas de tarefa ou latência que exceda um limiar. Selecione Yes para definir um limiar de alerta e contatos de notificação. Consulte Configurar monitoramento e alertas durante a configuração da tarefa. Clique em Data Verification para configurar uma tarefa de verificação de dados. Consulte Configurar verificação de dados.
Etapa 4: Salvar a tarefa e executar a pré-verificação
Para visualizar os parâmetros da API desta configuração, passe o mouse sobre Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters.
Clique em Next: Save Task Settings and Precheck para salvar a configuração e iniciar a pré-verificação.
O DTS executa uma pré-verificação antes de iniciar qualquer tarefa de sincronização. A tarefa só começa se a pré-verificação for aprovada.
Se a pré-verificação falhar, clique em View Details ao lado do item com falha, corrija o problema e execute a pré-verificação novamente.
Se a pré-verificação gerar avisos não ignoráveis, clique em View Details , corrija o problema e execute novamente.
Se a pré-verificação gerar avisos ignoráveis, clique em Confirm Alert Details > Ignore > OK e, em seguida, clique em Precheck Again para prosseguir. Ignorar avisos pode causar inconsistência de dados.
Etapa 5: Adquirir a instância
Quando a Success Rate atingir 100%, clique em Next: Purchase Instance.
-
Na página Purchase, selecione o método de faturamento e as especificações da instância.
Parâmetro
Descrição
Billing Method
Subscription: Pagamento antecipado por uma duração fixa. Custo-benefício para tarefas contínuas e de longo prazo. Pagamento conforme o uso: Faturamento horária pelo uso real. Adequado para tarefas de curto prazo ou de teste — libere a instância a qualquer momento para interromper as cobranças.
Resource Group Settings
O grupo de recursos para a instância. Padrão: default resource group. Consulte O que é Resource Management?
Instance Class
Determina o desempenho da sincronização. Selecione com base no volume de dados e nos requisitos de throughput. Consulte Especificações de link de sincronização de dados.
Subscription Duration
Disponível apenas para faturamento Subscription. Opções mensais: 1–9 meses. Opções anuais: 1, 2, 3 ou 5 anos.
Marque a caixa de seleção 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.
Monitore a tarefa na página de sincronização de dados.
Próximos passos
Após o início da tarefa de sincronização e a inicialização completa do cluster de destino, valide os dados no destino antes de alternar o tráfego da aplicação:
Atualize os valores das sequências no destino antes da alternância. Consulte Atualizar o valor da sequência no banco de dados de destino.
Verifique se
session_replication_rolefoi redefinido paraoriginno destino após a liberação da tarefa do DTS.Confira se os conjuntos de caracteres e fusos horários correspondem entre a source e o destino para evitar problemas de dados pós-alternância.