Lugares de trabajo de conversión

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 de SQL que es compatible con tu base de datos de destino. En esta página, se proporciona una descripción general de los espacios de trabajo de conversión de Database Migration Service:

Hay ciertos tipos de datos que no se admiten para las migraciones de Oracle. Para obtener más información, consulta Limitaciones conocidas de los tipos de datos.

Resúmenes del progreso de las conversiones

Información general sólida de los espacios de trabajo de conversión, en la que puedes obtener estadísticas sobre la cantidad total de problemas de conversión pendientes o resueltos, las mejoras asistidas por Gemini y el estado general de tu proceso de conversión

Pantalla del lugar de trabajo de conversión con la pestaña Resumen de la conversión, en la que puedes ver la cantidad de objetos convertidos, los problemas de conversión y las mejoras de la conversión asistida por Gemini.
Figura 1. Pantalla de descripción general del espacio de trabajo de conversión, en la que puedes supervisar el progreso de tu conversión, ver problemas y analizar el código de PostgreSQL resultante. (haz clic para agrandar)
Pantalla del lugar de trabajo de conversión con la pestaña Resumen de la conversión, en la que puedes ver la cantidad de objetos convertidos, los problemas de conversión y las mejoras de la conversión asistida por Gemini.

Puedes usar esta vista para filtrar objetos en tu esquema por tipo, gravedad del problema, acciones necesarias o estado de conversión.

Pantalla del espacio de trabajo de conversión que muestra cómo puedes filtrar objetos convertidos por tipo o estado.
Figura 2. Filtrado de objetos convertidos por estado y tipo de objeto. (haz clic para agrandar)
Pantalla del espacio de trabajo de conversión que muestra cómo puedes filtrar objetos convertidos por tipo o estado.

Para obtener más información sobre cómo usar los resúmenes de conversiones para inspeccionar los resultados de las conversiones, consulta Trabaja con lugares de trabajo de conversión.

Conversión determinística de código y esquemas

Cuando crea un espacio de trabajo de conversión, Database Migration Service realiza de inmediato la conversión inicial del esquema con un conjunto de reglas de conversión determinísticas en las que los tipos de datos y los objetos específicos de Oracle se asignan a tipos de datos y objetos específicos de PostgreSQL. Este proceso admite un subconjunto muy específico de objetos de base de datos de Oracle disponibles.

La conversión de código determinístico admite los siguientes objetos de base de datos de Oracle:

Elementos del 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 relacionados con las conversiones 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 código 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 su edición directa 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 pueden editar:

  • Tipos de objetos definidos por el usuario
  • Tablas
  • Esquemas

Acelera la conversión de código y esquemas con Gemini

Database Migration Service integra Gemini para Google Cloud en los espacios de trabajo de conversión para ayudarte a acelerar y mejorar el proceso de conversión en las siguientes áreas:

  • Mejora los resultados de la conversión determinística con la conversión automática potenciada por Gemini para aprovechar el poder de la IA y reducir significativamente la cantidad de ajustes manuales necesarios en tu código de PostgreSQL.

  • Proporciona funciones de explicabilidad del código con el asistente de conversión: 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 bien optimizar el código convertido.

  • Acelera la aplicación de correcciones para los 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 los problemas de conversión y sugerir cambios en otros objetos defectuosos del espacio de trabajo.

Para obtener más información sobre la conversión potenciada por Gemini, consulta las siguientes páginas:

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 conversión 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 admitidas

Database Migration Service admite las siguientes directivas de conversión para los archivos de asignación de conversión:

EXPORT_SCHEMA

EXPORT_SCHEMA es una directiva obligatoria para todos los archivos de asignación 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 tu archivo se aplican solo a los objetos de este esquema en particular.

Usa el siguiente formato:

SCHEMA SCHEMA_NAME

Aquí, 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 directiva REPLACE_TABLES, deberías 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. La definición completa 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...

Aquí, ORACLE_DATA_TYPE y PGSQL_DATA_TYPE son tipos de datos admitidos por las versiones respectivas de Oracle y PostgreSQL que usas en tu migración. Para obtener información sobre las versiones compatibles, consulta Descripción general del escenario.

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 vínculos:

MODIFY_TYPE

La directiva MODIFY_TYPE te permite controlar a qué tipo de datos convierte Database Migration Service una columna específica de tu tabla de origen. Esta directiva espera una lista de asignaciones separadas por comas. Toda la definición debe proporcionarse 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 fuerza la conversión de todos tus tipos de NUMBER con precisión y escala (NUMBER(p,s)) en tipos de PostgreSQL smallint, integer o bigint 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 NUMBER con precisión y escala (NUMBER(p,s)) en tipos real o float de PostgreSQL (según su cantidad de dígitos de precisión).

Si configuras esta directiva en 0, los valores de NUMBER(p,s) conservarán su valor original exacto y usarán 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 los NUMBERs sin precisión cambia según si también usas la directiva PG_INTEGER_TYPE:

  • Si usas la directiva PG_INTEGER, los NUMBERs sin precisión se convierten en valores DECIMAL.
  • Si no usas la directiva PG_INTEGER, los NUMBERs sin precisión se convierten en valores BIGINT.

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

Aquí, POSTGRESQL_NUMERIC_DATA_TYPE es uno de los siguientes: integer, smallint, 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 tu fuente cuyo nombre deseas cambiar.
  • DESTINATION_COLUMN_NAME es el nuevo nombre que le asignaste 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 a la que deseas cambiarle el nombre en el esquema convertido.
  • DESTINATION_TABLE_NAME es el nuevo nombre 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 agregando 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 conversiones. 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 los tipos de datos SQL de origen.

Expande la siguiente sección para ver la lista de alias de tipos de datos admitidos por Database Migration Service.

Alias de tipos de datos

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

Archivo de asignación de conversiones de muestra

Consulta el siguiente archivo de asignación de conversión de muestra que usa todas las directivas de conversión de esquemas admitidas:

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 las 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.
  • 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 esquema root 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 valores de NUMBER que no tienen un punto de precisión especificado en el tipo INTEGER de PostgreSQL. Esto solo se aplica a los valores de NUMBER que se encuentran en las tablas del esquema root.
  • DATA_TYPE NUMBER(4\,0):integer hace que Database Migration Service convierta valores NUMBER(4,0) específicos en INTEGER de PostgreSQL.
  • La directiva MODIFY_TYPE hace que Database Migration Service convierta los datos de la columna dates_and_times de la tabla de origen events específicamente al tipo DATETIME 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:
    • La columna dates_and_times de la tabla events de origen se cambia de nombre a event_dates en la misma tabla del esquema convertido.
    • La columna pseudonym de la tabla users de origen se cambia de nombre a nickname en la misma tabla del esquema convertido.
    La operación de cambio de nombre solo se aplica a las tablas events y users en el esquema root.
  • REPLACE_TABLES events:login_events users:platform_users cambia el nombre de las siguientes tablas en el esquema convertido:
    • Se cambió el nombre de la tabla events a login_events.
    • Se cambió el nombre de la tabla users a platform_users.
    La operación de cambio de nombre solo se aplica a las tablas events y users en el esquema root.

Espacios de trabajo de conversión heredados

Los espacios de trabajo de conversión heredados son un tipo de espacios 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 por Gemini ni el editor de SQL interactivo. Solo puedes usarlos para convertir tu esquema de origen con la herramienta de migración 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 información sobre el uso de los espacios de trabajo de conversión, consulta los siguientes recursos: