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:
Las vistas generales de las conversiones ofrecen una sección transversal del progreso de las conversiones de su esquema.
Objetos admitidos por el código determinista y la conversión de esquemas enumera los objetos de Oracle admitidos para la conversión de esquemas determinista.
En Editor de SQL interactivo se describe qué objetos puedes modificar directamente en el editor del espacio de trabajo de conversión.
En Funciones de conversión basadas en Gemini se explica cómo puedes integrar la asistencia de IA generativa para agilizar el proceso de conversión de esquemas.
En la sección Archivos de asignación de conversiones se ofrece un resumen de las directivas de personalización que puede usar para anular las reglas de conversión de esquemas deterministas.
En Espacios de trabajo de conversión antiguos se describen los espacios de trabajo antiguos que no admiten el editor de SQL interactivo.
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.


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


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:
Convertir código y esquemas 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 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 directivaREPLACE_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:
- 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
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 NUMBER
s sin precisión
cambia si también usas la
directiva
PG_INTEGER_TYPE
:
- Si usas la directiva
PG_INTEGER
, losNUMBER
s sin precisión se convierten en valoresDECIMAL
. - Si no usas la directiva
PG_INTEGER
, losNUMBER
s sin precisión se convierten en valoresBIGINT
.
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
.
- El servicio de migración de bases de datos solo convierte las entidades del esquema
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 esquemaroot
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 deNUMBER
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 aINTEGER
de PostgreSQL.- La directiva
MODIFY_TYPE
hace que Database Migration Service convierta los datos de la columnadates_and_times
de la tabla de origenevents
específicamente al tipoDATETIME
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 tablaevents
de origen se cambia aevent_dates
en la misma tabla del esquema convertido. - La columna
pseudonym
de la tablausers
de origen se cambia anickname
en la misma tabla del esquema convertido.
events
yusers
del esquemaroot
.- La columna
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
alogin_events
. - Se ha cambiado el nombre de la tabla
users
aplatform_users
.
events
yusers
del esquemaroot
.- Se ha cambiado el nombre de la tabla
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: