Migración de aplicaciones de bases de datos MySQL a Autonomous Database
Puede migrar sentencias SQL de MySQL a Oracle SQL y ejecutar las sentencias en Autonomous Database.
- Traducción de sentencias MySQL a Oracle SQL
Puede traducir sentencias SQL escritas en MySQL a Oracle SQL y ejecutar las sentencias traducidas en Autonomous Database. - Ejecución de sentencias MySQL en Autonomous Database
Puede traducir y ejecutar de forma interactiva sentencias MySQL en Autonomous Database. - Migración de archivos MySQL a Oracle SQL
Puede migrar un archivo que contenga sentencias MySQL a un archivo que contenga sentencias SQL de Oracle. - Limitaciones para la migración y traducción de sentencias MySQL a Oracle SQL
En esta sección se resumen las limitaciones para migrar sentencias SQL de MySQL a Oracle SQL.
Traducir sentencias MySQL a Oracle SQL
Puede traducir sentencias SQL escritas en MySQL a Oracle SQL y ejecutar las sentencias traducidas en Autonomous Database.
Utilice DBMS_CLOUD_MIGRATION.MIGRATE_SQL
para convertir una sentencia MySQL en Oracle SQL. Hay variantes de procedimiento y función de DBMS_CLOUD_MIGRATION.MIGRATE_SQL
.
Migrar la sentencia MySQL a Oracle SQL con el procedimiento MIGRATE_SQL
El siguiente ejemplo acepta la sentencia SQL escrita en MySQL como entrada, traduce la sentencia a Oracle SQL, asigna la sentencia SQL traducida a output_sql_result
e imprime el resultado:
SET SERVEROUTPUT ON
declare output_sql_result CLOB;
BEGIN
DBMS_CLOUD_MIGRATION.MIGRATE_SQL
(
original_sql => 'CREATE TABLE movie (movie_id INT, title VARCHAR(255));',
output_sql => output_sql_result,
source_db => 'MYSQL');
DBMS_OUTPUT.PUT_LINE (output_sql_result);
END;
/
OUTPUT
–-------------------------------------------------------------
CREATE TABLE movie (movie_id NUMBER(10), title VARCHAR2(255));
El parámetro original_sql
especifica la sentencia MySQL.
El parámetro output_sql
almacena el SQL traducido.
El parámetro source_db
especifica MySQL como nombre de base de datos.
Consulte MIGRATE_SQL Procedimiento y función para obtener más información.
Migrar la sentencia MySQL a Oracle SQL con la función MIGRATE_SQL
En el siguiente ejemplo se muestra la función DBMS_CLOUD_MIGRATION.MIGRATE_SQL
dentro de una sentencia SELECT
. La entrada de función es una sentencia MySQL y la función devuelve la sentencia traducida en Oracle SQL:
SELECT DBMS_CLOUD_MIGRATION.MIGRATE_SQL
(
'CREATE TABLE movie (film_id INT, title VARCHAR(255));','MYSQL') AS output FROM DUAL;
OUTPUT
------------------------------------------------------------------------------
create table cars (brand VARCHAR2(255), model VARCHAR2(255);
Consulte MIGRATE_SQL Procedimiento y función para obtener más información.
Notas para ejecutar DBMS_CLOUD_MIGRATION.MIGRATE_SQL
:
-
Puede que aparezca un error durante la conversión si la sentencia SQL de entrada no está soportada en Oracle SQL. Consulte Limitaciones para la migración y traducción de sentencias MySQL a Oracle SQL para obtener más información.
-
Los subprogramas
DBMS_CLOUD_MIGRATION.MIGRATE_SQL
solo aceptan una sentencia SQL como entrada. Por lo tanto, solo se puede traducir una única sentencia SQL por llamada.
Ejecución de sentencias MySQL en Autonomous Database
Puede traducir y ejecutar de forma interactiva sentencias MySQL en su instancia de Autonomous Database.
Utilice el procedimiento ENABLE_TRANSLATION
para activar la traducción en tiempo real de sentencias SQL escritas en MySQL. Después de activar la traducción en una sesión, las sentencias MySQL se traducen y ejecutan automáticamente como sentencias SQL de Oracle, y puede ver los resultados.
ENABLE_TRANSLATION
, puede realizar de forma interactiva lo siguiente en una sesión:
-
Cree las tablas. Por ejemplo, cree las tablas
MOVIE
yINVENTORY
. -
Insertar Datos en las Tablas.
-
Tablas de consulta.
-
Realizar operaciones JOIN en tablas. Por ejemplo, puede realizar una unión externa izquierda en las tablas.
Para activar la traducción con MySQL y ejecutar comandos:
Puede consultar la vista V$MAPPED_SQL
para mostrar las sentencias MySQL traducidas y asignadas en memoria a sentencias SQL de Oracle.
Por ejemplo:
SELECT v.*
FROM v$mapped_sql v, dba_objects o
WHERE v.sql_translation_profile_id = o.object_id
AND o.object_name = 'MYSQL'
AND o.object_type = 'TRANSLATION PROFILE';
Consulte V$MAPPED_SQL para obtener más información.
Migración de archivos MySQL a Oracle SQL
Puede migrar un archivo que contenga sentencias MySQL a un archivo que contenga sentencias SQL de Oracle.
El procedimiento DBMS_CLOUD_MIGRATION.MIGRATE_FILE
traduce sentencias SQL en un archivo MySQL de Object Storage y genera un nuevo archivo que contiene Oracle SQL.
Como requisito, cargue uno o más archivos MySQL con una extensión .sql
en una ubicación de Object Storage. En los siguientes ejemplos se utiliza el archivo mysqltest.sql
que se carga en Object Storage. Consulte Colocación de datos en Object Storage para obtener más información.
Para migrar archivos MySQL a Oracle SQL:
Ejecute la siguiente consulta para ver el contenido del archivo mysqltest_oracle.sql
:
SELECT UTL_RAW.CAST_TO_VARCHAR2 (DBMS_CLOUD.GET_OBJECT(
credential_name => 'OCI$RESOURCE_PRINCIPAL',
object_uri => 'https://objectstorage.region.oraclecloud.com/n/namespace/b/bucket/o/files'))
FROM dual;
UTL_RAW.CAST_TO_VARCHAR2(DBMS_CLOUD.GET_OBJECT(CREDENTIAL_NAME=>'CRED1',OBJECT_U
--------------------------------------------------------------------------------
DROP TABLE movie;
DROP TABLE inventory;
CREATE TABLE movie (film_id NUMBER(10), title VARCHAR2(255));
INSERT INTO movie (film_id, title) VALUES (123, 'Tangled');
INSERT INTO movie (film_id, title) VALUES (234, 'Frozen');
CREATE TABLE movie (film_id NUMBER(10), inventory_id NUMBER(10));
INSERT INTO movie (film_id, inventory_id) VALUES (123, 223);
INSERT INTO inventory (film_id, inventory_id) VALUES (234, 334);
SELECT * FROM movie;
Como alternativa, si crea una credencial en lugar de la entidad de recurso, OCI$RESOURCE_PRINCIPAL
, especifique el nombre de credencial en el parámetro credential_name
.
Consulte GET_OBJECT Procedimiento y función para obtener más información.
Limitaciones para la migración y traducción de sentencias MySQL a Oracle SQL
En esta sección se resumen las limitaciones para migrar sentencias SQL de MySQL a Oracle SQL.
Tenga en cuenta las siguientes restricciones al migrar del tipo de base de datos MySQL a Oracle SQL:
-
Variables globales definidas por el usuario: las variables globales definidas por el usuario MySQL declaradas con el formato
@var_name
no están soportadas al realizar la conversión a Oracle SQL. -
Identificadores entre comillas: los identificadores MySQL que se incluyen con backticks (`), como
`var_name`
, no están soportados al realizar la conversión a Oracle SQL. Solo se admiten identificadores que no tengan comillas o estén entre comillas dobles. -
Delimitadores:
-
Para funciones y procedimientos, solo están soportados los delimitadores
$$
y//
. -
Para las sentencias SQL solo está soportado el delimitador
;
.
-
-
ADDTIME(datetime, time)
-
AES_DECRYPT(crypt_str, key_str)
-
AES_ENCRYPT(str, key_str)
-
BIN(num)
-
CONV(num, from_base, to_base)
-
CONVERT_TZ(datetime, from, to)
-
CRC32(exp)
-
DATE_ADD(date, interval)