Migrar Aplicativos de Bancos de Dados PostgreSQL para o Autonomous Database
Você pode migrar instruções SQL de PostgreSQL para o Oracle SQL e executar as instruções no Autonomous Database.
- Traduzir Instruções PostgreSQL para Oracle SQL
Você pode traduzir instruções SQL gravadas em PostgreSQL para o Oracle SQL e executar as instruções traduzidas no Autonomous Database. - Executar Instruções PostgreSQL no Autonomous Database
Você pode traduzir e executar interativamente instruções PostgreSQL no seu Autonomous Database. - Migrar Arquivos PostgreSQL para o Oracle SQL
Você pode migrar um arquivo que contenha instruções PostgreSQL para um arquivo que contenha instruções Oracle SQL. - Limitações para Migração e Tradução de Instruções PostgreSQL para o Oracle SQL
Esta seção resume as limitações para migrar instruções SQL de PostgreSQL para o Oracle SQL.
Tópico principal: Migrar Aplicativos do SQL Não Oracle para o Oracle SQL
Converter Instruções PostgreSQL em Oracle SQL
Você pode traduzir instruções SQL gravadas em PostgreSQL para o Oracle SQL e executar as instruções traduzidas no Autonomous Database.
Use DBMS_CLOUD_MIGRATION.MIGRATE_SQL
para traduzir a instrução PostgreSQL para o Oracle SQL. Há variantes de procedimento e função de DBMS_CLOUD_MIGRATION.MIGRATE_SQL
.
Migrar instrução PostgreSQL para o Oracle SQL com Procedimento MIGRATE_SQL
O exemplo a seguir aceita a instrução SQL gravada em PostgreSQL como entrada, traduz a instrução para o Oracle SQL, designa a instrução SQL traduzida para output_sql_result
e imprime o 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;
O parâmetro original_sql
especifica a instrução PostgreSQL.
O parâmetro output_sql
armazena o SQL traduzido.
O parâmetro source_db
especifica o nome do banco de dados PostgreSQL.
Consulte MIGRATE_SQL Procedimento e Função para obter mais informações.
Migrar instrução PostgreSQL para o Oracle SQL com a Função MIGRATE_SQL
O exemplo a seguir mostra a função DBMS_CLOUD_MIGRATION.MIGRATE_SQL
em uma instrução SELECT
. A entrada da função é uma instrução PostgreSQL e a função retorna a instrução traduzida no 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 Procedimento e Função para obter mais informações.
Observações para executar DBMS_CLOUD_MIGRATION.MIGRATE_SQL
:
-
Você poderá encontrar um erro durante a tradução se a instrução SQL de entrada não for suportada no Oracle SQL. Consulte Limitações para Migração e Tradução de Instruções PostgreSQL para o Oracle SQL para obter mais informações.
-
Os subprogramas
DBMS_CLOUD_MIGRATION.MIGRATE_SQL
só aceitam uma instrução SQL como entrada. Assim, apenas uma única instrução SQL pode ser traduzida por chamada.
Executar Instruções PostgreSQL no Autonomous Database
Você pode traduzir e executar interativamente instruções PostgreSQL no seu Autonomous Database.
Use o procedimento ENABLE_TRANSLATION
para ativar a tradução em tempo real de instruções SQL gravadas em PostgreSQL. Depois de ativar a tradução em uma sessão, as instruções PostgreSQL são convertidas automaticamente e executadas como instruções Oracle SQL, e você pode ver os resultados.
ENABLE_TRANSLATION
, você pode fazer o seguinte de forma interativa em uma sessão:
-
Crie as tabelas. Por exemplo, crie as tabelas
MOVIE
eINVENTORY
. -
Insira dados em tabelas.
-
Tabelas de consulta.
-
Execute operações JOIN em tabelas. Por exemplo, você pode fazer uma junção externa esquerda nas tabelas.
Para ativar a tradução com PostgreSQL e executar comandos:
Você pode consultar a view V$MAPPED_SQL
para listar as instruções PostgreSQL que são traduzidas e mapeadas na memória para instruções Oracle SQL.
Por exemplo:
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 obter mais informações.
Migrar Arquivos PostgreSQL para o Oracle SQL
Você pode migrar um arquivo que contenha instruções PostgreSQL para um arquivo que contenha instruções Oracle SQL.
O procedimento DBMS_CLOUD_MIGRATION.MIGRATE_FILE
traduz instruções SQL em um arquivo PostgreSQL no Object Storage e gera um novo arquivo contendo o Oracle SQL.
Como pré-requisito, faça upload de um ou mais arquivos PostgreSQL com uma extensão .sql
para um local no serviço Object Storage. Os exemplos a seguir usam o arquivo postgrestest.sql
que é submetido a upload no Object Storage. Consulte Colocar dados no armazenamento de objetos para obter mais informações.
Para migrar arquivos PostgreSQL para o Oracle SQL:
Execute a seguinte consulta para exibir o conteúdo do arquivo 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;
Se preferir, se você criar uma credencial em vez do controlador de recursos, OCI$RESOURCE_PRINCIPAL
, especifique o nome da credencial no parâmetro credential_name
.
Consulte GET_OBJECT Procedimento e Função para obter mais informações.
Limitações para Migração e Tradução de PostgreSQL Instruções para Oracle SQL
Esta seção resume as limitações para migrar instruções SQL de PostgreSQL para o Oracle SQL.
CREATE DOMAIN
CREATE EXTENSION
CREATE DATABASE
CREATE TYPE
SET
ALTER TABLE
: Somente oALTER TABLE ADD CONSTRAINT
é suportado ao migrar para o Autonomous Database.DELETE
: A palavra-chaveRETURNING *
na instruçãoDELETE
não é suportada no Autonomous Database. Substitua a cláusulaRETURNING *
pela cláusulaRETURNING INTO
. Por exemplo,DELETE FROM tasks WHERE status = 'DONE' RETURNING *;
.Consulte RETURNING INTO Clause para obter mais informações.
CREATE FUNCTION
: Não há suporte para as seguintes opções comCREATE FUNCTION
:- O tipo de retorno
SETOF
, você deve substituirSETOF
pelos tipos de retornoCURSORS
ouCOLLECTIONS
. - A cláusula
IMMUTABLE
. - As declarações de parâmetro no formato
FUNCTION_NAME (DATATYPE, DATATYPE)
.
- O tipo de retorno
ALTER FUNCTION
: Os argumentos da funçãoALTER FUNCTION
, por exemplo,RENAME TO
,OWNER TO
eSET SCHEMA
não são suportados.