Espacios de trabajo de conversiones

Los espacios de trabajo de conversión te ayudan a convertir el esquema y los objetos de tu base de datos de origen a la sintaxis SQL que es compatible con tu base de datos de destino. En esta página se ofrece una descripción general de los espacios de trabajo de conversión de Database Migration Service:

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

Resumen del progreso de las conversiones

Información general sobre los espacios de trabajo de conversión, donde puedes obtener estadísticas sobre el número total de problemas de conversión pendientes o resueltos, las mejoras asistidas por Gemini y el estado general del proceso de conversión.

Pantalla del espacio de trabajo de conversión con la pestaña "Resumen de la conversión", donde puedes ver el número de objetos convertidos, los problemas de conversión y las mejoras de la conversión asistida por Gemini.
Figura 1. Pantalla de resumen del espacio de trabajo de conversión, donde puedes monitorizar el progreso de la conversión, ver los problemas e inspeccionar el código PostgreSQL resultante. (haz clic para ampliar)
Pantalla del espacio de trabajo de conversión con la pestaña "Resumen de la conversión", donde puedes ver el número de objetos convertidos, los problemas de conversión y las mejoras de la conversión asistida por Gemini.

Puede usar esta vista para filtrar objetos de su 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.
Imagen 2. Filtrado de objetos convertidos por estado y tipo de objeto. (haz clic para ampliar)
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 el artículo Trabajar con espacios de trabajo de conversiones.

Conversión determinista de código y esquemas

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

La conversión de código determinista admite los siguientes objetos de base de datos de Oracle:

Elementos de esquema de Oracle admitidos

  • Restricciones
  • Índices (solo los 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 tabla)
  • Paquetes
  • Functions
  • Procedimientos almacenados

Editor interactivo de SQL

El editor de SQL interactivo te permite modificar la sintaxis de PostgreSQL convertida directamente en Database Migration Service. Puede usarlo para solucionar problemas de conversión o ajustar el esquema para que se adapte mejor a sus 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 de determinados tipos de objetos. El editor admite los siguientes objetos de Oracle:

  • Triggers de tabla (requiere permiso)
  • Vistas materializadas
  • Paquetes
  • Funciones y procedimientos almacenados
  • Sinónimos
  • Vistas
  • Restricciones
  • Índices
  • Secuencias

Además, algunos objetos se convierten, pero no se pueden editar directamente en Database Migration Service. Para modificar estos objetos, debe 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 objeto definidos por el usuario
  • Tablas
  • Esquemas

Acelerar 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 agilizar y mejorar el proceso de conversión en las siguientes áreas:

  • Mejora los resultados de conversión deterministas con la conversión automática basada en Gemini para aprovechar el potencial de la IA y reducir significativamente el número de ajustes manuales que necesitas hacer en tu código de PostgreSQL.

  • Ofrece funciones de explicación del código con el asistente de conversión: un conjunto de peticiones específicas que pueden ayudarte a entender mejor la lógica de conversión, proponer correcciones para problemas de conversión u 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 por 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 basada en 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 conversiones es un archivo de texto que contiene instrucciones precisas (denominadas directivas de conversión) sobre cómo deben convertirse los 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 asegurarse de que los 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 provoca los siguientes ajustes en el flujo de conversión:

  • Database Migration Service convierte solo este esquema. Si necesitas convertir otros esquemas en un mismo espacio de trabajo de conversión, debes subir varios archivos con esquemas diferentes.
  • Todas las demás directivas de personalización proporcionadas en el archivo solo se aplican a los objetos de este esquema concreto.

Utiliza el siguiente formato:

SCHEMA SCHEMA_NAME

Donde SCHEMA_NAME es el nombre de tu esquema en la base de datos de origen.

  • Si incluye esta directiva en el archivo de asignación de conversiones, todas las personalizaciones se aplicarán únicamente a los objetos contenidos en este esquema específico. Si quieres personalizar objetos de otros esquemas, debes crear varios archivos de asignación de conversión y subirlos al espacio de trabajo de conversión.
  • Si omite esta directiva, debe 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, tendrías que usar "SCHEMA_NAME.SOURCE_TABLE_NAME".

DATA_TYPE

Puedes usar esta directiva para asignar explícitamente cualquier tipo de datos compatible entre la sintaxis de Oracle y la de PostgreSQL. Esta directiva espera una lista de asignaciones separadas por comas. Toda la definición debe proporcionarse en una sola línea, pero has incluido varias directivas DATA_TYPE en el archivo de configuración. Utiliza el siguiente formato:

DATA_TYPE ORACLE_DATA_TYPE1:PGSQL_DATA_TYPE1
DATA_TYPE ORACLE_DATA_TYPE2:PGSQL_DATA_TYPE2...

ORACLE_DATA_TYPE y PGSQL_DATA_TYPE son tipos de datos admitidos por las versiones de Oracle y PostgreSQL que utilices en tu migración. Para obtener información sobre las versiones compatibles, consulta la sección Descripción general del caso práctico.

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:

MODIFY_TYPE

La directiva MODIFY_TYPE le permite controlar a qué tipo de datos convierte Database Migration Service una columna específica de su tabla de origen. Esta directiva espera una lista de asignaciones separadas por comas. La definición completa debe proporcionarse en una sola línea, pero has incluido varias directivas MODIFY_TYPE en el archivo de configuración. Utiliza 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...

Donde:

  • SOURCE_TABLE_NAME es el nombre de la tabla que contiene la columna cuyo tipo de datos quiere cambiar.
  • COLUMN_NAME es el nombre de la columna para la que quiere personalizar la asignación de conversiones.
  • EXPECTED_END_RESULT_DATA_TYPE es el tipo de datos de PostgreSQL que quieres 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. Asigna el valor 1 y fuerza la conversión de todos los tipos NUMBER con precisión y escala (NUMBER(p,s)) a los tipos smallint, integer o bigint de PostgreSQL en función del número de dígitos de precisión.

Incluye el siguiente ajuste en el archivo de asignación de conversiones:

PG_INTEGER_TYPE 1

PG_NUMERIC_TYPE

Define esta directiva como 1 si quieres convertir todos tus NUMBER con precisión y escala (NUMBER(p,s)) en tipos real o float de PostgreSQL (en función de su número de dígitos de precisión).

Si asignas el valor 0 a esta directiva, 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 ajuste en el archivo de asignación de conversiones:

PG_NUMERIC_TYPE 1

DEFAULT_NUMERIC

La conversión predeterminada de los NUMBERs sin precisión cambia 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.

Puede modificar este comportamiento y usar la directiva DEFAULT_NUMERIC para especificar qué tipo de datos se debe usar en los tipos NUMBER sin puntos de precisión especificados. Utiliza el siguiente formato:

DEFAULT_NUMERIC POSTGRESQL_NUMERIC_DATA_TYPE

POSTGRESQL_NUMERIC_DATA_TYPE es uno de los siguientes valores: integer, smallint o bigint.

Ejemplo:

DEFAULT_NUMERIC integer

REPLACE_COLS

Puede usar la directiva REPLACE_COLS para cambiar el nombre de las columnas en el esquema convertido. Esta directiva espera una lista de asignaciones separadas por comas. Utiliza 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)...

Donde:

  • SOURCE_TABLE_NAME es el nombre de la tabla que contiene la columna cuyo nombre quieres cambiar.
  • SOURCE_COLUMN_NAME es el nombre de la columna de la fuente cuyo nombre quiere cambiar.
  • DESTINATION_COLUMN_NAME es el nuevo nombre que quieres asignar a la columna que quieres usar en el esquema convertido.

Ejemplo:

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

REPLACE_TABLES

Puede usar la directiva REPLACE_TABLES para cambiar el nombre de las tablas o moverlas a un nuevo esquema. Esta directiva espera una lista de asignaciones separadas por espacios. Para obtener más información sobre la sintaxis de cada caso práctico, despliega las siguientes secciones.

Cambiar el nombre de las tablas

Para cambiar el nombre de las tablas del esquema convertido, usa el siguiente formato:

REPLACE_TABLES SOURCE_TABLE_NAME1:DESTINATION_TABLE_NAME1 SOURCE_TABLE_NAME2:DESTINATION_TABLE_NAME2

Donde:

  • SOURCE_TABLE_NAME es el nombre de la tabla de origen que quieres cambiar en el esquema convertido.
  • DESTINATION_TABLE_NAME es el nuevo nombre de la tabla que quieres usar en el esquema convertido.

Ejemplo:

REPLACE_TABLES "events:login_events" "users:platform_users"

Mover tablas entre esquemas

Puedes usar esta directiva para mover tablas entre esquemas añadiendo el prefijo del esquema al nuevo nombre de la tabla. Este mecanismo se puede usar independientemente de cómo utilice la directiva SCHEMA en 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 los tipos de datos SQL de origen.

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

Alias de tipo 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, 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 ejemplo

Consulta el siguiente archivo de asignación de conversión de ejemplo 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 da lugar a los siguientes ajustes en el flujo de conversión:
    • El servicio de migración de bases de datos solo convierte las entidades del esquema root. No se convierte ningún otro esquema.
    • Todas las demás directivas de personalización de este archivo se aplican únicamente 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 encuentren en las tablas del esquema root en tipos específicos de PostgreSQL en lugar de en 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 a 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 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 a event_dates en la misma tabla del esquema convertido.
    • La columna pseudonym de la tabla users de origen se cambia 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 del esquema root.
  • REPLACE_TABLES events:login_events users:platform_users cambia el nombre de las siguientes tablas del esquema convertido:
    • Se ha cambiado el nombre de la tabla events a login_events.
    • Se ha cambiado 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 del esquema root.

Espacios de trabajo de conversión antiguos

Los espacios de trabajo de conversión antiguos son un tipo de espacio de trabajo de conversión más antiguo y limitado. Los espacios de trabajo de conversión antiguos no admiten las funciones de conversión mejoradas con Gemini ni el editor de SQL interactivo. Solo puedes usarlas para convertir tu esquema de origen con la herramienta de migración Ora2Pg.

No te recomendamos que utilices el tipo de espacio de trabajo de conversión antiguo para tus migraciones. Si tu situación requiere el uso de espacios de trabajo de conversión antiguos, consulta el artículo Trabajar con espacios de trabajo de conversión antiguos.

Siguientes pasos

Para obtener información sobre cómo usar los espacios de trabajo de conversiones, consulta los siguientes artículos: