Espaços de trabalho de conversão

Os espaços de trabalho de conversão ajudam a converter o esquema e os objetos da base de dados de origem na sintaxe SQL compatível com a base de dados de destino. Esta página oferece uma vista geral dos espaços de trabalho de conversão do Database Migration Service:

Existem determinados tipos de dados que não são suportados para migrações do Oracle. Para mais informações, consulte o artigo Limitações conhecidas para tipos de dados.

Vistas gerais do progresso das conversões

Informações de vista geral robustas dos espaços de trabalho de conversão, onde pode obter estatísticas sobre o número total de problemas de conversão pendentes ou resolvidos, melhoramentos assistidos pelo Gemini e o estado geral do seu processo de conversão.

Ecrã do espaço de trabalho Conversões com o separador Vista geral das conversões, onde
           pode ver o número de objetos convertidos, problemas de conversão
           e melhorias de conversão assistidas pelo Gemini.
Figura 1. Ecrã de vista geral do espaço de trabalho de conversão, onde pode monitorizar o progresso da conversão, ver problemas e inspecionar o código PostgreSQL resultante. (clique para aumentar)
Ecrã do espaço de trabalho Conversões com o separador Vista geral das conversões, onde
           pode ver o número de objetos convertidos, problemas de conversão
           e melhorias de conversão assistidas pelo Gemini.

Pode usar esta vista para filtrar objetos no seu esquema por tipo, gravidade do problema, ações necessárias ou estado de conversão.

Ecrã do espaço de trabalho de conversão que mostra como pode filtrar objetos convertidos por tipo ou estado.
Figura 2. Filtragem de objetos convertidos por estado e tipo de objeto. (clique para aumentar)
Ecrã do espaço de trabalho de conversão que mostra como pode filtrar objetos convertidos por tipo ou estado.

Para mais informações sobre a utilização das vistas gerais de conversões para inspecionar os resultados das conversões, consulte o artigo Trabalhe com espaços de trabalho de conversão.

Conversão determinística de código e esquema

Quando cria um espaço de trabalho de conversão, o Database Migration Service executa imediatamente a conversão inicial do esquema através de um conjunto de regras de conversão determinísticas, em que os tipos de dados e os objetos específicos do Oracle são mapeados para tipos de dados e objetos específicos do PostgreSQL. Este processo suporta um subconjunto muito específico de objetos de base de dados Oracle disponíveis.

A conversão de código determinístico oferece suporte para os seguintes objetos da base de dados Oracle:

Elementos de esquema Oracle suportados

  • Restrições
  • Índices (apenas índices criados no mesmo esquema que a respetiva tabela)
  • Vistas materializadas
  • Tipos de objetos (suporte parcial)
  • Sequências
  • Sinónimos
  • Tabelas
  • Visualizações

Elementos de código Oracle suportados

  • Acionadores (apenas ao nível da tabela)
  • Pacotes
  • Funções
  • Procedimentos armazenados

Editor de SQL interativo

O editor de SQL interativo permite-lhe modificar a sintaxe do PostgreSQL convertida diretamente no serviço de migração de base de dados. Pode usá-lo para corrigir problemas de conversão ou ajustar o esquema para se adequar melhor às suas necessidades. Não é possível modificar alguns objetos no editor incorporado.

Objetos Oracle editáveis

Depois de converter o código e o esquema da base de dados de origem, pode usar o editor interativo para modificar o SQL gerado para determinados tipos de objetos. O editor suporta os seguintes objetos Oracle:

  • Acionadores de tabelas (requer autorização)
  • Vistas 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 estão disponíveis para edição direta no serviço de migração de bases de dados. Para modificar esses objetos, tem de fazer as atualizações diretamente na base de dados de destino depois de aplicar o esquema e o código convertidos.

Objetos que não são suportados para edição:

  • Tipos de objetos definidos pelo utilizador
  • Tabelas
  • Esquemas

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

O Serviço de migração de bases de dados integra o Gemini para o Google Cloud nos espaços de trabalho de conversão para ajudar a acelerar e melhorar o processo de conversão nas seguintes áreas:

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

  • Forneça funcionalidades de explicabilidade do código com o assistente de conversões: um conjunto de comandos dedicados que podem ajudar a compreender melhor a lógica de conversão, propor correções para problemas de conversão ou otimizar o código convertido.

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

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

Ficheiros de mapeamento de conversões

Pode personalizar a lógica de conversão com um ficheiro de mapeamento de conversões. O ficheiro de mapeamento de conversões é um ficheiro de texto que contém instruções precisas (denominadas diretivas de conversão) sobre como os seus objetos Oracle devem ser convertidos em objetos PostgreSQL.

Diretivas de conversão suportadas

O serviço de migração de bases de dados suporta as seguintes diretivas de conversão para ficheiros de mapeamento de conversões:

EXPORT_SCHEMA

EXPORT_SCHEMA é uma diretiva obrigatória para todos os ficheiros de mapeamento de conversões. O serviço de migração de bases de dados requer esta instrução para garantir que os esquemas de origem são convertidos nos esquemas de destino corretos. Certifique-se de que os ficheiros de mapeamento de conversões incluem esta linha:

EXPORT_SCHEMA 1

SCHEMA

O serviço de migração de bases de dados tem de conseguir determinar que esquema contém os objetos que devem ser modificados com as suas diretivas de conversão. A diretiva SCHEMA resulta nos seguintes ajustes ao fluxo de conversão:

  • O Database Migration Service converte apenas este esquema. Se precisar de converter outros esquemas num único espaço de trabalho de conversão, tem de carregar vários ficheiros com esquemas diferentes.
  • Todas as outras diretivas de personalização fornecidas no seu ficheiro aplicam-se apenas a objetos neste esquema específico.

Use o seguinte formato:

SCHEMA SCHEMA_NAME

Em que SCHEMA_NAME é o nome do seu esquema na base de dados de origem.

  • Se incluir esta diretiva no ficheiro de mapeamento de conversões, todas as personalizações são aplicadas apenas a objetos contidos neste esquema específico. Se quiser personalizar objetos noutros esquemas, tem de criar vários ficheiros de mapeamento de conversões e carregá-los no espaço de trabalho de conversões.
  • Se ignorar esta diretiva, tem de fornecer nomes de esquemas 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, tem de usar "SCHEMA_NAME.SOURCE_TABLE_NAME".

DATA_TYPE

Pode usar esta diretiva para mapear explicitamente qualquer tipo de dados suportado entre a sintaxe do Oracle e do PostgreSQL. Esta diretiva espera uma lista de mapeamentos separados por vírgulas. Toda a definição tem de ser fornecida numa única linha, mas inclui várias diretivas DATA_TYPE no ficheiro de configuração. Use o seguinte formato:

DATA_TYPE ORACLE_DATA_TYPE1:PGSQL_DATA_TYPE1
DATA_TYPE ORACLE_DATA_TYPE2:PGSQL_DATA_TYPE2...

Onde ORACLE_DATA_TYPE e PGSQL_DATA_TYPE são tipos de dados suportados pelas respetivas versões do Oracle e PostgreSQL que usa na sua migração. Para ver informações sobre as versões suportadas, consulte Vista geral do cenário.

Exemplo:

DATA_TYPE REAL:double precision,SMALLINT:integer

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

MODIFY_TYPE

A diretiva MODIFY_TYPE permite-lhe controlar o tipo de dados para o qual o serviço de migração de bases de dados converte uma coluna específica na tabela de origem. Esta diretiva espera uma lista de mapeamentos separados por vírgulas. A definição completa tem de ser fornecida numa única linha, mas inclui várias diretivas MODIFY_TYPE no ficheiro 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...

Onde:

  • SOURCE_TABLE_NAME é o nome da tabela que contém a coluna onde quer alterar o tipo de dados.
  • COLUMN_NAME é o nome da coluna para a qual quer personalizar o mapeamento de conversões.
  • EXPECTED_END_RESULT_DATA_TYPE é o tipo de dados do PostgreSQL que quer que a coluna convertida use.

Exemplo:

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

PG_INTEGER_TYPE

Por predefinição,o serviço de migração de bases de dados converte os tipos NUMBER(p,s) no tipo DECIMAL(p,s) do PostgreSQL.

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

Inclua a seguinte definição no ficheiro de mapeamento de conversões:

PG_INTEGER_TYPE 1

PG_NUMERIC_TYPE

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

Se definir esta diretiva como 0, os valores de NUMBER(p,s) preservam o respetivo valor original exato e usam o tipo de dados do PostgreSQL interno.

Inclua a seguinte definição no ficheiro de mapeamento de conversões:

PG_NUMERIC_TYPE 1

DEFAULT_NUMERIC

A conversão predefinida para NUMBERs sem precisão altera se também usar a diretiva PG_INTEGER_TYPE:

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

Pode modificar este comportamento e usar a diretiva DEFAULT_NUMERIC para especificar que 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

Onde POSTGRESQL_NUMERIC_DATA_TYPE é um dos seguintes: integer, smallint, bigint.

Exemplo:

DEFAULT_NUMERIC integer

REPLACE_COLS

Pode usar a diretiva REPLACE_COLS para mudar o nome das colunas no esquema convertido. Esta 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)...

Onde:

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

Exemplo:

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

REPLACE_TABLES

Pode usar a diretiva REPLACE_TABLES para mudar o nome das tabelas ou movê-las para um novo esquema. Esta diretiva espera uma lista de mapeamentos separados por espaços. Para mais informações sobre a sintaxe de cada exemplo de utilização, expanda as secções seguintes.

Mudar o nome das tabelas

Para mudar o nome das tabelas no esquema convertido, use o seguinte formato:

REPLACE_TABLES SOURCE_TABLE_NAME1:DESTINATION_TABLE_NAME1 SOURCE_TABLE_NAME2:DESTINATION_TABLE_NAME2

Onde:

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

Exemplo:

REPLACE_TABLES "events:login_events" "users:platform_users"

Mover tabelas entre esquemas

Pode usar esta diretiva para mover tabelas entre esquemas adicionando o prefixo do esquema ao novo nome da tabela. Este mecanismo pode ser usado independentemente de como usa a diretiva SCHEMA para todo o ficheiro de conversão. Por exemplo:

REPLACE_TABLES "events:NEW_SCHEMA_NAME.login_events"
    

Aliás para personalizar tipos de dados

Quando usa diretivas de conversão para modificar a forma como o Database Migration Service converte diferentes tipos de dados (por exemplo, com as diretivas , ou ), pode usar alias em vez dos tipos de dados SQL de origem.DATA_TYPEMODIFY_TYPEPG_NUMERIC_TYPE

Expanda a secção seguinte para ver a lista de alias de tipos de dados suportados pelo serviço de migração de bases de dados.

Alias do 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

Ficheiro de mapeamento de conversões de exemplo

Veja o seguinte ficheiro de mapeamento de conversões de exemplo que usa todas as diretivas de conversão de esquemas suportadas:

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 da utilização deste ficheiro são os seguintes:

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

Espaços de trabalho de conversão antigos

Os espaços de trabalho de conversão antigos são um tipo de espaços de trabalho de conversão mais antigo e limitado. Os espaços de trabalho de conversão antigos não suportam funcionalidades de conversão melhoradas pelo Gemini nem o editor de SQL interativo. Só pode usá-los para converter o esquema de origem com a ferramenta de migração Ora2Pg.

Não recomendamos a utilização do tipo antigo de espaços de trabalho de conversão para as suas migrações. Se o seu cenário exigir a utilização de espaços de trabalho de conversão antigos, consulte Trabalhe com espaços de trabalho de conversão antigos.

O que se segue?

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