Espaços de trabalho de conversão

Os espaços de trabalho de conversão ajudam a converter o esquema e os objetos do banco de dados de origem na sintaxe SQL compatível com o banco de dados de destino. Nesta página, você encontra uma visão geral dos espaços de trabalho de conversão do Database Migration Service:

Alguns tipos de dados não são compatíveis com migrações do Oracle. Para mais informações, consulte Limitações conhecidas para tipos de dados.

Visão geral do progresso da conversão

Informações gerais robustas dos espaços de trabalho de conversão, em que você pode receber insights sobre o número total de problemas de conversão pendentes ou resolvidos, aumentos assistidos pelo Gemini e a integridade geral do seu processo de conversão.

Tela do espaço de trabalho de conversão com a guia "Visão geral da conversão", em que é possível conferir o número de objetos convertidos, problemas de conversão e melhorias na conversão assistida pelo Gemini.
Figura 1. Tela de visão geral do espaço de trabalho de conversão, em que é possível monitorar o progresso da conversão, ver problemas e inspecionar o código PostgreSQL resultante. (clique para ampliar)
Tela do espaço de trabalho de conversão com a guia "Visão geral da conversão", em que é possível conferir o número de objetos convertidos, problemas de conversão e melhorias na conversão assistida pelo Gemini.

Use essa visualização para filtrar objetos no seu esquema por tipo, gravidade do problema, ações necessárias ou status da conversão.

Tela do espaço de trabalho de conversão que mostra como filtrar objetos convertidos por tipo ou status.
Figura 2. Filtragem de objetos convertidos por status e tipo de objeto. (clique para ampliar)
Tela do espaço de trabalho de conversão que mostra como filtrar objetos convertidos por tipo ou status.

Para mais informações sobre como usar as visões gerais de conversão para inspecionar os resultados de conversão, consulte Trabalhar com espaços de trabalho de conversão.

Conversão determinista de código e esquema

Ao criar um espaço de trabalho de conversão, o Database Migration Service realiza imediatamente a conversão inicial do esquema usando um conjunto de regras de conversão determinísticas em que tipos de dados e objetos específicos do Oracle são mapeados para tipos de dados e objetos específicos do PostgreSQL. Esse processo é compatível com um subconjunto muito específico de objetos de banco de dados Oracle disponíveis.

A conversão determinística de código oferece suporte aos seguintes objetos de banco de dados Oracle:

Elementos de esquema do Oracle compatíveis

  • Restrições
  • Índices (apenas os criados no mesmo esquema da tabela)
  • Visualizações materializadas
  • Tipos de objetos (suporte parcial)
  • Sequências
  • Sinônimos
  • Tabelas
  • Visualizações

Elementos de código do Oracle compatíveis

  • Gatilhos (somente no nível da tabela)
  • Pacotes
  • Funções
  • Procedimentos armazenados

Editor SQL interativo

O editor interativo de SQL permite modificar a sintaxe convertida do PostgreSQL diretamente no Database Migration Service. Você pode usar esse recurso para corrigir problemas de conversão ou ajustar o esquema de acordo com suas necessidades. Alguns objetos não podem ser modificados no editor integrado.

Objetos editáveis do Oracle

Depois de converter o código e o esquema do banco de dados de origem, use o editor interativo para modificar o SQL gerado para determinados tipos de objetos. O editor é compatível com os seguintes objetos do Oracle:

  • Gatilhos de tabela (requer permissão)
  • Visualizações materializadas.
  • Pacotes
  • Funções, procedimentos armazenados
  • Sinônimos
  • Visualizações
  • Restrições
  • Índices
  • Sequências

Além disso, alguns objetos são convertidos, mas não podem ser editados diretamente no Database Migration Service. Para modificar esses objetos, faça as atualizações diretamente no banco de dados de destino depois de aplicar o esquema e o código convertidos.

Objetos que não podem ser editados:

  • Tipos de objeto definidos pelo usuário
  • Tabelas
  • Esquemas

Acelere a conversão de código e esquema com o Gemini

O Database Migration Service integra o Gemini para Google Cloud aos espaços de trabalho de conversão para ajudar você a acelerar e melhorar o processo de conversão nas seguintes áreas:

  • Melhore os resultados da conversão determinística com a conversão automática com tecnologia do Gemini para usar o poder da IA e reduzir significativamente o número de ajustes manuais necessários no seu código PostgreSQL.

  • Ofereça recursos de explicabilidade de código com o assistente de conversão: um conjunto de comandos dedicados que ajudam você a entender melhor a lógica de conversão, propor correções para problemas de conversão ou otimizar o código convertido.

  • Agilize a aplicação de correções para problemas de conversão com as sugestões de conversão de código do Gemini: um mecanismo em que o modelo do Gemini pode aprender à medida que você corrige problemas de conversão e sugere mudanças em outros objetos com falhas no espaço de trabalho.

Para mais informações sobre a conversão com tecnologia do Gemini, consulte as seguintes páginas:

Arquivos de mapeamento de conversão

É possível personalizar a lógica de conversão com um arquivo de mapeamento de conversão. O arquivo de mapeamento de conversão é um arquivo de texto que contém instruções precisas (chamadas de diretivas de conversão) sobre como seus objetos do Oracle devem ser convertidos em objetos do PostgreSQL.

Diretivas de conversão compatíveis

O Database Migration Service é compatível com as seguintes diretivas de conversão para arquivos de mapeamento de conversão:

EXPORT_SCHEMA

EXPORT_SCHEMA é uma diretiva obrigatória para todos os arquivos de mapeamento de conversão. O Database Migration Service exige essa instrução para garantir que os esquemas de origem sejam convertidos nos esquemas de destino corretos. Verifique se os arquivos de mapeamento de conversão incluem esta linha:

EXPORT_SCHEMA 1

SCHEMA

O Database Migration Service precisa determinar qual esquema contém os objetos que devem ser modificados com suas diretivas de conversão. A diretiva SCHEMA resulta nos seguintes ajustes no fluxo de conversão:

  • O Database Migration Service converte apenas esse esquema. Se você precisar converter outros esquemas em um único espaço de trabalho de conversão, faça upload de vários arquivos com esquemas diferentes.
  • Todas as outras diretivas de personalização fornecidas no arquivo são aplicadas apenas a objetos neste esquema específico.

Use o seguinte formato:

SCHEMA SCHEMA_NAME

Em que SCHEMA_NAME é o nome do seu esquema no banco de dados de origem.

  • Se você incluir essa diretiva no arquivo de mapeamento de conversão, todas as personalizações serão aplicadas apenas aos objetos contidos nesse esquema específico. Se quiser personalizar objetos em outros esquemas, crie vários arquivos de mapeamento de conversão e faça upload deles para o espaço de trabalho de conversão.
  • Se você pular essa diretiva, forneça nomes de esquema explícitos para objetos modificados por outras diretivas de conversão. Por exemplo, em vez de usar SOURCE_TABLE_NAME para a diretiva REPLACE_TABLES, use "SCHEMA_NAME.SOURCE_TABLE_NAME".

DATA_TYPE

Use essa diretiva para mapear explicitamente qualquer tipo de dados compatível entre a sintaxe do Oracle e do PostgreSQL. Essa diretiva espera uma lista de mapeamentos separados por vírgulas. Toda a definição precisa ser fornecida em uma única linha, mas é possível incluir várias diretivas DATA_TYPE no arquivo de configuração. Use o seguinte formato:

DATA_TYPE ORACLE_DATA_TYPE1:PGSQL_DATA_TYPE1
DATA_TYPE ORACLE_DATA_TYPE2:PGSQL_DATA_TYPE2...

Em que ORACLE_DATA_TYPE e PGSQL_DATA_TYPE são tipos de dados compatíveis com as respectivas versões do Oracle e do PostgreSQL usadas na migração. Para informações sobre as versões compatíveis, consulte Visão geral do cenário.

Exemplo:

DATA_TYPE REAL:double precision,SMALLINT:integer

Para mais informações sobre tipos de dados do Oracle e do PostgreSQL, consulte:

MODIFY_TYPE

A diretiva MODIFY_TYPE permite controlar para qual tipo de dados o Database Migration Service converte uma coluna específica na tabela de origem. Essa diretiva espera uma lista de mapeamentos separados por vírgulas. Toda a definição precisa ser fornecida em uma única linha, mas você pode incluir várias diretivas MODIFY_TYPE no arquivo de configuração. Use o seguinte formato:

MODIFY_TYPE SOURCE_TABLE_NAME1:COLUMN_NAME:EXPECTED_END_RESULT_DATA_TYPE
MODIFY_TYPE SOURCE_TABLE_NAME2:COLUMN_NAME:EXPECTED_END_RESULT_DATA_TYPE...

Em que:

  • SOURCE_TABLE_NAME é o nome da tabela que contém a coluna em que você quer mudar o tipo de dados.
  • COLUMN_NAME é o nome da coluna para a qual você quer personalizar o mapeamento de conversão.
  • EXPECTED_END_RESULT_DATA_TYPE é o tipo de dados do PostgreSQL que você quer que a coluna convertida use.

Exemplo:

MODIFY_TYPE events:dates_and_times:DATETIME,users:pseudonym:TEXT

PG_INTEGER_TYPE

Por padrão,o Database Migration Service converte os tipos NUMBER(p,s) para o tipo DECIMAL(p,s) do PostgreSQL.

É possível modificar esse comportamento com a diretiva PG_INTEGER_TYPE. Defina o valor como 1 e force todos os tipos NUMBER com precisão e escala (NUMBER(p,s)) a serem convertidos em tipos smallint, integer ou bigint do PostgreSQL com base no número de dígitos de precisão.

Inclua a seguinte configuração no arquivo de mapeamento de conversão:

PG_INTEGER_TYPE 1

PG_NUMERIC_TYPE

Defina essa diretiva como 1 se quiser converter todos os tipos NUMBER com precisão e escala (NUMBER(p,s)) em tipos real ou float do PostgreSQL (com base no número de dígitos de precisão).

Se você definir essa diretiva como 0, os valores NUMBER(p,s) vão preservar o valor original exato e usar o tipo de dados interno do PostgreSQL.

Inclua a seguinte configuração no arquivo de mapeamento de conversão:

PG_NUMERIC_TYPE 1

DEFAULT_NUMERIC

A conversão padrão para NUMBERs sem precisão muda se você também usa a diretiva PG_INTEGER_TYPE:

  • Se você usar a diretiva PG_INTEGER, os NUMBERs sem precisão serão convertidos em valores DECIMAL.
  • Se você não usar a diretiva PG_INTEGER, os NUMBERs sem precisão serão convertidos em valores BIGINT.

É possível modificar esse comportamento e usar a diretiva DEFAULT_NUMERIC para especificar qual tipo de dados deve ser usado para tipos NUMBER sem pontos de precisão especificados. Use o seguinte formato:

DEFAULT_NUMERIC POSTGRESQL_NUMERIC_DATA_TYPE

em que POSTGRESQL_NUMERIC_DATA_TYPE é um dos seguintes: integer, smallint, bigint.

Exemplo:

DEFAULT_NUMERIC integer

REPLACE_COLS

Use a diretiva REPLACE_COLS para renomear colunas no esquema convertido. Essa diretiva espera uma lista de mapeamentos separados por vírgulas. Use o seguinte formato:

REPLACE_COLS SOURCE_TABLE_NAME1(SOURCE1_TABLE1_COLUMN_NAME1:DESTINATION_TABLE1_COLUMN_NAME1,SOURCE_TABLE1_COLUMN_NAME2:DESTINATION_TABLE1_COLUMN_NAME2),SOURCE_TABLE_NAME2(SOURCE_TABLE2_COLUMN_NAME1:DESTINATION_TABLE2_COLUMN_NAME1,SOURCE_TABLE2_COLUMN_NAME2:DESTINATION_TABLE2_COLUMN_NAME2)...

Em que:

  • SOURCE_TABLE_NAME é o nome da tabela que contém a coluna cujo nome você quer mudar.
  • SOURCE_COLUMN_NAME é o nome da coluna na sua fonte que você quer mudar.
  • DESTINATION_COLUMN_NAME é o novo nome da coluna que você quer usar no esquema convertido.

Exemplo:

REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname)

REPLACE_TABLES

Use a diretiva REPLACE_TABLES para renomear tabelas ou movê-las para um novo esquema. Essa diretiva espera uma lista de mapeamentos separados por espaços. Para mais informações sobre a sintaxe de cada caso de uso, abra as seções a seguir.

Como renomear tabelas

Para renomear tabelas no esquema convertido, use o seguinte formato:

REPLACE_TABLES SOURCE_TABLE_NAME1:DESTINATION_TABLE_NAME1 SOURCE_TABLE_NAME2:DESTINATION_TABLE_NAME2

Em que:

  • SOURCE_TABLE_NAME é o nome da tabela de origem que você quer renomear no esquema convertido.
  • DESTINATION_TABLE_NAME é o novo nome da tabela que você quer usar no esquema convertido.

Exemplo:

REPLACE_TABLES "events:login_events" "users:platform_users"

Mover tabelas entre esquemas

Use essa diretiva para mover tabelas entre esquemas adicionando o prefixo do esquema ao novo nome da tabela. Esse mecanismo pode ser usado independente de como você usa a diretiva SCHEMA para todo o arquivo de conversão. Exemplo:

REPLACE_TABLES "events:NEW_SCHEMA_NAME.login_events"
    

Pseudônimos para personalizar tipos de dados

Ao usar diretivas de conversão para modificar como o Database Migration Service converte diferentes tipos de dados (por exemplo, com as diretivas DATA_TYPE, MODIFY_TYPE ou PG_NUMERIC_TYPE), é possível usar aliases em vez dos tipos de dados SQL de origem.

Expanda a seção a seguir para conferir a lista de aliases de tipos de dados compatíveis com o Database Migration Service.

Aliases de tipo de dados

Alias Convertido para o tipo PostgreSQL
bigint, int8 BIGINT
bool, boolean BOOLEAN
bytea BYTEA
char, character CHAR
character varying, varchar VARCHAR
date DATE
decimal, numeric DECIMAL
double precision, float8 DOUBLE PRECISION
real, float4 REAL
int, integer, int4 INTEGER
int2 SMALLINT
interval INTERVAL
json JSON
smallint SMALLINT
text TEXT
time TIME
timestamp TIMESTAMP
timestamptz TIMESTAMPTZ
timetz TIMETZ
uuid UUID
XML XML

Exemplo de arquivo de mapeamento de conversão

Confira o exemplo de arquivo de mapeamento de conversão a seguir que usa todas as diretivas de conversão de esquema compatíveis:

EXPORT_SCHEMA 1
SCHEMA root

PG_NUMERIC_TYPE 0
PG_INTEGER_TYPE 1
DEFAULT_NUMERIC integer
DATA_TYPE NUMBER(4\,0):integer
MODIFY_TYPE events:dates_and_times:TIMESTAMP
REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname)
REPLACE_TABLES events:login_events users:platform_users

Os resultados do uso desse arquivo são os seguintes:

  • EXPORT_SCHEMA 1 é uma diretiva obrigatória.
  • SCHEMA root resulta nos seguintes ajustes no fluxo de conversão:
    • O Database Migration Service só faz a conversão de entidades no esquema root. Nenhum outro esquema é convertido.
    • Todas as outras diretivas de personalização neste arquivo se aplicam apenas a colunas e tipos de dados definidos no esquema root.
  • O PG_INTEGER_TYPE 1 faz com que o Database Migration Service converta todos os tipos de dados numéricos do Oracle encontrados em tabelas no esquema root para tipos específicos do PostgreSQL em vez de tipos numéricos portáteis ANSI.
  • DEFAULT_NUMERIC faz com que o Database Migration Service converta valores NUMBER que não têm um ponto de precisão especificado no tipo INTEGER do PostgreSQL. Isso só se aplica aos valores NUMBER encontrados em tabelas no esquema root.
  • DATA_TYPE NUMBER(4\,0):integer faz com que o Database Migration Service converta valores NUMBER(4,0) específicos para INTEGER do PostgreSQL.
  • A diretiva MODIFY_TYPE faz com que o Database Migration Service converta os dados na coluna dates_and_times da tabela de origem events especificamente para o tipo DATETIME do PostgreSQL, independente do formato real da coluna de origem.
  • REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname) faz com que o Database Migration Service renomeie as seguintes colunas no esquema convertido:
    • A coluna dates_and_times na tabela events de origem é renomeada como event_dates na mesma tabela no esquema convertido.
    • A coluna pseudonym na tabela users de origem é renomeada como nickname na mesma tabela no esquema convertido.
    A operação de renomeação é aplicada apenas às tabelas events e users no esquema root.
  • REPLACE_TABLES events:login_events users:platform_users renomeia as seguintes tabelas no esquema convertido:
    • A tabela events é renomeada como login_events.
    • A tabela users é renomeada como platform_users.
    A operação de renomeação é aplicada apenas às tabelas events e users no esquema root.

Espaços de trabalho de conversão legados

Os espaços de trabalho de conversão legados são um tipo mais antigo e limitado de espaços de trabalho de conversão. Os espaços de trabalho de conversão legados não são compatíveis com os recursos de conversão aprimorados com o Gemini nem com o editor interativo de SQL. Você só pode usá-los para converter o esquema de origem com a ferramenta de migração Ora2Pg.

Não recomendamos usar o tipo legado de espaços de trabalho de conversão para suas migrações. Se o seu cenário exigir o uso de espaços de trabalho de conversão legados, consulte Trabalhar com espaços de trabalho de conversão legados.

A seguir

Para saber como usar os espaços de trabalho de conversão, consulte: