Migrar Aplicativos de Bancos de Dados SQL Server para o Autonomous Database
Você pode migrar instruções SQL do SQL Server para o Oracle SQL e executar as instruções no Autonomous Database.
- Traduzir Instruções do SQL Server para o Oracle SQL
Você pode traduzir instruções SQL gravadas no SQL Server para o Oracle SQL e executar as instruções traduzidas no Autonomous Database. - Executar Instruções do SQL Server no Autonomous Database
Você pode traduzir e executar interativamente instruções do SQL Server no seu Autonomous Database. - Migrar Arquivos do SQL Server para o Oracle SQL
Você pode migrar um arquivo contendo instruções do SQL Server para um arquivo contendo instruções do Oracle SQL. - Limitações para Migração e Tradução de Instruções do SQL Server para o Oracle SQL
Esta seção resume as limitações para migrar instruções SQL do SQL Server para o Oracle SQL.
Tópico principal: Migrar Aplicativos do SQL Não Oracle para o Oracle SQL
Traduzir Instruções do SQL Server para o Oracle SQL
Você pode traduzir instruções SQL gravadas no SQL Server para o Oracle SQL e executar as instruções traduzidas no Autonomous Database.
Use DBMS_CLOUD_MIGRATION.MIGRATE_SQL
para traduzir uma instrução do SQL Server para o Oracle SQL. Há variantes de procedimento e função de DBMS_CLOUD_MIGRATION.MIGRATE_SQL
.
Migrar Instrução do SQL Server para o Oracle SQL com o Procedimento MIGRATE_SQL
O exemplo a seguir aceita a instrução SQL gravada no SQL Server como entrada, traduz a instrução para o Oracle SQL, atribui a instrução SQL traduzida a output_sql_result
e imprime o resultado:
SET SERVEROUTPUT ON
declare output_sql_result CLOB;
BEGIN
DBMS_CLOUD_MIGRATION.MIGRATE_SQL
(
original_sql => 'CREATE TABLE [dbo].[movie] ([film_id] [int], [title] [varchar](20));',
output_sql => output_sql_result,
source_db => 'SQLSERVER');
DBMS_OUTPUT.PUT_LINE (output_sql_result);
END;
/
Output
–-------------------------------------------------------------
CREATE TABLE movie (film_id NUMBER(10), title VARCHAR2(20));
O parâmetro original_sql
especifica a instrução SQL do SQL Server.
O parâmetro output_sql
armazena o SQL traduzido.
O parâmetro source_db
especifica o banco de dados do SQL Server.
Consulte MIGRATE_SQL Procedimento e Função para obter mais informações.
Migrar Instrução do SQL Server 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 SQL Server e a função retorna a instrução traduzida no Oracle SQL:
SELECT DBMS_CLOUD_MIGRATION.MIGRATE_SQL
(
'CREATE TABLE [dbo].[movie] ([film_id] [int], [title] [varchar](20));','SQLSERVER') AS OUTPUT
FROM DUAL;
OUTPUT
------------------------------------------------------------------------------
CREATE TABLE movie (film_id NUMBER(10), title VARCHAR2(20));
Use o parâmetro SQLSERVER
para traduzir do Microsoft SQL Server.
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 do SQL Server 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 do SQL Server no Autonomous Database
Você pode traduzir e executar interativamente instruções do SQL Server no Autonomous Database.
Use o procedimento ENABLE_TRANSLATION
para ativar a tradução em tempo real de instruções SQL gravadas no SQL Server. Depois de ativar a tradução em uma sessão, as instruções SQL não Oracle são automaticamente traduzidas e executadas como instruções SQL Oracle, 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 instruções do SQL Server e executar comandos:
Você pode consultar a view V$MAPPED_SQL
para listar as instruções do SQL Server que são traduzidas e mapeadas na memória para instruções do 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 = 'SQLSERVER'
AND o.object_type = 'TRANSLATION PROFILE';
Consulte V$MAPPED_SQL para obter mais informações.
Migrar Arquivos do SQL Server para o Oracle SQL
Você pode migrar um arquivo contendo instruções SQL Server para um arquivo contendo instruções Oracle SQL.
O procedimento DBMS_CLOUD_MIGRATION.MIGRATE_FILE
traduz instruções SQL em um arquivo do SQL Server no Object Storage e gera um novo arquivo contendo o Oracle SQL.
Como pré-requisito, faça upload de um ou mais arquivos do SQL Server com uma extensão .sql
para um local no Object Storage. Os exemplos a seguir usam o arquivo mssqltest.sql
submetido a upload para o Object Storage. Consulte Colocar dados no armazenamento de objetos para obter mais informações.
Para migrar arquivos do SQL Server para o Oracle SQL:
Execute a consulta a seguir para exibir o conteúdo do arquivo mssqltest_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;
CREATE TABLE movie (film_id NUMBER(10), title VARCHAR2(20));
INSERT INTO movie (film_id, title) VALUES (123, 'Tangled');
INSERT INTO movie (film_id, title) VALUES (234, 'Frozen');
CREATE TABLE inventory(film_id NUMBER(10), inventory_id NUMBER(10));
INSERT INTO inventory(film_id, inventory_id) VALUES (123, 223);
INSERT INTO inventory(film_id, inventory_id) VALUES (234, 334);
SELECT * FROM movie;
SELECT * FROM inventory;
SELECT m.film_id, m.title, inventory_id FROM movie m LEFT JOIN inventory ON inventory.film_id = m.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 Instruções do SQL Server para o Oracle SQL
Esta seção resume as limitações para migrar instruções SQL do SQL Server para o Oracle SQL.
-
ISJSON()
-
OPENJSON()