Migración de aplicaciones de bases de datos PostgreSQL a Autonomous Database
Puede migrar sentencias SQL de PostgreSQL a Oracle SQL y ejecutar las sentencias en Autonomous Database.
- Traducción de sentencias PostgreSQL a Oracle SQL
Puede traducir sentencias SQL escritas en PostgreSQL a Oracle SQL y ejecutar las sentencias traducidas en Autonomous Database. - Ejecución de sentencias PostgreSQL en Autonomous Database
Puede traducir y ejecutar de forma interactiva sentencias PostgreSQL en Autonomous Database. - Migración de archivos PostgreSQL a Oracle SQL
Puede migrar un archivo que contenga sentencias PostgreSQL a un archivo que contenga sentencias SQL de Oracle. - Limitaciones para la migración y traducción de sentencias PostgreSQL a Oracle SQL
En esta sección se resumen las limitaciones para migrar sentencias SQL de PostgreSQL a Oracle SQL.
Traducir sentencias PostgreSQL a Oracle SQL
Puede traducir sentencias SQL escritas en PostgreSQL a Oracle SQL y ejecutar las sentencias traducidas en Autonomous Database.
Utilice DBMS_CLOUD_MIGRATION.MIGRATE_SQL
para convertir la sentencia PostgreSQL en Oracle SQL. Hay variantes de procedimiento y función de DBMS_CLOUD_MIGRATION.MIGRATE_SQL
.
Migrar la sentencia PostgreSQL a Oracle SQL con el procedimiento MIGRATE_SQL
El siguiente ejemplo acepta la sentencia SQL escrita en PostgreSQL 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 => 'SELECT e.employee_id, e.last_name, e.salary FROM employees AS e;',
output_sql => output_sql_result,
source_db => 'POSTGRES');
DBMS_OUTPUT.PUT_LINE (output_sql_result);
END;
/
Output
–-------------------------------------------------------------
SELECT e.employee_id, e.last_name, e.salary FROM employees e;
El parámetro original_sql
especifica la sentencia PostgreSQL.
El parámetro output_sql
almacena el SQL traducido.
El parámetro source_db
especifica el nombre de la base de datos PostgreSQL.
Consulte MIGRATE_SQL Procedimiento y función para obtener más información.
Migrar la sentencia PostgreSQL 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 PostgreSQL y la función devuelve la sentencia traducida en Oracle SQL:
SELECT DBMS_CLOUD_MIGRATION.MIGRATE_SQL
(
'CREATE TABLE IF NOT EXISTS cars (brand VARCHAR(255), model VARCHAR(255), year INT)',
'POSTGRES') AS output FROM DUAL;
OUTPUT
------------------------------------------------------------------------------
create table cars (brand VARCHAR2(255), model VARCHAR2(255), year NUMBER(10);
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 PostgreSQL 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 PostgreSQL en Autonomous Database
Puede traducir y ejecutar de forma interactiva sentencias PostgreSQL en su instancia de Autonomous Database.
Utilice el procedimiento ENABLE_TRANSLATION
para activar la traducción en tiempo real de sentencias SQL escritas en PostgreSQL. Después de activar la traducción en una sesión, las sentencias PostgreSQL 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 PostgreSQL y ejecutar comandos:
Puede consultar la vista V$MAPPED_SQL
para mostrar las sentencias PostgreSQL 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 = 'POSTGRES'
AND o.object_type = 'TRANSLATION PROFILE';
Consulte V$MAPPED_SQL para obtener más información.
Migración de archivos PostgreSQL a Oracle SQL
Puede migrar un archivo que contenga sentencias PostgreSQL a un archivo que contenga sentencias SQL de Oracle.
El procedimiento DBMS_CLOUD_MIGRATION.MIGRATE_FILE
traduce sentencias SQL en un archivo PostgreSQL de Object Storage y genera un nuevo archivo que contiene Oracle SQL.
Como requisito, cargue uno o más archivos PostgreSQL con una extensión .sql
en una ubicación de Object Storage. En los siguientes ejemplos se utiliza el archivo postgrestest.sql
que se carga en Object Storage. Consulte Colocación de datos en el almacenamiento de objetos para obtener más información.
Para migrar archivos PostgreSQL a Oracle SQL:
Ejecute la siguiente consulta para ver el contenido del archivo postgrestest_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
--------------------------------------------------------------------------------
SELECT f.film_id, f.title, inventory_id
FROM film f LEFT JOIN inventory
ON inventory.film_id = f.film_id;
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 Procedimiento GET_OBJECT para obtener más información.
Limitaciones para la migración y la traducción de PostgreSQL Sentencias a Oracle SQL
En esta sección se resumen las limitaciones para migrar sentencias SQL de PostgreSQL a Oracle SQL.
CREATE DOMAIN
CREATE EXTENSION
CREATE DATABASE
CREATE TYPE
SET
ALTER TABLE
: solo está soportadoALTER TABLE ADD CONSTRAINT
al migrar a Autonomous Database.DELETE
: la palabra claveRETURNING *
de la sentenciaDELETE
no está soportada en Autonomous Database. Debe sustituir la cláusulaRETURNING *
por la cláusulaRETURNING INTO
. Por ejemplo,DELETE FROM tasks WHERE status = 'DONE' RETURNING *;
.Consulte Cláusula RETURNING INTO para obtener más información.
CREATE FUNCTION
: los siguientes no están soportados conCREATE FUNCTION
:- El tipo de retorno
SETOF
, debe sustituirSETOF
por los tipos de retornoCURSORS
oCOLLECTIONS
. - Cláusula
IMMUTABLE
. - Declaraciones de parámetros con el formato
FUNCTION_NAME (DATATYPE, DATATYPE)
.
- El tipo de retorno
ALTER FUNCTION
: los argumentos de la funciónALTER FUNCTION
, por ejemplo,RENAME TO
,OWNER TO
,SET SCHEMA
no están soportados.