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 o 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 contendo instruções PostgreSQL para um arquivo contendo 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
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.
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 a instrução PostgreSQL para o Oracle SQL com o 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 a 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 conversã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
aceitam apenas uma instrução SQL como entrada. Portanto, somente uma 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 traduzidas automaticamente e executadas como instruções Oracle SQL, e você pode ver os resultados.
ENABLE_TRANSLATION
, você poderá fazer interativamente o seguinte em uma sessão:
-
Crie as tabelas. Por exemplo, crie as tabelas
MOVIE
eINVENTORY
. -
inserir dados em tabelas.
-
Tabelas de consulta.
-
Executar operações JOIN em tabelas. Por exemplo, é possível fazer uma junção externa esquerda em 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 traduzidas e mapeadas na memória para instruções SQL do Oracle.
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 contendo instruções PostgreSQL para um arquivo contendo 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 Object Storage. Os exemplos a seguir usam o arquivo postgrestest.sql
submetido a upload para o Object Storage. Consulte Colocar dados no armazenamento de objetos para obter mais informações.
Para migrar arquivos PostgreSQL para o Oracle SQL:
Execute a consulta a seguir 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;
Como alternativa, 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
: Só há suporte paraALTER TABLE ADD CONSTRAINT
ao migrar para o Autonomous Database.DELETE
: A palavra-chaveRETURNING *
na instruçãoDELETE
não é suportada no Autonomous Database. Você deve substituir a cláusulaRETURNING *
pela cláusulaRETURNING INTO
. Por exemplo,DELETE FROM tasks WHERE status = 'DONE' RETURNING *;
.Consulte RETORNO PARA A Cláusula para obter mais informações.
CREATE FUNCTION
: A seguir não há suporte paraCREATE FUNCTION
:- O tipo de retorno
SETOF
, substituaSETOF
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.