Migrar Dados com DBMS_CLOUD_IMPORT

O DBMS_CLOUD_IMPORT permite importar dados de bancos de dados Oracle e não Oracle para o Oracle Autonomous AI Database usando uma abordagem simples e consistente.

Migrar Dados com DBMS_CLOUD_IMPORT

Ao trabalhar em vários sistemas de banco de dados, a movimentação de dados pode ser complexa devido a diferenças em tecnologias, formatos e ferramentas. A DBMS_CLOUD_IMPORT simplifica esse processo fornecendo uma abordagem unificada para importar dados entre plataformas, eliminando a necessidade de gerenciar várias ferramentas ou fluxos de trabalho.

O DBMS_CLOUD_IMPORT também suporta transferência de dados confiável e de alto desempenho. O processo de importação usa a execução paralela para melhorar o throughput e, se uma importação for interrompida, como durante a manutenção ou uma perda de conexão com o banco de dados de origem, ela será retomada automaticamente de onde parou, garantindo a conclusão sem precisar reiniciar a importação.

Você pode importar dados de bancos de dados Oracle e bancos de dados não Oracle compatíveis, incluindo MySQL, PostgreSQL e Amazon Redshift. Para origens Oracle, os objetos de dados e de banco de dados são importados. Para origens não Oracle, a importação se concentra na movimentação de dados com conversão automática de tipo de dados para formatos compatíveis com a Oracle.

O recurso suporta a importação flexível de dados. Você pode importar um banco de dados inteiro ou um subconjunto de dados, como esquemas ou tabelas selecionados, com base em seus requisitos. A Oracle também fornece views do dicionário de dados para monitorar o andamento e rastrear o status da importação.

Principais Benefícios

  • Importação unificada de dados entre plataformas: Importe dados de bancos de dados Oracle e não Oracle sem usar várias ferramentas.
  • Transferência de dados de alto desempenho: Mova grandes volumes de dados usando execução paralela.
  • Resiliência incorporada: Retome as operações de importação automaticamente após interrupções, incluindo manutenção ou perda de conexão com o banco de dados de origem.
  • Seleção flexível de dados: Importe um banco de dados completo ou um subconjunto de dados, incluindo esquemas ou tabelas específicos.

Pré-requisitos

Lista os pré-requisitos para executar a importação no Autonomous AI Database.

Antes de iniciar a importação, verifique se os pré-requisitos a seguir foram atendidos.

  • Você deve estar conectado como o usuário ADMIN.

  • Os subprogramas DBMS_CLOUD_IMPORT acessam o banco de dados de origem usando um link de banco de dados criado implicitamente como parte da tarefa de importação. Para estabelecer essa conexão, você deve criar um objeto de credencial com as credenciais do banco de dados remoto e referenciá-lo ao criar a tarefa de importação. Consulte Procedimento CREATE_CREDENTIAL para obter mais informações.

  • Para bancos de dados de origem não Oracle, especifique longtovarchar => 'true' no parâmetro gateway_params ao chamar DBMS_CLOUD_IMPORT.CREATE_IMPORT_TASK. Isso é necessário porque os metadados em bancos de dados não Oracle consistem em colunas LONG. Por exemplo: gateway_params => JSON_OBJECT('db_type' VALUE <db_type>, 'longtovarchar' VALUE 'true').

  • Certifique-se de que o banco de dados especificado pelo service_name possa estabelecer conexão com o esquema de destino e acessá-lo.

  • Os jobs de importação são retomados do ponto de interrupção, como após um evento de manutenção planejado ou uma interrupção inesperada. Processamento paralelo e currículo automático são suportados para bancos de dados de origem Oracle, MySQL, PostgreSQL e Amazon Redshift. Para bancos de dados de origem não Oracle, os seguintes pré-requisitos são necessários para ativar o processamento paralelo e a retomada automática (pré-requisitos adicionais podem ser aplicados dependendo do tipo de banco de dados de origem):

    • A tabela de origem é particionada por intervalo.

    • Existem estatísticas de histograma para pelo menos uma coluna numérica.

    • Um índice numérico ou chave primária está presente.

Se esses pré-requisitos não forem atendidos, a tabela será copiada usando CREATE TABLE AS SELECT (CTAS). Nesse caso, o processamento paralelo não é suportado e, se o job for interrompido, ele será reiniciado a partir do início da tabela, em vez de ser retomado a partir do ponto de interrupção.

Pré-requisitos adicionais podem ser necessários para suportar o processamento paralelo e a capacidade de reinicialização confiável, dependendo do tipo de banco de dados de origem. Consulte o seguinte para obter detalhes:

  • Banco de Dados de Origem PostgreSQL
    • Crie as views necessárias no banco de dados PostgreSQL de origem. Para suportar o processamento paralelo e a capacidade de reinicialização confiável ao migrar do PostgreSQL, crie as views necessárias no banco de dados de origem. Se as views não estiverem presentes, a importação usará CREATE TABLE AS SELECT(CTAS), nesse modo, o processamento paralelo não será suportado e, se um carregamento de tabela for interrompido, ele será reiniciado desde o início. Consulte CREATE TABLE AS SELECT para obter mais informações.
    • Você pode criar essas views usando scripts fornecidos pela Oracle disponíveis no GitHub. Verifique e execute os scripts no banco de dados PostgreSQL de origem antes de iniciar a importação.

Consulte a Documentação do PostgreSQL 18.3 para obter mais informações.

  • Banco de Dados de Origem do MySQL
    • O schema_list não é suportado para origens MySQL porque o MySQL não usa esquemas. Quando você chamar REATE_IMPORT_TASK, especifique um array vazio para schema_list ([]).

    • O valor que você especifica para service_name é usado como nome do esquema.

    • Crie as views necessárias no banco de dados MySQL de origem. Para suportar o processamento paralelo e a capacidade de reinicialização confiável ao migrar do MySQL, crie as views necessárias no banco de dados de origem. Se as views não estiverem presentes, a importação usará CREATE TABLE AS SELECT (CTAS), nesse modo, o processamento paralelo não será suportado e, se um carregamento de tabela for interrompido, ele será reiniciado desde o início. Consulte CREATE TABLE AS SELECT para obter mais informações.

    • É possível criar essas visualizações usando scripts fornecidos pela Oracle disponíveis no Github. Verifique e execute os scripts no banco de dados MySQL de origem antes de iniciar a importação.

Consulte Referência do MySQL para obter mais informações.

  • Banco de Dados de Origem do Amazon Redshift
    • Conceda privilégios para acesso ao link de banco de dados. Para ler dados de tabelas remotas, você deve garantir que a conta usada para criar o link de banco de dados tenha os privilégios necessários, por exemplo:

      • GRANT USAGE ON SCHEMA <remote_schema> TO <dblink_user>;

      • GRANT SELECT ON <remote_schema>.<remote_table> TO <dblink_user>;

    • Garantir a visibilidade de metadados para esquemas não public. Se o esquema remoto não for public e a importação precisar consultar metadados (por exemplo, via pg_table_def), você deverá incluir o esquema no search_path do usuário do link de banco de dados, por exemplo:

      • ALTER USER <dblink_user> SET search_path TO <new_value>;

Consulte a Documentação do Amazon Redshift para obter mais informações.

Importar dados usando DBMS_CLOUD_IMPORT

Descreve como importar dados para o Autonomous AI Database usando o DBMS_CLOUD_IMPORT.

Para importar dados para o Autonomous AI Database, use o procedimento DBMS_CLOUD_IMPORT.CREATE_IMPORT_TASK. Este procedimento permite importar dados do Oracle e de bancos de dados não Oracle suportados especificando os detalhes de conexão necessários e, opcionalmente, os objetos a serem importados.

Você pode importar um banco de dados inteiro ou um subconjunto de dados, como esquemas ou tabelas específicos, especificando parâmetros como schema_list ou table_list. Quando você executa este procedimento, o Oracle Database cria um job do Oracle Scheduler para gerenciar a tarefa de importação. O job usa os detalhes e as credenciais de conexão fornecidos para criar um link de banco de dados para o banco de dados de origem e transferir dados para o Autonomous AI Database.

O comportamento da importação depende do tipo de banco de dados de origem:

  • Importações de Oracle para Oracle: Os objetos de dados e de banco de dados são migrados. Índices, restrições e partições são criados automaticamente no Autonomous AI Database de destino. Se a importação for interrompida (por exemplo, devido a manutenção), ela será retomada a partir do ponto de interrupção.
  • Importações de bancos de dados não Oracle: Somente os dados são migrados. Chaves, índices, constraints e outros objetos dependentes não são criados. As partições só serão criadas se a tabela de origem for particionada por intervalo. A capacidade de retomada depende dos pré-requisitos; caso contrário, a importação será reiniciada desde o início.

Execute a importação como o usuário ADMIN. O Autonomous AI Database de destino permanece disponível durante a importação; no entanto, a Oracle recomenda evitar outras atividades no banco de dados de destino até a importação ser concluída. Se um job de importação for interrompido (por exemplo, devido a uma manutenção planejada ou uma interrupção inesperada), ele poderá ser retomado a partir do ponto de interrupção ou reinicialização, dependendo do tipo de banco de dados de origem e se os pré-requisitos são atendidos. Você também pode usar suspender e retomar para pausar temporariamente e, em seguida, continuar o job.

Criar uma Tarefa de Importação

Descreve as etapas para criar uma tarefa de importação.

Antes de criar e iniciar a tarefa de importação, configure a autenticação para o banco de dados de origem. DBMS_CLOUD_IMPORT usa um objeto de credencial para estabelecer conexão segura com a origem (e para criar o link de banco de dados necessário para a tarefa).

Para criar uma tarefa de importação, siga estas etapas:

  1. Crie credenciais para o banco do dados de origem. Essas credenciais são usadas para autenticar e se conectar com segurança ao sistema de origem. Por exemplo:
    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'db1_cred',
        username        => '<username>',
        password        => '<password>'
      );
    END;
    /

    Consulte Procedimento CREATE_CREDENTIAL para obter mais informações.

  2. Criar uma tarefa de importação:

    Depois de criar a credencial, use o procedimento DBMS_CLOUD_IMPORT.CREATE_IMPORT_TASK para criar e iniciar uma tarefa de importação. Este procedimento importa dados da Oracle e de bancos de dados não Oracle compatíveis, como MySQL, PostgreSQL e Amazon Redshift.

    Quando você executar este procedimento, especifique os detalhes e as credenciais de conexão necessários. Você também pode controlar quais dados são importados usando parâmetros como schema_list ou table_list.

    O Oracle Database executa a importação como um job do Oracle Scheduler, que gerencia a operação e rastreia o andamento. O job mantém o estado da importação no nível da tabela. Se a importação for interrompida, ela será retomada automaticamente, continuando das últimas tabelas incompletas, em vez de reiniciar toda a operação.

    Os exemplos a seguir mostram como criar tarefas de importação para diferentes tipos de banco de dados de origem, fornecendo os detalhes e as credenciais de conexão necessários.

    Exemplo: Cria uma tarefa de importação que se conecta a uma origem do Oracle e migra somente as tabelas especificadas (por exemplo, ADMIN.TABLE1 e ADMIN.TABLE2) para o Autonomous AI Database de destino.
    BEGIN
      DBMS_CLOUD_IMPORT.CREATE_IMPORT_TASK(
        task_name          => '<orcl_import_job>',
        hostname           => '<example1.oraclecloud.com>',
        port               => '<port>',
        service_name       => '<service_name>',
        ssl_server_cert_dn => '<cn=remote_db_cn_name>',
        directory_name     => '<walletdb1>',
        credential_name    => 'db1_cred',
        table_list         => '[{"schema_name": "admin", "table_name": "table1"},
                               {"schema_name": "admin",  "table_name": "table2"}]'
      );
    END;
    /

    Exemplo: Cria uma tarefa de importação que se conecta ao banco de dados Oracle de origem usando os detalhes e a credencial de conexão especificados e migra todo o esquema ADMIN. Use schema_list quando quiser migrar um ou mais esquemas, em vez de especificar tabelas individuais.
    BEGIN
      DBMS_CLOUD_IMPORT.CREATE_IMPORT_TASK(
        task_name          => 'orcl_import_job',
        hostname           => '<remote_db_hostname>',
        port               => '<remote_db_port>',
        service_name       => '<remote_db_service_name>',
        ssl_server_cert_dn => '<cn=remote_db_cn_name>',
        directory_name     => '<walletdb>',
        credential_name    => 'db1_cred',
        schema_list        => '["admin"]'
      );
    END;
    /
    Observação

    • Para restringir o escopo da importação:
      • Use schema_list para importar um ou mais esquemas.

      • Use table_list para importar tabelas específicas entre vários esquemas.

    • O parâmetro table_list só é suportado quando o banco de dados de origem é Oracle e não é suportado para bancos de dados não Oracle.
    • Quando table_list é usado:
      • Os metadados do esquema para os esquemas associados são importados conforme necessário.

      • Os dados são importados somente para as tabelas especificadas explicitamente em table_list.

    • Não especifique objetos sobrepostos em schema_list e table_list; use apenas uma opção para selecionar um determinado esquema ou tabela.

    Exemplo: Cria uma tarefa de importação para uma origem do MySQL especificando gateway_params com db_type definido como mysql e identifica o que migrar usando schema_list (conforme aplicável à configuração do gateway).

    BEGIN
      DBMS_CLOUD_IMPORT.CREATE_IMPORT_TASK(
        task_name        => 'mysql_import_job',
        hostname         => '<mysql_hostname>',
        port             => '<mysql_port>',
        service_name     => '<mysql_service>',
        credential_name  => '<mysql_cred>',
        gateway_params   => JSON_OBJECT('db_type' VALUE 'mysql'),
        schema_list      => '["dg4odbc"]'
      );
    END;
    /

    Exemplo: Cria uma tarefa de importação para uma origem PostgreSQL especificando gateway_params com db_type definido como postgres. A tarefa se conecta ao PostgreSQL e migra dados para o Autonomous AI Database de destino com base na configuração da tarefa.

    BEGIN
      DBMS_CLOUD_IMPORT.CREATE_IMPORT_TASK(
        task_name        => '<postgres_import_job>',
        hostname         => '<postgres_hostname>',
        port             => '<5432>',
        service_name     => '<postgres_serv>',
        credential_name  => '<postgres_cred>',
        gateway_params   => JSON_OBJECT('db_type' VALUE 'postgres')
      );
    END;
    /

    Nestes exemplos, hostname, port e service_name identificam o ponto final do banco de dados de origem e são usados pela tarefa para estabelecer conectividade (incluindo a criação do link do banco de dados obrigatório). O credential_name é autenticado no banco de dados de origem para que o link possa ser criado. Para origens Oracle, use o table_list para migrar tabelas específicas ou o schema_list para migrar um ou mais esquemas. Para bancos de dados não Oracle, o gateway_params também é necessário para especificar o tipo de banco de dados de origem (por exemplo, MySQL ou PostgreSQL) e ativar a conectividade baseada em gateway apropriada para a importação.

Suspender e Retomar Importação

Descreve como suspender e retomar uma operação de importação.

Se necessário, você pode pausar temporariamente a importação usando o procedimento SUSPEND_IMPORT_TASK:

BEGIN
  DBMS_CLOUD_IMPORT.SUSPEND_IMPORT_TASK(
    task_name => 'orcl_import_job'
 );
END;
/

Isso interrompe o job do scheduler preservando todo o andamento e metadados. Consulte Procedimento SUSPEND_IMPORT_TASK para obter mais informações.

Para continuar a importação, use o procedimento RESUME_IMPORT_TASK:

BEGIN
  DBMS_CLOUD_IMPORT.RESUME_IMPORT_TASK(
    task_name => 'orcl_import_job'
  );
END;
/

O job é retomado do último checkpoint, ignorando tabelas concluídas e continuando o trabalho restante.

Observação

O comportamento de retomada depende do tipo de banco de dados de origem e dos pré-requisitos. Quando os pré-requisitos para processamento paralelo e retomada automática são atendidos, a importação continua a partir do ponto de interrupção. Caso contrário, a importação usará CREATE TABLE AS SELECT (CTAS); nesse modo, o processamento paralelo não é suportado e, se o job for interrompido, ele será reiniciado desde o início da tabela.

Consulte Procedimento RESUME_IMPORT_TASK para obter mais informações.

Monitorar Andamento da Importação

Depois que você inicia uma tarefa de importação, o job do scheduler é executado em segundo plano e os registros do Autonomous AI Database progridem nos níveis de tarefa e tabela.

Você pode usar as seguintes views do dicionário de dados para monitorar o andamento e o status da importação:
  • DBA_DATA_IMPORT_TASK_STATUS: Mostra o andamento no nível da tarefa, incluindo status geral, percentual de conclusão e um resumo da atividade (por exemplo, tabelas em andamento no momento).
  • DBA_DATA_IMPORT_TABLE_STATUS: Mostra o andamento no nível da tabela para cada tabela que está sendo importada, incluindo detalhes de status e erro para tabelas com falha.

Por exemplo, consulte DBA_DATA_IMPORT_TABLE_STATUS para exibir o andamento e os erros no nível da tabela. A coluna STATUS indica o estado atual de cada tabela, como SUCCEEDED, FAILED, LOADING ou STOPPED.

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'db1_cred',
    username        => '<username>',
    password        => '<password>'
  );
END;
/

A saída é semelhante à seguinte:

IMPORT_TASK_NAME   SCHEMA_NAME   SCHEMA_OBJECT   STATUS
------------------ ------------- --------------- ----------
IMPORT_JOB1        SALES         ORDERS          SUCCEEDED
IMPORT_JOB1        SALES         CUSTOMERS       SUCCEEDED
IMPORT_JOB1        HR            EMPLOYEES       LOADING
IMPORT_JOB1        HR            DEPARTMENTS     FAILED

Quando a importação é concluída, o job do scheduler é desativado automaticamente. Consulte Monitorar e Diagnosticar Importação Heterogênea para obter mais informações.

Eliminar uma Tarefa de Importação

Descreve as etapas para eliminar uma tarefa de importação.

Após a conclusão da importação e não mais necessária, você poderá remover a tarefa de importação. A eliminação da tarefa remove o job do scheduler, os links do banco de dados e os metadados associados. Ele não faz rollback de objetos ou dados que já foram criados no esquema de destino e pode deixar uma tabela em andamento parcialmente carregada.

Se você reexecutar a importação para o mesmo esquema, talvez seja necessário limpar manualmente tabelas parcialmente carregadas. Para identificar tabelas incompletas, consulte views do dicionário de dados, como DBA_DATA_IMPORT_TABLE_STATUS, e revise o status da tabela antes de executar a limpeza.

BEGIN
  DBMS_CLOUD_IMPORT.DROP_IMPORT_TASK(
    task_name => 'orcl_import_job'
  );
END;
/

Este exemplo exclui o job de importação ORCL_IMPORT_JOB. Consulte Procedimento DROP_IMPORT_TASK para obter mais informações.

Monitorar e diagnosticar importação heterogênea

Para diagnosticar problemas e monitorar o andamento das operações de importação de dados, você pode consultar as seguintes views do dicionário de dados. Essas views fornecem informações detalhadas sobre o status da tarefa, o andamento da execução, as operações paralelas e os objetos relacionados.

Nome da View Descrição
View DBA_DATA_IMPORT_TASK_STATUS Exibe o status de cada tabela dentro de uma tarefa de importação, incluindo quaisquer erros encontrados durante o processamento.
View DBA_DATA_IMPORT_TABLE_STATUS Fornece detalhes gerais no nível da tarefa, incluindo informações de andamento, como o número de tabelas processadas, carregadas e concluídas com sucesso.