Espacios de trabajo de conversión

Los espacios de trabajo de conversión lo ayudan a convertir el esquema y los objetos de su base de datos de origen a la sintaxis SQL que sea compatible con su base de datos de destino. Esta página proporciona una descripción general de las áreas de trabajo de conversión del Servicio de migración de bases de datos:

Hay ciertos tipos de datos que no son compatibles con las migraciones de Oracle. Para obtener más información, consulte Limitaciones conocidas para los tipos de datos .

Conversión de esquema y código determinista

Cuando crea un espacio de trabajo de conversión , el Servicio de migración de bases de datos realiza inmediatamente la conversión del esquema inicial utilizando un conjunto de reglas de conversión deterministas donde tipos de datos y 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 Oracle disponibles.

La conversión de código determinista proporciona soporte para los siguientes objetos de base de datos de Oracle:

Elementos de esquema de Oracle soportados

  • Restricciones
  • Índices (solo índices que se crean en el mismo esquema que su tabla)
  • Vistas materializadas
  • Tipos de objetos (soporte parcial)
  • Secuencias
  • Sinónimos
  • Mesas
  • Vistas

Elementos de código de Oracle soportados

  • Activadores (solo nivel de tabla)
  • Paquetes
  • Funciones
  • Procedimientos almacenados

Editor SQL interactivo

El editor SQL interactivo le permite modificar la sintaxis convertida de PostgreSQL directamente en el Servicio de migración de bases de datos. Puede usarlo para solucionar problemas de conversión o ajustar el esquema para que se ajuste mejor a sus necesidades. Algunos objetos no se pueden modificar en el editor integrado.

Objetos editables de Oracle

Después de convertir el código y el esquema de la base de datos fuente, puede utilizar el editor interactivo para modificar el SQL generado para ciertos tipos de objetos. El editor admite los siguientes objetos de Oracle:

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

Además, algunos objetos se convierten pero no están disponibles para editarlos directamente dentro del Servicio de migración de bases de datos. Para modificar dichos 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 son compatibles con la edición:

  • Tipos de objetos definidos por el usuario
  • Mesas
  • esquemas

Acelere la conversión de código y esquema con Gemini

El servicio de migración de bases de datos integra Gemini para Google Cloud en espacios de trabajo de conversión para ayudarle a acelerar y mejorar el proceso de conversión en las siguientes áreas:

  • Mejore los resultados de conversión deterministas con la conversión automática impulsada por Gemini para utilizar el poder de la IA para reducir significativamente la cantidad de ajustes manuales necesarios en su código PostgreSQL.

  • Proporcione funciones de explicabilidad del código con el asistente de conversión: un conjunto de mensajes dedicados que pueden ayudarlo a comprender mejor la lógica de conversión, proponer soluciones para problemas de conversión u optimizar el código convertido.

  • Acelere la aplicación de correcciones para problemas de conversión con las sugerencias de conversión de código Gemini: un mecanismo donde el modelo Gemini puede aprender a medida que soluciona problemas de conversión y sugiere cambios a otros objetos defectuosos en el espacio de trabajo.

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

Archivos de mapeo de conversión

Puede personalizar la lógica de conversión con un archivo de mapeo de conversión . El archivo de mapeo de conversión es un archivo de texto que contiene instrucciones precisas (denominadas directivas de conversión ) sobre cómo deben convertirse sus objetos de Oracle en objetos de PostgreSQL.

Directivas de conversión admitidas

El Servicio de migración de bases de datos admite las siguientes directivas de conversión para archivos de asignación de conversión:

EXPORT_SCHEMA

EXPORT_SCHEMA es una directiva obligatoria para todos los archivos de mapeo de conversión. El Servicio de migración de bases de datos requiere esta instrucción para garantizar que sus esquemas de origen se conviertan a los esquemas de destino correctos. Asegúrese de que sus archivos de mapeo de conversión incluyan esta línea:

EXPORT_SCHEMA 1

SCHEMA

El Servicio de migración de bases de datos debe poder determinar qué esquema contiene los objetos que deben modificarse con sus directivas de conversión. La directiva SCHEMA da como resultado los siguientes ajustes en el flujo de conversión:

  • El Servicio de migración de bases de datos convierte solo este esquema. Si necesita convertir otros esquemas en un único espacio de trabajo de conversión, deberá cargar varios archivos con esquemas diferentes.
  • Todas las demás directivas de personalización proporcionadas en su archivo se aplican solo a objetos en este esquema en particular.

Utilice el siguiente formato:

SCHEMA SCHEMA_NAME

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

  • Si incluye esta directiva en el archivo de asignación de conversión, todas las personalizaciones se aplican solo a los objetos contenidos en este esquema específico. Si desea personalizar objetos en otros esquemas, debe crear varios archivos de mapeo de conversión y cargarlos en el 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 , necesitaría usar " SCHEMA_NAME . SOURCE_TABLE_NAME " .

DATA_TYPE

Puede utilizar esta directiva para asignar explícitamente cualquier tipo de datos admitido entre la sintaxis de Oracle y PostgreSQL. Esta directiva espera una lista de asignaciones separadas por comas. La definición completa debe proporcionarse en una sola línea, pero incluye varias directivas DATA_TYPE en su archivo de configuración. Utilice el siguiente formato:

DATA_TYPE ORACLE_DATA_TYPE1:PGSQL_DATA_TYPE1
DATA_TYPE ORACLE_DATA_TYPE2:PGSQL_DATA_TYPE2...

Donde ORACLE_DATA_TYPE y PGSQL_DATA_TYPE son tipos de datos admitidos por sus respectivas versiones de Oracle y PostgreSQL que utiliza en su migración. Para obtener información sobre las versiones compatibles, consulte 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, consulte:

MODIFY_TYPE

La directiva MODIFY_TYPE le permite controlar a qué tipo de datos el Servicio de migración de bases de datos convierte una columna específica en 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 incluye varias directivas MODIFY_TYPE en su archivo de configuración. Utilice 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...

Dónde:

  • SOURCE_TABLE_NAME es el nombre de la tabla que contiene la columna donde desea cambiar el tipo de datos.
  • COLUMN_NAME es el nombre de la columna para la que desea personalizar la asignación de conversión.
  • EXPECTED_END_RESULT_DATA_TYPE es el tipo de datos de PostgreSQL que desea que utilice la columna convertida.

Ejemplo :

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

PG_INTEGER_TYPE

De forma predeterminada, el Servicio de migración de bases de datos convierte los tipos NUMBER(p,s) al tipo PostgreSQL DECIMAL(p,s) .

Puede modificar este comportamiento con la directiva PG_INTEGER_TYPE . Establezca su valor en 1 y fuerce que todos sus tipos NUMBER con precisión y escala ( NUMBER(p,s) ) se conviertan en tipos postgreSQL smallint , integer o bigint según el número de dígitos de precisión.

Incluya la siguiente configuración en su archivo de mapeo de conversión:

PG_INTEGER_TYPE 1

PG_NUMERIC_TYPE

Establezca esta directiva en 1 si desea convertir todos sus tipos NUMBER con precisión y escala ( NUMBER(p,s) ) en tipos real o float de PostgreSQL (según su número de dígitos de precisión).

Si establece esta directiva en 0 , sus valores NUMBER(p,s) conservan su valor original exacto y utilizan el tipo de datos interno de PostgreSQL.

Incluya la siguiente configuración en su archivo de mapeo de conversión:

PG_NUMERIC_TYPE 1

DEFAULT_NUMERIC

La conversión predeterminada para NUMBER s sin precisión cambia si también usa la directiva PG_INTEGER_TYPE :

  • Si utiliza la directiva PG_INTEGER , NUMBER s sin precisión se convierten a valores DECIMAL .
  • Si no utiliza la directiva PG_INTEGER , NUMBER s sin precisión se convierten a valores BIGINT .

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

DEFAULT_NUMERIC POSTGRESQL_NUMERIC_DATA_TYPE

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

Ejemplo :

DEFAULT_NUMERIC integer

REPLACE_COLS

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

Dónde:

  • SOURCE_TABLE_NAME es el nombre de la tabla que contiene la columna cuyo nombre desea cambiar.
  • SOURCE_COLUMN_NAME es el nombre de la columna en su fuente cuyo nombre desea cambiar.
  • DESTINATION_COLUMN_NAME es el nuevo nombre que le dará a la columna que desea usar en el esquema convertido.

Ejemplo :

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

REPLACE_TABLES

Puede utilizar 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 de uso, expanda las siguientes secciones.

Cambiar el nombre de las tablas

Para cambiar el nombre de las tablas en su esquema convertido, utilice el siguiente formato:

REPLACE_TABLES SOURCE_TABLE_NAME1:DESTINATION_TABLE_NAME1 SOURCE_TABLE_NAME2:DESTINATION_TABLE_NAME2

Dónde:

  • SOURCE_TABLE_NAME es el nombre de la tabla de origen cuyo nombre desea cambiar en el esquema convertido.
  • DESTINATION_TABLE_NAME es el nuevo nombre de la tabla que desea utilizar en el esquema convertido.

Ejemplo :

REPLACE_TABLES "events:login_events" "users:platform_users"

Mover tablas entre esquemas

Puede utilizar esta directiva para mover tablas entre esquemas agregando el prefijo del esquema al nuevo nombre de la tabla. Este mecanismo se puede utilizar independientemente de cómo utilice 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 usa directivas de conversión para modificar cómo Database Migration Service convierte diferentes tipos de datos (por ejemplo, con las directivas DATA_TYPE , MODIFY_TYPE o PG_NUMERIC_TYPE ), puede usar alias en lugar de los tipos de datos SQL de origen.

Expanda la siguiente sección para ver la lista de alias de tipos de datos admitidos por el Servicio de migración de bases de datos.

Alias ​​de tipos de datos

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

Archivo de mapeo de conversión de muestra

Consulte el siguiente archivo de asignación de conversión de ejemplo que utiliza 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 del uso de este archivo son los siguientes:

  • EXPORT_SCHEMA 1 es una directiva obligatoria.
  • SCHEMA root da como resultado los siguientes ajustes en el flujo de conversión:
    • El Servicio de migración de bases de datos solo realiza la conversión de entidades en el 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 tipos de datos definidos en el esquema root .
  • PG_INTEGER_TYPE 1 hace que el Servicio de migración de bases de datos convierta todos los tipos de datos numéricos de Oracle que se encuentran en las tablas del esquema root a tipos específicos de PostgreSQL en lugar de tipos numéricos portátiles ANSI.
  • DEFAULT_NUMERIC hace que el Servicio de migración de bases de datos convierta NUMBER valores que no tienen un punto de precisión especificado en el tipo INTEGER de PostgreSQL. Esto solo se aplica a NUMBER valores que se encuentran en las tablas del esquema root .
  • DATA_TYPE NUMBER(4\,0):integer hace que el Servicio de migración de bases de datos convierta valores NUMBER(4,0) específicos a PostgreSQL INTEGER .
  • La directiva MODIFY_TYPE hace que el Servicio de migración de bases de datos convierta los datos de la columna dates_and_times en la tabla de origen de events específicamente al tipo DATETIME de PostgreSQL, independientemente del formato de la columna de origen real.
  • REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname) hace que el Servicio de migración de bases de datos cambie el nombre de las siguientes columnas en el esquema convertido:
    • La columna dates_and_times en la tabla events de origen cambia de nombre a event_dates en la misma tabla en el esquema convertido.
    • La columna pseudonym en la tabla users de origen cambia de nombre a nickname en la misma tabla en el esquema convertido.
    La operación de cambio de nombre solo se aplica a las tablas de 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:
    • La tabla events cambia de nombre a login_events .
    • La tabla users cambia de nombre a platform_users .
    La operación de cambio de nombre solo se aplica a las tablas de 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 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 SQL interactivo. Solo puedes usarlos para convertir tu esquema fuente con la herramienta de migración Ora2Pg.

No recomendamos utilizar el tipo heredado de espacios de trabajo de conversión para sus migraciones. Si su escenario requiere el uso de áreas de trabajo de conversión heredadas, consulte Trabajar con áreas de trabajo de conversión heredadas .

¿Qué sigue?

Para obtener información sobre el uso de espacios de trabajo de conversión, consulte: