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. Esta página oferece uma visão geral dos espaços de trabalho de conversão do Database Migration Service:
Os objetos com suporte à conversão automática de código e esquema listam os objetos do Oracle com suporte à conversão automática de esquema.
O editor interativo de SQL descreve quais objetos você pode modificar diretamente no editor do espaço de trabalho de conversão.
Os recursos de conversão assistida pelo Gemini mostram como integrar o suporte à IA generativa para agilizar o processo de conversão de esquemas.
A seção Arquivos de mapeamento de conversão oferece uma visão geral das diretivas de personalização que podem ser usadas para substituir as regras da conversão automática de esquemas.
Espaços de trabalho de conversão legados descreve os espaços de trabalho legados que não oferecem suporte ao editor de SQL interativo.
Independentemente de você usar a conversão automática de esquema ou criar outro arquivo de mapeamento de conversões, há determinados tipos de dados que não são compatíveis com migrações do Oracle. Para mais informações, consulte Limitações conhecidas para tipos de dados.
Conversão automatizada de código e esquema
Quando você cria um espaço de trabalho de conversão, o Database Migration Service realiza automaticamente a conversão inicial do esquema. A conversão automática de esquema oferece suporte a um subconjunto muito específico de objetos de banco de dados Oracle disponíveis.
A conversão de código automatizada oferece suporte aos seguintes objetos de banco de dados Oracle:
Elementos de esquema do Oracle com suporte
- Restrições
- Índices (somente índices 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 com suporte
- Gatilhos (somente no nível da tabela)
- Pacotes
- Funções
- Procedimentos armazenados
Editor de SQL interativo
O editor SQL interativo permite modificar a sintaxe convertida do PostgreSQL diretamente no Database Migration Service. Você pode usá-lo para corrigir problemas de conversão ou ajustar o esquema para atender melhor às 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. Os seguintes objetos do Oracle são compatíveis com o editor:
- Acionadores de tabela (necessita de permissão)
- Visualizações materializadas.
- Pacotes
- Funções e 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 diretamente no Database Migration Service. Para modificar esses objetos, é necessário realizar as atualizações diretamente no banco de dados de destino depois de aplicar o esquema e o código convertidos.
Objetos que não têm suporte para edição:
- Tipos de objeto definidos pelo usuário
- Tabelas
- Esquemas
Recursos de conversão assistida do Gemini
O Database Migration Service integra o Gemini para Google Cloud aos espaços de trabalho de conversão para ajudar a acelerar e melhorar o processo de conversão em duas áreas:
Forneça recursos de explicabilidade do código com o assistente de conversão: um conjunto de instruções dedicadas que podem ajudar você a entender melhor a lógica de conversão, propor correções para problemas de conversão ou otimizar o código convertido.
Aplique correções de problemas de conversão com rapidez usando as sugestões de conversão de código do Gemini: um mecanismo em que o modelo do Gemini pode aprender enquanto 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 assistida pelo Gemini, consulte as seguintes páginas:
Converter o código e o esquema do Oracle com a assistência do Gemini
Exemplo de fluxo de trabalho para corrigir objetos de código com problemas de conversão
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 os objetos do Oracle precisam ser convertidos em objetos do PostgreSQL.
Diretivas de conversão compatíveis
O Database Migration Service oferece suporte às 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ões. 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 precisam ser modificados com as diretivas de conversão.
A diretiva SCHEMA
resulta nos seguintes ajustes no fluxo de conversão:
- O Database Migration Service converte somente esse esquema. Se você precisar converter outros esquemas em um único espaço de trabalho de conversão, faça o upload de vários arquivos com esquemas diferentes.
- Todas as outras diretivas de personalização fornecidas no arquivo se aplicam apenas a objetos nesse esquema específico.
Use o seguinte formato:
SCHEMA SCHEMA_NAME
Em que SCHEMA_NAME é o nome do esquema no banco de dados de origem.
- Se você incluir essa diretiva no arquivo de mapeamento de conversões, todas as personalizações serão aplicadas apenas a objetos contidos nesse esquema específico. Se você quiser personalizar objetos em outros esquemas, crie vários arquivos de mapeamento de conversão e faça o upload deles para o espaço de trabalho de conversão.
- Se você pular essa diretiva, será necessário fornecer 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 diretivaREPLACE_TABLES
, você precisa usar"SCHEMA_NAME.SOURCE_TABLE_NAME"
.
DATA_TYPE
É possível usar essa diretiva para mapear explicitamente qualquer
tipo de dados aceito entre
a sintaxe do Oracle e do PostgreSQL. Essa diretiva
espera uma lista de mapeamentos separados por vírgulas. A definição inteira precisa ser
fornecida em uma única linha, mas você pode 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 aceitos pelas 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 os tipos de dados do Oracle e do PostgreSQL, consulte:
- Tipos de dados do Oracle na documentação do Oracle.
- Tipos de dados do PostgreSQL na documentação do PostgreSQL.
MODIFY_TYPE
A diretiva MODIFY_TYPE
permite controlar em 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.
A definição inteira precisa ser fornecida em uma única linha, mas você inclui
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)
em tipos 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ões:
PG_INTEGER_TYPE 1
PG_NUMERIC_TYPE
Defina essa diretiva como 1
se você 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 de 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ões:
PG_NUMERIC_TYPE 1
DEFAULT_NUMERIC
A conversão padrão para NUMBER
s sem precisão
muda se você também usa a
diretiva PG_INTEGER_TYPE
:
- Se você usar a diretiva
PG_INTEGER
, osNUMBER
s sem precisão serão convertidos em valoresDECIMAL
. - Se você não usar a diretiva
PG_INTEGER
,NUMBER
s sem precisão serão convertidos em valoresBIGINT
.
É 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 origem 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
É possível usar 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.
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
É possível usar essa diretiva para mover tabelas entre esquemas adicionando o prefixo do esquema ao novo nome da tabela. Esse mecanismo pode ser usado independentemente de como você usa a diretiva SCHEMA para todo o arquivo de conversão. Exemplo:
REPLACE_TABLES "events:NEW_SCHEMA_NAME.login_events"
Alias para personalizar tipos de dados
Quando você usa 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
apelidos em vez dos tipos de dados SQL de origem.
Abra a seção a seguir para conferir a lista de aliases de tipo de dados aceitos pelo Database Migration Service.
Alias de tipos de dados
Alias | Conversão 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
Consulte o arquivo de mapeamento de conversão de exemplo a seguir, que usa todas as diretivas de conversão de esquema com suporte:
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ó realiza a conversão para 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 Database Migration Service só realiza a conversão para entidades no
esquema
PG_INTEGER_TYPE 1
faz com que o Database Migration Service converta todos os tipos de dados numéricos do Oracle encontrados nas tabelas do esquemaroot
em tipos específicos do PostgreSQL em vez de tipos numéricos portáteis ANSI.DEFAULT_NUMERIC
faz com que o Database Migration Service converta valoresNUMBER
que não têm um ponto de precisão especificado no tipoINTEGER
do PostgreSQL. Isso se aplica apenas aos valoresNUMBER
encontrados nas tabelas do esquemaroot
.DATA_TYPE NUMBER(4\,0):integer
faz com que o Database Migration Service converta valores específicos deNUMBER(4,0)
emINTEGER
do PostgreSQL.- A diretiva
MODIFY_TYPE
faz com que o Database Migration Service converta os dados na colunadates_and_times
na tabela de origemevents
especificamente para o tipoDATETIME
do PostgreSQL, independentemente do formato da coluna de origem real. 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 de origemevents
é renomeada comoevent_dates
na mesma tabela no esquema convertido. - A coluna
pseudonym
na tabela de origemusers
é renomeada comonickname
na mesma tabela no esquema convertido.
events
eusers
no esquemaroot
.- A coluna
REPLACE_TABLES events:login_events users:platform_users
renomeia as seguintes tabelas no esquema convertido:- A tabela
events
é renomeada comologin_events
. - A tabela
users
é renomeada comoplatform_users
.
events
eusers
no esquemaroot
.- A tabela
Espaços de trabalho de conversão legadas
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 têm suporte para recursos de conversão aprimorados pelo Gemini ou para o editor de SQL interativo. Eles só podem ser usados 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 Como usar espaços de trabalho de conversão legados.
A seguir
- Para saber como usar o espaço de trabalho de conversão interativo, consulte Criar um espaço de trabalho de conversão interativo.