Convertir Oracle a Amazon RDS para PostgreSQL o Amazon Aurora (PostgreSQL) - AWS Schema Conversion Tool

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Convertir Oracle a Amazon RDS para PostgreSQL o Amazon Aurora (PostgreSQL)

Al convertir una base de datos de Oracle a RDS para PostgreSQL o Amazon Aurora PostgreSQL, tenga en cuenta lo siguiente.

Al convertir objetos del sistema de Oracle a PostgreSQL, AWS SCT realiza las conversiones como se muestra en la tabla siguiente.

Objeto del sistema de Oracle Descripción Objeto de PostgreSQL convertido
V$VERSION Muestra los números de versión de los componentes de biblioteca principal en la base de datos de Oracle aws_oracle_ext.v$version
V$INSTANCE Una vista que muestra el estado de la instancia actual. aws_oracle_ext.v$instance

Puede utilizarlos AWS SCT para convertir archivos SQL*Plus de Oracle a psql, que es un front-end de PostgreSQL basado en terminales. Para obtener más información, consulte Conversión de SQL de las aplicaciones mediante AWS SCT.

Privilegios para PostgreSQL como base de datos de destino

Para utilizar PostgreSQL como destino, AWS SCT requiere el privilegio CREATE ON DATABASE. Asegúrese de conceder este privilegio a cada base de datos PostgreSQL de destino.

Para usar los sinónimos públicos convertidos, cambie la ruta de búsqueda predeterminada de la base de datos a "$user", public_synonyms, public.

Puede usar el siguiente ejemplo de código para crear un usuario de base de datos y conceder los privilegios.

CREATE ROLE user_name LOGIN PASSWORD 'your_password'; GRANT CREATE ON DATABASE db_name TO user_name; ALTER DATABASE db_name SET SEARCH_PATH = "$user", public_synonyms, public;

En el ejemplo anterior, sustituya user_name por el nombre del usuario. A continuación, sustituya db_name por el nombre de su base de datos de destino. Por último, sustituya your_password por una contraseña segura.

Para utilizar Amazon RDS para PostgreSQL como destino, AWS SCT requiere el privilegio rds_superuser.

En PostgreSQL, solo el propietario de un esquema o un superuser puede anular un esquema. El propietario puede eliminar un esquema y todos los objetos que incluye este esquema, aunque el propietario del esquema no sea propietario de algunos de los objetos.

Si utiliza distintos usuarios para convertir y aplicar diferentes esquemas a la base de datos de destino, es posible que aparezca un mensaje de error cuando AWS SCT no pueda anular un sistema. Para evitar este mensaje de error, utilice el rol de superuser.

Configuración de conversión de Oracle a PostgreSQL

Para editar la configuración de conversión de Oracle a PostgreSQL, seleccione Configuración en AWS SCT y, a continuación, elija Configuración de conversión. En la lista superior, elija Oracle y, a continuación, Oracle – PostgreSQL. AWS SCT muestra todos los ajustes disponibles para la conversión de Oracle a PostgreSQL.

La configuración de conversión de Oracle a PostgreSQL en AWS SCT incluye opciones para lo siguiente:

  • Limitar el número de comentarios con elementos de acción en el código convertido.

    En Añadir comentarios en el código convertido para los elementos de acción de la gravedad seleccionada o superior, seleccione la gravedad de los elementos de acción. AWS SCTañade comentarios en el código convertido para los elementos de acción de la gravedad seleccionada o superior.

    Por ejemplo, para minimizar el número de comentarios en el código convertido, seleccione Solo errores. Para incluir comentarios para todos los elementos de acción del código convertido, seleccione Todos los mensajes.

  • Permitir que AWS SCT convierta las vistas materializadas de Oracle en tablas o vistas materializadas en PostgreSQL. En conversión de vistas materializadas como, elija cómo convertir las vistas materializadas de origen.

  • Trabajar con el código fuente de Oracle cuando incluya las funciones TO_CHAR, TO_DATE y TO_NUMBER y con parámetros que PostgreSQL no admite. De forma predeterminada, AWS SCT simula el uso de estos parámetros en el código convertido.

    Si el código fuente de Oracle incluye solo los parámetros compatibles con PostgreSQL, puede utilizar funciones nativas TO_CHAR, TO_DATE y TO_NUMBER de PostgreSQL. En este caso, el código convertido funciona más rápido. Para incluir solo estos parámetros, seleccione los siguientes valores:

    • La función TO_CHAR() no utiliza cadenas de formato específicas de Oracle

    • La función TO_DATE() no utiliza cadenas de formato específicas de Oracle

    • La función TO_NUMBER() no utiliza cadenas de formato específicas de Oracle

  • Determinar cuándo la base de datos Oracle de origen almacena solo valores enteros en las columnas de clave principal o externa del tipo de datos NUMBER, AWS SCT puede convertir estas columnas al tipo de datos BIGINT. Este enfoque mejora el rendimiento del código convertido. Para adoptar este enfoque, seleccione Convertir las columnas de clave principal o externa NUMBER en columnas BIGINT. Asegúrese de que el origen no incluya valores de punto flotante en estas columnas para evitar la pérdida de datos.

  • Hacer caso omiso a los disparadores y restricciones deshabilitados en el código fuente. Para ello, elija Hacer caso omiso de los disparadores y restricciones deshabilitados.

  • Utilizar AWS SCT para convertir variables de cadena denominadas SQL dinámico. El código de la base de datos puede cambiar los valores de estas variables de cadena. Para asegurarse de que AWS SCT siempre convierte el último valor de esta variable de cadena, seleccione Convertir el código SQL dinámico que se crea en las rutinas llamadas.

  • Para solucionar ese problema, la versión 10 y anteriores de PostgreSQL no admiten procedimientos. Si usted o sus usuarios no están familiarizados con el uso de procedimientos en PostgreSQL, AWS SCT puede convertir los procedimientos de Oracle en funciones de PostgreSQL. Para ello, seleccione Convertir procedimientos en funciones.

  • Ver información adicional sobre los elementos de acción ocurridos. Para ello, puede añadir funciones específicas al paquete de extensión. Para ello, seleccione Agregar un bloqueo de excepciones para los problemas de migración con los siguientes niveles de gravedad. A continuación, elija los niveles de gravedad para aumentar las excepciones definidas por el usuario.

  • Trabajar con una base de datos de Oracle de origen que pueda incluir restricciones con los nombres generados automáticamente. Si el código fuente utiliza estos nombres, seleccione Convertir los nombres de restricciones generados por el sistema utilizando los nombres originales del origen. Si el código fuente utiliza estas restricciones pero no sus nombres, desactive esta opción para aumentar la velocidad de conversión.

  • Determinar si la base de datos y las aplicaciones se ejecutan en zonas horarias diferentes. De forma predeterminada, AWS SCT simula las zonas horarias del código convertido. Sin embargo, no necesita esta simulación cuando la base de datos y las aplicaciones utilizan la misma zona horaria. En este caso, seleccione La zona horaria del cliente coincide con la zona horaria del servidor.

  • Determinar si la base de datos de origen y destino se ejecutan en zonas horarias diferentes. Si es así, la función que simula la función SYSDATE integrada de Oracle devuelve valores diferentes a los de la función de origen. Para asegurarse de que las funciones de origen y destino devuelven los mismos valores, elija Establecer zona horaria predeterminada para la simulación de SYSDATE.

  • Usar las funciones de la extensión orafce en el código convertido. Para ello, en Usar implementación orafce, seleccione las funciones que desee utilizar. Para obtener más información sobre orafce, consulte orafce en GitHub.

Conversión de secuencias de Oracle

AWS SCT convierte secuencias de Oracle a PostgreSQL. Si utiliza secuencias para mantener las restricciones de integridad, asegúrese de que los nuevos valores de una secuencia migrada no se superpongan a los valores existentes.

Para rellenar las secuencias convertidas con el último valor de la base de datos de origen
  1. Abra su proyecto de AWS SCT con Oracle como origen.

  2. Elija Configuración y, a continuación, elija Configuración de conexiones.

  3. En la lista superior, elija Oracle y, a continuación, Oracle – PostgreSQL. AWS SCT muestra todos los ajustes disponibles para la conversión de Oracle a PostgreSQL.

  4. Seleccione Rellenar las secuencias convertidas con el último valor generado en el lado del origen.

  5. Seleccione Aceptar para guardar la configuración y cerrar el cuadro de diálogo Configuración de conversión.

Convertir pseudocolumnas ROWID de Oracle

En una base de datos de Oracle, la pseudocolumna ROWID contiene la dirección de la fila de la tabla. La pseudocolumna ROWID es exclusiva de Oracle. Por ello, AWS SCT convierte la pseudocolumna ROWID en una columna de datos en PostgreSQL. Al utilizar esta conversión, puede conservar la información de la pseudocolumna ROWID.

Al convertir la pseudocolumna ROWID, AWS SCT crea una columna de datos con el tipo de datos bigint. Si no hay una clave primaria, AWS SCT establece la columna ROWID como la clave principal. Si hay una clave principal, AWS SCT establece la columna ROWID con una restricción única.

Si el código de la base de datos de origen incluye operaciones con pseudocolumnas ROWID, que no puede ejecutar con un tipo de datos numérico, AWS SCT puede crear una columna de datos con ese tipo de datos character varying.

Para crear una columna de datos para la pseudocolumna ROWID de Oracle en un proyecto
  1. Abra su proyecto de AWS SCT con Oracle como origen.

  2. Elija Configuración y, a continuación, elija Configuración de conversión.

  3. En la lista superior, elija Oracle y, a continuación, Oracle – PostgreSQL. AWS SCT muestra todos los ajustes disponibles para la conversión de Oracle a PostgreSQL.

  4. En Generar ID de fila, realice una de las siguientes acciones:

    • Seleccione Generar como identidad para crear una columna de datos numéricos.

    • Seleccione Generar como tipo de dominio de caracteres para crear una columna de datos de caracteres.

  5. Seleccione Aceptar para guardar la configuración y cerrar el cuadro de diálogo Configuración de conversión.

Conversión de SQL dinámico de Oracle

Oracle ofrece dos formas de implementar el SQL dinámico: mediante una instrucción EXECUTE IMMEDIATE o llamando a los procedimientos del paquete DBMS_SQL. Si la base de datos de Oracle de origen incluye objetos con SQL dinámico, utilice AWS SCT para convertir instrucciones SQL dinámicas de Oracle a PostgreSQL.

Para convertir instrucciones de SQL dinámico a PostgreSQL
  1. Abra su proyecto de AWS SCT con Oracle como origen.

  2. Elija un objeto de base de datos que utilice SQL dinámico en la vista en árbol de origen de Oracle.

  3. Abra el menú contextual (clic secundario) para el objeto, seleccione Convertir esquema y aceptar reemplazar los objetos si existen. En la siguiente captura de pantalla se muestra el procedimiento convertido bajo el procedimiento de Oracle con SQL dinámico..

    Conversión de SQL dinámico

Convertir particiones de Oracle

AWS SCT actualmente admite los siguientes métodos de particionamiento:

  • Rango

  • Enumeración

  • Rango de varias columnas

  • Hash

  • Compuesto (list-list, range-list, list-range, list-hash, range-hash, hash-hash)