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 MySQL o Amazon Aurora MySQL con AWS Schema Conversion Tool
Para simular las funciones de la base de datos de Oracle en código MySQL convertido, utilice el paquete de extensión de Oracle a MySQL en AWS SCT. Para obtener más información acerca de los paquetes de extensión , consulte Uso de paquetes de extensión con AWS Schema Conversion Tool.
Temas
Privilegios para MySQL como base de datos de destino
Los privilegios necesarios para MySQL como destino se enumeran a continuación:
CREATE ON *.*
ALTER ON *.*
DROP ON *.*
INDEX ON *.*
REFERENCES ON *.*
SELECT ON *.*
CREATE VIEW ON *.*
SHOW VIEW ON *.*
TRIGGER ON *.*
CREATE ROUTINE ON *.*
ALTER ROUTINE ON *.*
EXECUTE ON *.*
CREATE TEMPORARY TABLES ON *.*
AWS_LAMBDA_ACCESS
INSERTAR, ACTUALIZAR EN AWS_ORACLE _EXT. *
INSERTAR, ACTUALIZAR Y ELIMINAR EN AWS_ORACLE _EXT_DATA. *
Si utiliza como destino una base de datos MySQL 5.7 o inferior, conceda el permiso INVOKE LAMBDA *.* en lugar de _ACCESS. AWS_LAMBDA Para las bases de datos MySQL versión 8.0 y superiores, conceda el AWS_LAMBDA_ACCESS permiso.
Puede usar el siguiente ejemplo de código para crear un usuario de base de datos y conceder los privilegios.
CREATE USER '
user_name
' IDENTIFIED BY 'your_password
'; GRANT CREATE ON *.* TO 'user_name
'; GRANT ALTER ON *.* TO 'user_name
'; GRANT DROP ON *.* TO 'user_name
'; GRANT INDEX ON *.* TO 'user_name
'; GRANT REFERENCES ON *.* TO 'user_name
'; GRANT SELECT ON *.* TO 'user_name
'; GRANT CREATE VIEW ON *.* TO 'user_name
'; GRANT SHOW VIEW ON *.* TO 'user_name
'; GRANT TRIGGER ON *.* TO 'user_name
'; GRANT CREATE ROUTINE ON *.* TO 'user_name
'; GRANT ALTER ROUTINE ON *.* TO 'user_name
'; GRANT EXECUTE ON *.* TO 'user_name
'; GRANT CREATE TEMPORARY TABLES ON *.* TO 'user_name
'; GRANT AWS_LAMBDA_ACCESS TO 'user_name
'; GRANT INSERT, UPDATE ON AWS_ORACLE_EXT.* TO 'user_name
'; GRANT INSERT, UPDATE, DELETE ON AWS_ORACLE_EXT_DATA.* TO 'user_name
';
En el ejemplo anterior, user_name
sustitúyalo por el nombre de tu usuario. A continuación, your_password
sustitúyala por una contraseña segura.
Si utiliza como destino una base de datos MySQL 5.7 o anterior, utilice GRANT INVOKE LAMBDA ON *.* TO '
en lugar de user_name
'GRANT AWS_LAMBDA_ACCESS TO '
.user_name
'
Para usar Amazon RDS para MySQL o Aurora MySQL como destino, establezca el parámetro lower_case_table_names
en 1
. Este valor significa que el servidor MySQL gestiona los identificadores de nombres de objetos como tablas, índices, disparadores y bases de datos sin distinguir entre mayúsculas y minúsculas. Si ha activado el registro binario en la instancia de destino, establezca el parámetro log_bin_trust_function_creators
en 1
. En este caso, no es necesario utilizar las características DETERMINISTIC
, READS SQL DATA
o NO SQL
para crear funciones almacenadas. Para configurar estos parámetros, cree un grupo de parámetros de base de datos nuevo o modifique uno existente.
Configuración de conversión de Oracle a MySQL
Para editar la configuración de conversión de Oracle a MySQL, seleccione Configuración en y AWS SCT, a continuación, elija Configuración de conversión. En la lista superior, elija Oracle y, a continuación, Oracle — MySQL. AWS SCT muestra todos los ajustes disponibles para la conversión de Oracle a MySQL.
La configuración de conversión de Oracle a MySQL 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, selecciona 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 solucionarlo, su base de datos Oracle de origen puede utilizar la
ROWID
pseudocolumna, pero MySQL no admite una funcionalidad similar. AWS SCT puede emular laROWID
pseudocolumna en el código convertido. Para ello, elija Generar como identidad en ¿Generar ID de fila?.Si el código fuente de Oracle no utiliza la pseudocolumna
ROWID
, seleccione No generar para generar en ¿Generar ID de fila? En este caso, el código convertido funciona más rápido. -
Trabajar con el código fuente de Oracle cuando incluye las funciones
TO_CHAR
,TO_DATE
yTO_NUMBER
con parámetros que MySQL 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
TO_CHAR
,TO_DATE
yTO_NUMBER
de MySQL nativas. 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 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.
Consideraciones sobre la migración
Al convertir Oracle a RDS para MySQL o Aurora MySQL, para cambiar el orden en que se ejecutan las sentencias, puede utilizar una instrucción GOTO
y una etiqueta. Todas las instrucciones PL/SQL que van detrás de una instrucción GOTO
se omiten y el procesamiento continúa en la etiqueta. Puede usar las instrucciones GOTO
y las etiquetas se pueden utilizar en cualquier lugar de un procedimiento, lote o bloque de instrucciones. También puede anidar las instrucciones GOTO.
MySQL no utiliza instrucciones GOTO
. Cuando AWS SCT convierte el código que contiene una GOTO
sentencia, convierte la sentencia para usar una sentencia BEGIN…END
orLOOP…END LOOP
.
Puede encontrar ejemplos de cómo se AWS SCT convierten GOTO
las sentencias en la siguiente tabla.
Instrucción de Oracle | Instrucción de MySQL |
---|---|
|
|
|
|
|
|
Convertir la instrucción WITH en Oracle a Amazon RDS para MySQL o Amazon Aurora MySQL
Puede utilizar la cláusula WITH (subquery_factoring) en Oracle para asignar un nombre (query_name) a un bloque subquery. A continuación, puede hacer referencia al bloque subquery en varios lugares de la consulta especificando el valor de query_name. Si un bloque de subconsultas no contiene enlaces ni parámetros (local, procedimiento, función, paquete), AWS SCT convierte la cláusula en una vista o una tabla temporal.
El beneficio de convertir la cláusula en una tabla temporal es que las referencias repetidas a la subconsulta podrían ser más eficientes. La mayor eficiencia se debe a que los datos se recuperan fácilmente de la tabla temporal en lugar de que cada referencia tenga que solicitarlos. Puede emular esto mediante vistas adicionales o una tabla temporal. El nombre de la consulta utiliza el formato <procedure_name>$<subselect_alias>
.
Puede encontrar ejemplos en la siguiente tabla.
Instrucción de Oracle | Instrucción de MySQL |
---|---|
|
|
|
|
|
|