Migrar Aplicativos do SQL Server Databases para o Autonomous AI Database
Você pode migrar instruções SQL do SQL Server para o Oracle SQL e executar as instruções no Autonomous AI Database.
- Traduzir Instruções do SQL Server para o Oracle SQL
Você pode traduzir instruções SQL escritas no SQL Server para o Oracle SQL e executar as instruções traduzidas no Autonomous AI Database. - Executar Instruções do SQL Server no Autonomous AI Database
Você pode traduzir e executar interativamente instruções do SQL Server no seu Autonomous AI Database. - Migrar Arquivos do SQL Server para o Oracle SQL
É possível 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 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 AI Database.
Use DBMS_CLOUD_MIGRATION.MIGRATE_SQL
para traduzir uma instrução 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 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, 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 => '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 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 do SQL Server 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 do SQL Server no Autonomous AI Database
Você pode traduzir e executar interativamente instruções do SQL Server no Autonomous AI 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 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 instruções SQL Server e executar comandos:
Você pode consultar a view V$MAPPED_SQL
para listar as instruções SQL Server que são traduzidas e mapeadas na memória para instruções SQL da 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 = '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
É possível migrar um arquivo contendo instruções SQL Server para um arquivo contendo instruções SQL da Oracle.
O procedimento DBMS_CLOUD_MIGRATION.MIGRATE_FILE
traduz instruções SQL em um arquivo 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
que é submetido a upload no 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 seguinte consulta 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;
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 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()