Los lugares de trabajo de conversión te ayudan a convertir el esquema y los objetos de tu base de datos de origen en la sintaxis SQL que es compatible con la base de datos de destino. En esta página, se proporciona una descripción general de los lugares de trabajo de conversión de Database Migration Service:
En objetos compatibles con la conversión automática de código y esquema, se enumeran los objetos de Oracle compatibles con la conversión automática de esquemas.
En Editor interactivo de SQL, se describen los objetos que puedes modificar directamente en el editor del lugar de trabajo de conversiones.
En Funciones de conversión asistidas por Gemini, se analiza cómo puedes integrar la compatibilidad con la IA generativa para acelerar el proceso de conversión de esquemas.
En la sección Archivos de asignación de conversiones, se proporciona una descripción general de las directivas de personalización que puedes usar para anular las reglas de la conversión automática de esquemas.
En Espacios de trabajo de conversión heredados, se describen los espacios de trabajo heredados que no son compatibles con el editor de SQL interactivo.
Independientemente de si usas la conversión automática de esquemas o creas un archivo de asignaciones de conversiones adicional, hay ciertos tipos de datos que no son compatibles con las migraciones de Oracle. Para obtener más información, consulta Limitaciones conocidas de los tipos de datos.
Conversión automática de código y esquemas
Cuando creas un lugar de trabajo de conversión, Database Migration Service realiza automáticamente la conversión inicial del esquema. La conversión automática de esquemas admite un subconjunto muy específico de objetos de base de datos de Oracle disponibles.
La conversión de código automatizada admite los siguientes objetos de base de datos de Oracle:
Elementos de esquema de Oracle admitidos
- Limitaciones
- Índices (solo los índices que se crean en el mismo esquema que su tabla)
- Vistas materializadas
- Tipos de objetos (compatibilidad parcial)
- Secuencias
- Sinónimos
- Tablas
- Vistas
Elementos de código de Oracle admitidos
- Activadores (solo a nivel de la tabla)
- Paquetes
- Funciones
- Procedimientos almacenados
Editor de SQL interactivo
El editor de SQL interactivo te permite modificar la sintaxis de PostgreSQL convertida directamente en Database Migration Service. Puedes usarlo para corregir problemas de conversión o ajustar el esquema para que se adapte mejor a tus necesidades. Algunos objetos no se pueden modificar en el editor integrado.
Objetos de Oracle editables
Después de convertir el código y el esquema de la base de datos de origen, puedes usar el editor interactivo para modificar el SQL generado para ciertos tipos de objetos. El editor admite los siguientes objetos de Oracle:
- Activadores de tablas (requiere permiso)
- Vistas materializadas
- Paquetes
- Funciones y procedimientos almacenados
- Sinónimos
- Vistas
- Limitaciones
- Índices
- Secuencias
Además, algunos objetos se convierten, pero no están disponibles para editarlos directamente en Database Migration Service. Para modificar esos objetos, debes realizar las actualizaciones directamente en la base de datos de destino después de aplicar el esquema y el código convertidos.
Objetos que no se admiten para la edición:
- Tipos de objetos definidos por el usuario
- Tablas
- Esquemas
Funciones de conversión asistida por Gemini
Database Migration Service integra Gemini para Google Cloud en lugares de trabajo de conversión para ayudarte a acelerar y mejorar el proceso de conversión en dos áreas:
Proporciona funciones de explicabilidad del código con el asistente de conversiones: un conjunto de instrucciones específicas que pueden ayudarte a comprender mejor la lógica de conversión, proponer correcciones para los problemas de conversión o optimizar el código convertido.
Agiliza la aplicación de correcciones para problemas de conversión con las sugerencias de conversión de código de Gemini: un mecanismo en el que el modelo de Gemini puede aprender a medida que corriges problemas de conversión y sugieres cambios en otros objetos defectuosos del espacio de trabajo.
Para obtener más información sobre la conversión asistida por Gemini, consulta las siguientes páginas:
Convierte el código y el esquema de Oracle con la asistencia de Gemini
Ejemplo de flujo de trabajo para corregir objetos de código con problemas de conversión
Archivos de asignación de conversiones
Puedes personalizar la lógica de conversión con un archivo de asignación de conversiones. El archivo de asignación de conversiones es un archivo de texto que contiene instrucciones precisas (denominadas directivas de conversión) sobre cómo se deben convertir tus objetos de Oracle en objetos de PostgreSQL.
Directivas de conversión compatibles
Database Migration Service admite las siguientes directivas de conversión para los archivos de asignación de conversiones:
EXPORT_SCHEMA
EXPORT_SCHEMA
es una directiva obligatoria para todos los archivos de asignaciones de conversiones. Database Migration Service requiere esta instrucción para garantizar
que tus esquemas de origen se conviertan en los esquemas de destino correctos.
Asegúrate de que tus archivos de asignación de conversiones incluyan esta línea:
EXPORT_SCHEMA 1
SCHEMA
Database Migration Service debe poder determinar qué esquema contiene los objetos que se deben modificar con tus directivas de conversión.
La directiva SCHEMA
genera los siguientes ajustes en el flujo de conversiones:
- Database Migration Service convierte solo este esquema. Si necesitas convertir otros esquemas en un solo espacio de trabajo de conversión, debes subir varios archivos con diferentes esquemas.
- Todas las demás directivas de personalización proporcionadas en el archivo solo se aplican a los objetos de este esquema en particular.
Usa el siguiente formato:
SCHEMA SCHEMA_NAME
En el que SCHEMA_NAME es el nombre de tu esquema en la base de datos de origen.
- Si incluyes esta directiva en el archivo de asignación de conversiones, todas las personalizaciones se aplicarán solo a los objetos contenidos en este esquema específico. Si deseas personalizar objetos en otros esquemas, debes crear varios archivos de asignación de conversiones y subirlos al espacio de trabajo de conversiones.
- Si omites esta directiva, debes proporcionar nombres de esquema explícitos para los objetos modificados por otras directivas de conversión.
Por ejemplo, en lugar de usar
SOURCE_TABLE_NAME
para la directivaREPLACE_TABLES
, deberás usar"SCHEMA_NAME.SOURCE_TABLE_NAME"
.
DATA_TYPE
Puedes usar esta directiva para asignar de forma explícita cualquier tipo de datos compatible entre la sintaxis de Oracle y PostgreSQL. Esta directiva espera una lista de asignaciones separadas por comas. Toda la definición se debe proporcionar en una sola línea, pero puedes incluir varias directivas DATA_TYPE
en tu archivo de configuración. Usa el siguiente formato:
DATA_TYPE ORACLE_DATA_TYPE1:PGSQL_DATA_TYPE1 DATA_TYPE ORACLE_DATA_TYPE2:PGSQL_DATA_TYPE2...
En la que ORACLE_DATA_TYPE y PGSQL_DATA_TYPE son tipos de datos compatibles con sus respectivas versiones de Oracle y PostgreSQL que usas en la migración. Para obtener información sobre las versiones compatibles, consulta Descripción general de las situaciones.
Ejemplo:
DATA_TYPE REAL:double precision,SMALLINT:integer
Para obtener más información sobre los tipos de datos de Oracle y PostgreSQL, consulta los siguientes recursos:
- Tipos de datos de Oracle en la documentación de Oracle.
- Tipos de datos de PostgreSQL en la documentación de PostgreSQL.
MODIFY_TYPE
La directiva MODIFY_TYPE
te permite controlar a qué tipo de datos convierte Database Migration Service una columna específica en tu tabla de origen.
Esta directiva espera una lista de asignaciones separadas por comas.
Toda la definición se debe proporcionar en una sola línea, pero puedes incluir varias directivas MODIFY_TYPE
en tu archivo de configuración.
Usa el siguiente 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...
Aquí:
- SOURCE_TABLE_NAME es el nombre de la tabla que contiene la columna en la que deseas cambiar el tipo de datos.
- COLUMN_NAME es el nombre de la columna para la que deseas personalizar la asignación de conversiones.
- EXPECTED_END_RESULT_DATA_TYPE es el tipo de datos de PostgreSQL que deseas que use la columna convertida.
Ejemplo:
MODIFY_TYPE events:dates_and_times:DATETIME,users:pseudonym:TEXT
PG_INTEGER_TYPE
De forma predeterminada,Database Migration Service convierte los tipos NUMBER(p,s)
en el tipo DECIMAL(p,s)
de PostgreSQL.
Puedes modificar este comportamiento con la directiva PG_INTEGER_TYPE
. Establece su valor en 1
y obliga a que todos los tipos de NUMBER
con precisión y escala (NUMBER(p,s)
) se conviertan en tipos smallint
, integer
o bigint
de PostgreSQL según la cantidad de dígitos de precisión.
Incluye el siguiente parámetro de configuración en tu archivo de asignación de conversiones:
PG_INTEGER_TYPE 1
PG_NUMERIC_TYPE
Establece esta directiva en 1
si deseas convertir todos tus tipos de NUMBER
con precisión y escala (NUMBER(p,s)
) en tipos de real
o float
de PostgreSQL (según la cantidad de dígitos de precisión).
Si estableces esta directiva en 0
, los valores de NUMBER(p,s)
preservan su valor original exacto y usan el tipo de datos interno de PostgreSQL.
Incluye el siguiente parámetro de configuración en tu archivo de asignación de conversiones:
PG_NUMERIC_TYPE 1
DEFAULT_NUMERIC
La conversión predeterminada para NUMBER
sin precisión cambia si también usas la
directiva PG_INTEGER_TYPE
:
- Si usas la directiva
PG_INTEGER
, losNUMBER
sin precisión se convierten en valoresDECIMAL
. - Si no usas la directiva
PG_INTEGER
, losNUMBER
sin precisión se convierten en valoresBIGINT
.
Puedes modificar este comportamiento y usar la directiva DEFAULT_NUMERIC
para especificar qué tipo de datos se debe usar para los tipos NUMBER
sin puntos de precisión especificados.
Usa el siguiente formato:
DEFAULT_NUMERIC POSTGRESQL_NUMERIC_DATA_TYPE
En el ejemplo anterior, POSTGRESQL_NUMERIC_DATA_TYPE es integer
, smallint
o bigint
.
Ejemplo:
DEFAULT_NUMERIC integer
REPLACE_COLS
Puedes usar la directiva REPLACE_COLS
para cambiar el nombre de las columnas en tu esquema convertido. Esta directiva espera una lista de asignaciones separadas por comas.
Usa el siguiente 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)...
Aquí:
- SOURCE_TABLE_NAME es el nombre de la tabla que contiene la columna cuyo nombre deseas cambiar.
- SOURCE_COLUMN_NAME es el nombre de la columna de la fuente cuyo nombre deseas cambiar.
- DESTINATION_COLUMN_NAME es el nombre nuevo que le asignas a la columna que deseas usar en el esquema convertido.
Ejemplo:
REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname)
REPLACE_TABLES
Puedes usar la directiva REPLACE_TABLES
para cambiar el nombre de las tablas o moverlas a un esquema nuevo. Esta directiva espera una lista de asignaciones separadas por espacios. Para obtener más información sobre la sintaxis de cada caso de uso, expande las siguientes secciones.
Cambia el nombre de las tablas
Para cambiar el nombre de las tablas en tu esquema convertido, usa el siguiente formato:
REPLACE_TABLES SOURCE_TABLE_NAME1:DESTINATION_TABLE_NAME1 SOURCE_TABLE_NAME2:DESTINATION_TABLE_NAME2
Aquí:
- SOURCE_TABLE_NAME es el nombre de la tabla de origen al que le quieres cambiar el nombre en el esquema convertido.
- DESTINATION_TABLE_NAME es el nombre nuevo de la tabla que deseas usar en el esquema convertido.
Ejemplo:
REPLACE_TABLES "events:login_events" "users:platform_users"
Cómo mover tablas entre esquemas
Puedes usar esta directiva para mover tablas entre esquemas. Para ello, agrega el prefijo del esquema al nombre de la tabla nueva. Este mecanismo se puede usar independientemente de cómo uses la directiva SCHEMA para todo el archivo de conversión. Por ejemplo:
REPLACE_TABLES "events:NEW_SCHEMA_NAME.login_events"
Alias para personalizar tipos de datos
Cuando usas directivas de conversión para modificar la forma en que Database Migration Service convierte diferentes tipos de datos (por ejemplo, con las directivas
DATA_TYPE
,
MODIFY_TYPE
o
PG_NUMERIC_TYPE
), puedes usar alias en lugar de tus tipos de datos SQL de origen.
Expande la siguiente sección para ver la lista de alias de tipos de datos que admite Database Migration Service.
Alias de tipos de datos
Alias | Se convirtió al tipo de 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 y 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 |
Ejemplo de archivo de asignación de conversiones
Consulta el siguiente archivo de asignación de conversiones de muestra que usa todas las directivas de conversión de esquemas compatibles:
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
Los resultados de usar este archivo son los siguientes:
EXPORT_SCHEMA 1
es una directiva obligatoria.SCHEMA root
genera los siguientes ajustes en el flujo de conversiones:- Database Migration Service solo realiza la conversión de entidades en el esquema
root
. No se convierten otros esquemas. - Todas las demás directivas de personalización de este archivo solo se aplican a las columnas y los tipos de datos definidos en el esquema
root
.
- Database Migration Service solo realiza la conversión de entidades en el esquema
PG_INTEGER_TYPE 1
hace que Database Migration Service convierta todos los tipos de datos numéricos de Oracle que se encuentran en las tablas del esquemaroot
en tipos específicos de PostgreSQL en lugar de tipos numéricos portátiles de ANSI.DEFAULT_NUMERIC
hace que Database Migration Service convierta los valoresNUMBER
que no tienen un punto de precisión especificado en el tipoINTEGER
de PostgreSQL. Esto solo se aplica a los valores deNUMBER
que se encuentran en las tablas del esquemaroot
.DATA_TYPE NUMBER(4\,0):integer
hace que Database Migration Service convierta valoresNUMBER(4,0)
específicos enINTEGER
de PostgreSQL.- La directiva
MODIFY_TYPE
hace que Database Migration Service convierta los datos de la columnadates_and_times
en la tabla de origenevents
específicamente al tipoDATETIME
de PostgreSQL, independientemente del formato real de la columna de origen. REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname)
hace que Database Migration Service cambie el nombre de las siguientes columnas en el esquema convertido:- El nombre de la columna
dates_and_times
en la tablaevents
de origen cambia aevent_dates
en la misma tabla del esquema convertido. - El nombre de la columna
pseudonym
en la tablausers
de origen cambia anickname
en la misma tabla del esquema convertido.
events
yusers
del esquemaroot
.- El nombre de la columna
REPLACE_TABLES events:login_events users:platform_users
cambia el nombre de las siguientes tablas en el esquema convertido:- El nombre de la tabla
events
cambió alogin_events
. - El nombre de la tabla
users
cambió aplatform_users
.
events
yusers
del esquemaroot
.- El nombre de la tabla
Lugares de trabajo de conversión heredados
Los espacios de trabajo de conversión heredados son un tipo de espacio de trabajo de conversión más antiguo y limitado. Los espacios de trabajo de conversión heredados no admiten las funciones de conversión mejoradas de Gemini ni el editor de SQL interactivo. Solo puedes usarlos para convertir tu esquema fuente con la herramienta de migración de Ora2Pg.
No recomendamos usar el tipo heredado de espacios de trabajo de conversiones para tus migraciones. Si tu situación requiere el uso de espacios de trabajo de conversión heredados, consulta Cómo trabajar con espacios de trabajo de conversión heredados.
¿Qué sigue?
- Para obtener más información sobre el uso del lugar de trabajo de conversión interactivo, consulta Crea un lugar de trabajo de conversión interactivo.