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.
Migración de Oracle a Amazon RDS para Postgre o Amazon SQL Aurora Postgre con SQL AWS Schema Conversion Tool
Al convertir una base de datos de Oracle a RDS Postgre SQL o Amazon Aurora PostgreSQL, tenga en cuenta lo siguiente.
Temas
Al convertir objetos del sistema Oracle a PostgreSQL, AWS SCT realiza las conversiones que se muestran en la siguiente tabla.
Objeto del sistema de Oracle | Descripción | Objeto de Postgre convertido SQL |
---|---|---|
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 basado en un terminal para Postgre. SQL Para obtener más información, consulte Conversión de la aplicación SQL mediante AWS SCT.
Privilegios para Postgre como base de datos de destino SQL
Para usar Postgre SQL como destino, AWS SCT se requiere el privilegio. CREATE ON DATABASE
Asegúrese de conceder este privilegio a cada base de datos SQL Postgre 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 DATABASEdb_name
TOuser_name
; ALTER DATABASEdb_name
SET SEARCH_PATH = "$user", public_synonyms, public;
En el ejemplo anterior, sustituya user_name
por el nombre de su usuario. A continuación, sustituya db_name
con el nombre de la base de datos de destino. Por último, sustituya your_password
con una contraseña segura.
Para usar Amazon RDS for Postgre SQL como destino, se AWS SCT requiere el rds_superuser
privilegio.
En PostgreSQL, solo el propietario del esquema o a superuser
puede eliminar 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.
Cuando utilizas diferentes usuarios para convertir y aplicar diferentes esquemas a tu base de datos de destino, puedes recibir un mensaje de error cuando no AWS SCT puedes eliminar un esquema. Para evitar este mensaje de error, utilice el rol de superuser
.
Configuración de conversión de Oracle a Postgre SQL
Para editar la configuración de SQL conversión de Oracle a Postgre, seleccione Configuración en y, a continuación AWS SCT, elija Configuración de conversión. En la lista superior, elija Oracle y, a continuación, Oracle — Postgre. SQL AWS SCT muestra todos los ajustes disponibles para la conversión de Oracle a SQL Postgre.
La configuración de SQL conversión de Oracle a Postgre 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 SCT añ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.
-
Para permitir AWS SCT convertir las vistas materializadas de Oracle en tablas o vistas materializadas en Postgre. SQL En conversión de vistas materializadas como, elija cómo convertir las vistas materializadas de origen.
-
Para trabajar con el código fuente de Oracle cuando incluye las
TO_NUMBER
funcionesTO_CHAR
TO_DATE
, y con parámetros que SQL Postgre 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 SQL compatibles con Postgre, puede utilizar funciones y C nativas de SQL
TO_CHAR
Postgre.TO_DATE
TO_NUMBER
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 datosBIGINT
. Este enfoque mejora el rendimiento del código convertido. Para adoptar este enfoque, seleccione Convertir columnas de clave NUMBER principal o externa en columnas BIGINT únicas. 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.
-
Para usar AWS SCT para convertir variables de cadena que se denominan dinámicasSQL. 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 valor más reciente de esta variable de cadena, seleccione Convertir el SQL código dinámico que se crea en las llamadas rutinas.
-
Para solucionar este problema, la SQL versión 10 y anteriores de Postgre no admiten procedimientos. Si usted o sus usuarios no están familiarizados con el uso de los procedimientos en PostgreSQL, AWS SCT pueden convertir los procedimientos de Oracle en funciones de Postgre. SQL 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 emula las zonas horarias en el 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 asegurarte de que las funciones de origen y destino devuelven los mismos valores, selecciona Establecer zona horaria predeterminada para la SYSDATE emulación. -
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 oracle, consulte oracce on.
GitHub
Conversión de secuencias de Oracle
AWS SCT convierte secuencias de Oracle a Postgre. SQL 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
-
Abra su AWS SCT proyecto con Oracle como fuente.
-
Elija Configuración y, a continuación, elija Configuración de conversión.
-
En la lista superior, elija Oracle y, a continuación, Oracle — Postgre SQL. AWS SCT muestra todos los ajustes disponibles para la conversión de Oracle a SQL Postgre.
-
Seleccione Rellenar las secuencias convertidas con el último valor generado en el lado del origen.
-
Seleccione Aceptar para guardar la configuración y cerrar el cuadro de diálogo Configuración de conversión.
Conversión de Oracle ROWID
En una base de datos Oracle, la ROWID pseudocolumna contiene la dirección de la fila de la tabla. La ROWID pseudocolumna es exclusiva de Oracle, por lo que AWS SCT convierte la ROWID pseudocolumna en una columna de datos en Postgre. SQL Al usar esta conversión, puede conservar la información. ROWID
Al convertir la ROWID pseudocolumna, AWS SCT puede crear una columna de datos con el tipo de bigint
datos. Si no existe una clave principal, AWS SCT establece la ROWID columna como clave principal. Si existe una clave principal, AWS SCT establece la ROWID columna con una restricción única.
Si el código de la base de datos fuente incluye operaciones que no puede ejecutar con ROWID un tipo de datos numérico, AWS SCT puede crear una columna de datos con ese tipo de character varying
datos.
Para crear una columna de datos para Oracle ROWID para un proyecto
-
Abra su AWS SCT proyecto con Oracle como fuente.
-
Elija Configuración y, a continuación, elija Configuración de conversión.
-
En la lista superior, elija Oracle y, a continuación, Oracle — Postgre SQL. AWS SCT muestra todos los ajustes disponibles para la conversión de Oracle a SQL Postgre.
-
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.
-
-
Seleccione Aceptar para guardar la configuración y cerrar el cuadro de diálogo Configuración de conversión.
Conversión de Oracle Dynamic SQL
Oracle ofrece dos formas de implementar la dinámicaSQL: utilizar un EXECUTE IMMEDIATE estado de cuenta o llamar a los procedimientos SQL del paquete DBMS _. Si la base de datos Oracle de origen incluye objetos con dinámicaSQL, utilícela AWS SCT para convertir SQL las declaraciones dinámicas de Oracle a PostgreSQL.
Para convertir Oracle Dynamic SQL a Postgre SQL
Abra su AWS SCT proyecto con Oracle como fuente.
Elija un objeto de base de datos que utilice la dinámica SQL en la vista en árbol de fuentes de Oracle.
Abra el menú contextual (clic secundario) para el objeto, seleccione Convertir esquema y aceptar reemplazar los objetos si existen. La siguiente captura de pantalla muestra el procedimiento convertido debajo del procedimiento de Oracle con dinámicaSQL.
Conversión de particiones de Oracle
AWS SCT actualmente admite los siguientes métodos de particionamiento:
-
Range
-
Enumeración
-
Rango de varias columnas
-
Hash
-
Compuesto (list-list, range-list, list-range, list-hash, range-hash, hash-hash)