Migrar Oracle para o Banco de Dados do Azure para PostgreSQL usando Ora2Pg
APLICA-SE A: Banco de Dados do Azure para PostgreSQL - Servidor Flexível
Este guia ajuda você a migrar seu esquema Oracle para o Banco de Dados do Azure para PostgreSQL.
Para obter orientações detalhadas e abrangentes sobre migração do Ora2Pg, consulte os recursos do Guia de migração.
Pré-requisitos
Para migrar seu esquema Oracle para o Banco de Dados do Azure para PostgreSQL, você precisa:
- Verifique se o ambiente de origem é suportado.
- Faça o download da última versão do Ora2Pg.
- Tenha a versão mais recente do módulo DBD.
Descrição geral
O PostgreSQL é um dos bancos de dados de código aberto mais avançados do mundo. Este artigo descreve como usar a ferramenta gratuita Ora2Pg para migrar um banco de dados Oracle para PostgreSQL. Você pode usar o Ora2Pg para migrar um banco de dados Oracle ou um banco de dados MySQL para um esquema compatível com PostgreSQL.
A ferramenta Ora2Pg conecta seu banco de dados Oracle, verifica-o automaticamente e extrai sua estrutura ou dados. Em seguida, o Ora2Pg gera scripts SQL que você pode carregar em seu banco de dados PostgreSQL. Você pode usar o Ora2Pg para tarefas como engenharia reversa de um banco de dados Oracle, migração de um enorme banco de dados corporativo ou simplesmente replicar alguns dados Oracle em um banco de dados PostgreSQL. A ferramenta é fácil de usar e não requer conhecimento de banco de dados Oracle, além da capacidade de fornecer os parâmetros necessários para se conectar ao banco de dados Oracle.
Nota
Para obter mais informações sobre como usar a versão mais recente do Ora2Pg, consulte a documentação do Ora2Pg.
Arquitetura de migração típica do Ora2Pg
Depois de provisionar a VM e o Banco de Dados do Azure para PostgreSQL, você precisa de duas configurações para habilitar a conectividade entre elas: Permitir acesso aos serviços do Azure e Impor Conexão SSL:
Folha> Segurança de Conexão: Permitir acesso aos serviços>do Azure ATIVADOS
Lâmina>Segurança da> Conexão Configurações SSL Impor Conexão>SSL DESABILITADA
Recomendações
Para melhorar o desempenho das operações de avaliação ou exportação no servidor Oracle, colete estatísticas:
BEGIN DBMS_STATS.GATHER_SCHEMA_STATS DBMS_STATS.GATHER_DATABASE_STATS DBMS_STATS.GATHER_DICTIONARY_STATS END;
Exporte dados usando o
COPY
comando em vez deINSERT
.Evite exportar tabelas com suas chaves estrangeiras (FKs), restrições e índices. Esses elementos retardam o processo de importação de dados para o PostgreSQL.
Crie exibições materializadas usando a cláusula no data. Em seguida, atualize as vistas mais tarde.
Se possível, use índices exclusivos em visualizações materializadas. Esses índices podem acelerar a atualização quando você usa a sintaxe
REFRESH MATERIALIZED VIEW CONCURRENTLY
.
Pré-migração
Depois de verificar se o ambiente de origem é suportado e se você abordou todos os pré-requisitos, você estará pronto para iniciar o estágio de pré-migração. Para começar:
- Descubra: inventarie os bancos de dados que você precisa migrar.
- Avaliar: avalie esses bancos de dados quanto a possíveis problemas de migração ou bloqueadores.
- Convert: resolva todos os itens descobertos.
Para migrações heterogêneas, como Oracle para o Banco de Dados do Azure para PostgreSQL, essa etapa também envolve tornar os esquemas do banco de dados de origem compatíveis com o ambiente de destino.
Detetar
O objetivo da fase de descoberta é identificar fontes de dados existentes e detalhes sobre os recursos que estão sendo usados. Esta fase ajuda-o a compreender e planear melhor a migração. O processo envolve a verificação da rede para identificar todas as instâncias Oracle da sua organização, juntamente com a versão e os recursos em uso.
Os scripts de pré-avaliação da Microsoft para Oracle são executados no banco de dados Oracle. Os scripts de pré-avaliação consultam os metadados Oracle. Os scripts fornecem:
- Um inventário de banco de dados, incluindo contagens de objetos por esquema, tipo e status.
- Uma estimativa aproximada dos dados brutos em cada esquema, com base em estatísticas.
- O tamanho das tabelas em cada esquema.
- O número de linhas de código por pacote, função, procedimento e assim por diante.
Baixe os scripts relacionados do GitHub.
Avaliar
Depois de inventariar os bancos de dados Oracle, você terá uma ideia do tamanho do banco de dados e dos possíveis desafios. O próximo passo é executar a avaliação.
Estimar o custo de uma migração do Oracle para o PostgreSQL não é fácil. Para avaliar o custo de migração, o Ora2Pg verifica todos os objetos de banco de dados, funções e procedimentos armazenados em busca de objetos e códigos PL/SQL que não podem ser convertidos automaticamente.
A ferramenta Ora2Pg tem um modo de análise de conteúdo que inspeciona o banco de dados Oracle para gerar um relatório de texto. O relatório descreve o que o banco de dados Oracle contém e o que não pode ser exportado.
Para ativar o modo de análise e relatório , use o tipo SHOW_REPORT
exportado conforme mostrado no comando a seguir:
ora2pg -t SHOW_REPORT
A ferramenta Ora2Pg pode converter código SQL e PL/SQL da sintaxe Oracle para PostgreSQL. Assim, depois que o banco de dados é analisado, o Ora2Pg pode estimar as dificuldades de código e o tempo necessário para migrar um banco de dados completo.
Para estimar o custo de migração em dias humanos, o Ora2Pg permite que você use uma diretiva de configuração chamada ESTIMATE_COST
. Você também pode habilitar essa diretiva em um prompt de comando:
ora2pg -t SHOW_REPORT --estimate_cost
A unidade de migração padrão representa cerca de cinco minutos para um especialista em PostgreSQL. Se essa migração for a primeira, você poderá aumentar a unidade de migração padrão usando a diretiva COST_UNIT_VALUE
de configuração ou a opção de linha de --cost_unit_value
comando.
A última linha do relatório mostra o código de migração total estimado em dias humanos. A estimativa segue o número de unidades de migração estimado para cada objeto.
No exemplo de código a seguir, você verá algumas variações de avaliação:
- Avaliação de tabelas
- Avaliação de colunas
- Avaliação de esquema que usa uma unidade de custo padrão de 5 minutos
- Avaliação de esquema que usa uma unidade de custo de 10 minutos
ora2pg -t SHOW_TABLE -c c:\ora2pg\ora2pg_hr.conf > c:\ts303\hr_migration\reports\tables.txt
ora2pg -t SHOW_COLUMN -c c:\ora2pg\ora2pg_hr.conf > c:\ts303\hr_migration\reports\columns.txt
ora2pg -t SHOW_REPORT -c c:\ora2pg\ora2pg_hr.conf --dump_as_html --estimate_cost > c:\ts303\hr_migration\reports\report.html
ora2pg -t SHOW_REPORT -c c:\ora2pg\ora2pg_hr.conf –-cost_unit_value 10 --dump_as_html --estimate_cost > c:\ts303\hr_migration\reports\report2.html
Aqui está a saída do nível de migração de avaliação de esquema B-5:
Níveis de migração:
A - Migração que pode ser executada automaticamente
B - Migração com reescrita de código e um custo humano-dias até 5 dias
C - Migração com reescrita de código e um custo humano-dias superior a 5 dias
Níveis técnicos:
1 = Trivial: Sem funções armazenadas e sem gatilhos
2 = Fácil: Sem funções armazenadas, mas gatilhos; sem reescrita manual
3 = Simples: Funções armazenadas e/ou gatilhos; sem reescrita manual
4 = Manual: Sem funções armazenadas, mas gatilhos ou visualizações com reescrita de código
5 = Difícil: Funções armazenadas e/ou gatilhos com reescrita de código
A avaliação consiste em:
Uma letra (A ou B) para especificar se a migração precisa de reescrita manual.
Um número de 1 a 5 para indicar a dificuldade técnica.
Outra opção, -human_days_limit
, especifica o limite de dias-humanos. Aqui, defina o nível de migração como C para indicar que a migração precisa de uma grande quantidade de trabalho, gerenciamento completo de projetos e suporte à migração. O padrão é 10 dias humanos. Você pode usar a diretiva HUMAN_DAYS_LIMIT
de configuração para alterar esse valor padrão permanentemente.
Essa avaliação de esquema foi desenvolvida para ajudar os usuários a decidir qual banco de dados migrar primeiro e quais equipes mobilizar.
Converter
Em migrações com tempo de inatividade mínimo, a origem da migração é alterada. Ele se desvia do destino em termos de dados e esquema após a migração única. Durante a fase de sincronização de dados, certifique-se de que todas as alterações na origem sejam capturadas e aplicadas ao destino quase em tempo real. Depois de verificar se todas as alterações são aplicadas ao destino, você pode passar da origem para o ambiente de destino.
Nesta etapa da migração, o código Oracle e os scripts DDL são convertidos ou traduzidos para PostgreSQL. A ferramenta Ora2Pg exporta os objetos Oracle em um formato PostgreSQL automaticamente. Alguns dos objetos gerados não podem ser compilados no banco de dados PostgreSQL sem alterações manuais.
Para entender quais elementos precisam de intervenção manual, primeiro compile os arquivos gerados pelo Ora2Pg no banco de dados PostgreSQL. Verifique o log e faça as alterações necessárias até que a estrutura do esquema seja compatível com a sintaxe do PostgreSQL.
Criar um modelo de migração
Recomendamos usar o modelo de migração que o Ora2Pg fornece. Quando você usa as opções --project_base
e --init_project
, o Ora2Pg cria um modelo de projeto com uma árvore de trabalho, um arquivo de configuração e um script para exportar todos os objetos do banco de dados Oracle. Para obter mais informações, consulte a documentação do Ora2Pg.
Utilize o seguinte comando:
ora2pg --project_base /app/migration/ --init_project test_project
Aqui está o exemplo de saída:
ora2pg --project_base /app/migration/ --init_project test_project
Creating project test_project.
/app/migration/test_project/
schema/
dblinks/
directories/
functions/
grants/
mviews/
packages/
partitions/
procedures/
sequences/
synonyms/
tables/
tablespaces/
triggers/
types/
views/
sources/
functions/
mviews/
packages/
partitions/
procedures/
triggers/
types/
views/
data/
config/
reports/
Generating generic configuration file
Creating script export_schema.sh to automate all exports.
Creating script import_all.sh to automate all imports.
O sources/
diretório contém o código Oracle. O schema/
diretório contém o código portado para PostgreSQL. E o reports/
diretório contém os relatórios HTML e a avaliação de custos de migração.
Depois que a estrutura do projeto é criada, um arquivo de configuração genérico é criado. Defina a conexão do banco de dados Oracle e os parâmetros de configuração relevantes no arquivo de configuração. Para obter mais informações sobre o arquivo de configuração, consulte a documentação do Ora2Pg.
Exportar objetos Oracle
Em seguida, exporte os objetos Oracle como objetos PostgreSQL executando o arquivo export_schema.sh.
cd /app/migration/mig_project
./export_schema.sh
Execute o seguinte comando manualmente.
SET namespace="/app/migration/mig_project"
ora2pg -p -t DBLINK -o dblink.sql -b %namespace%/schema/dblinks -c %namespace%/config/ora2pg.conf
ora2pg -p -t DIRECTORY -o directory.sql -b %namespace%/schema/directories -c %namespace%/config/ora2pg.conf
ora2pg -p -t FUNCTION -o functions2.sql -b %namespace%/schema/functions -c %namespace%/config/ora2pg.conf
ora2pg -p -t GRANT -o grants.sql -b %namespace%/schema/grants -c %namespace%/config/ora2pg.conf
ora2pg -p -t MVIEW -o mview.sql -b %namespace%/schema/mviews -c %namespace%/config/ora2pg.conf
ora2pg -p -t PACKAGE -o packages.sql -b %namespace%/schema/packages -c %namespace%/config/ora2pg.conf
ora2pg -p -t PARTITION -o partitions.sql -b %namespace%/schema/partitions -c %namespace%/config/ora2pg.conf
ora2pg -p -t PROCEDURE -o procs.sql -b %namespace%/schema/procedures -c %namespace%/config/ora2pg.conf
ora2pg -p -t SEQUENCE -o sequences.sql -b %namespace%/schema/sequences -c %namespace%/config/ora2pg.conf
ora2pg -p -t SYNONYM -o synonym.sql -b %namespace%/schema/synonyms -c %namespace%/config/ora2pg.conf
ora2pg -p -t TABLE -o table.sql -b %namespace%/schema/tables -c %namespace%/config/ora2pg.conf
ora2pg -p -t TABLESPACE -o tablespaces.sql -b %namespace%/schema/tablespaces -c %namespace%/config/ora2pg.conf
ora2pg -p -t TRIGGER -o triggers.sql -b %namespace%/schema/triggers -c %namespace%/config/ora2pg.conf
ora2pg -p -t TYPE -o types.sql -b %namespace%/schema/types -c %namespace%/config/ora2pg.conf
ora2pg -p -t VIEW -o views.sql -b %namespace%/schema/views -c %namespace%/config/ora2pg.conf
Para extrair os dados, use o seguinte comando.
ora2pg -t COPY -o data.sql -b %namespace%/data -c %namespace/config/ora2pg.conf
Compilar ficheiros
Por fim, compile todos os arquivos no Banco de Dados do Azure para o servidor PostgreSQL. Você pode optar por carregar os arquivos DDL gerados manualmente ou usar a segunda import_all.sh de script para importar esses arquivos interativamente.
psql -f %namespace%\schema\sequences\sequence.sql -h server1-server.postgres.database.azure.com -p 5432 -U username@server1-server -d database -L %namespace%\ schema\sequences\create_sequences.log
psql -f %namespace%\schema\tables\table.sql -h server1-server.postgres.database.azure.com -p 5432 -U username@server1-server -d database -L %namespace%\schema\tables\create_table.log
Aqui está o comando de importação de dados:
psql -f %namespace%\data\table1.sql -h server1-server.postgres.database.azure.com -p 5432 -U username@server1-server -d database -l %namespace%\data\table1.log
psql -f %namespace%\data\table2.sql -h server1-server.postgres.database.azure.com -p 5432 -U username@server1-server -d database -l %namespace%\data\table2.log
Enquanto os arquivos estão sendo compilados, verifique os logs e corrija qualquer sintaxe que Ora2Pg não poderia converter por conta própria.
Para obter mais informações, consulte Soluções alternativas de migração do Oracle para o Banco de Dados do Azure para PostgreSQL.
Migrate
Depois de ter os pré-requisitos necessários e concluir as etapas de pré-migração, você pode iniciar o esquema e a migração de dados.
Migrar esquema e dados
Quando você tiver feito as correções necessárias, uma compilação estável do banco de dados estará pronta para ser implantada. Execute os psql
comandos import, apontando para os arquivos que contêm o código modificado. Esta tarefa compila os objetos de banco de dados no banco de dados PostgreSQL e importa os dados.
Nesta etapa, você pode implementar um nível de paralelismo na importação dos dados.
Sincronize dados e corte
Nas migrações online (tempo de inatividade mínimo), a origem da migração continua a mudar. Ele se desvia do destino em termos de dados e esquema após a migração única.
Durante a fase de sincronização de dados, certifique-se de que todas as alterações na origem sejam capturadas e aplicadas ao destino quase em tempo real. Depois de verificar se todas as alterações foram aplicadas, você pode fazer o corte da origem para o ambiente de destino.
Para fazer uma migração online, entre em contato para AskAzureDBforPostgreSQL@service.microsoft.com obter suporte.
Em uma migração delta/incremental que usa Ora2Pg, para cada tabela, use uma consulta que filtra (corta) por data, hora ou outro parâmetro. Em seguida, conclua a migração usando uma segunda consulta que migra os dados restantes.
Na tabela de dados de origem, migre todos os dados históricos primeiro. Eis um exemplo:
select * from table1 where filter_data < 01/01/2019
Você pode consultar as alterações desde a migração inicial executando um comando como este:
select * from table1 where filter_data >= 01/01/2019
Nesse caso, recomendamos que você aprimore a validação verificando a paridade de dados em ambos os lados, na origem e no destino.
Pós-migração
Após o estágio de migração , conclua as tarefas pós-migração para garantir que tudo esteja funcionando da forma mais suave e eficiente possível.
Remediar aplicações
Depois que os dados são migrados para o ambiente de destino, todos os aplicativos que anteriormente consumiam a origem precisam começar a consumir o destino. A configuração às vezes requer alterações nos aplicativos.
Teste
Depois que os dados forem migrados para o destino, execute testes nos bancos de dados para verificar se os aplicativos funcionam bem com o destino. Certifique-se de que a origem e o destino sejam migrados corretamente executando os scripts manuais de validação de dados nos bancos de dados de origem Oracle e de destino PostgreSQL.
Idealmente, se os bancos de dados de origem e destino tiverem um caminho de rede, o Ora2Pg deve ser usado para validação de dados. Você pode usar a TEST
ação para garantir que todos os objetos do banco de dados Oracle tenham sido criados no PostgreSQL.
Execute este comando:
ora2pg -t TEST -c config/ora2pg.conf > migration_diff.txt
Otimização
A fase pós-migração é crucial para conciliar quaisquer problemas de precisão dos dados e verificar a integridade. Nesta fase, você também aborda problemas de desempenho com a carga de trabalho.
Ativos de migração
Para obter mais informações sobre esse cenário de migração, consulte os recursos a seguir. Eles apoiam o envolvimento de projetos de migração no mundo real.
Recurso | Description |
---|---|
Guia de migração do Oracle para o Azure PostgreSQL | Este documento ajuda arquitetos, consultores, administradores de banco de dados e funções relacionadas a migrar rapidamente cargas de trabalho do Oracle para o Banco de Dados do Azure para PostgreSQL usando o Ora2Pg. |
Soluções alternativas de migração do Oracle para o Azure PostgreSQL | Este documento ajuda arquitetos, consultores, administradores de banco de dados e funções relacionadas a corrigir ou solucionar problemas rapidamente ao migrar cargas de trabalho do Oracle para o Banco de Dados do Azure para PostgreSQL. |
Passos para instalar o Ora2Pg no Windows ou Linux | Este documento fornece um guia de instalação rápida para migrar esquema e dados do Oracle para o Banco de Dados do Azure para PostgreSQL usando Ora2Pg no Windows ou Linux. Para obter mais informações, consulte a documentação do Ora2Pg. |
A equipe de Engenharia de Dados SQL desenvolveu esses recursos. A carta principal desta equipe é desbloquear e acelerar a modernização complexa para projetos de migração de plataforma de dados para a plataforma de dados Microsoft Azure.
Mais apoio
Para obter ajuda sobre migração além do escopo das ferramentas Ora2Pg, entre em contato com @Ask Banco de Dados do Azure para PostgreSQL.
Próximos passos
Para obter uma matriz de serviços e ferramentas para migração de banco de dados e dados e para tarefas especializadas, consulte Serviços e ferramentas para migração de dados.
Documentação: