As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Migrar um banco de dados Oracle on-premises para o Amazon RDS para Oracle usando o Oracle Data Pump Import direto em um link de banco de dados
Criado por Rizwan Wangde (AWS)
Ambiente: produção | Origem: banco de dados Oracle on-premises | Destino: Amazon RDS para Oracle |
Tipo R: redefinir a plataforma | Workload: Oracle | Tecnologias: migração; bancos de dados |
Serviços da AWS: AWS DMS; AWS Direct Connect; Amazon RDS |
Resumo
Vários padrões abrangem a migração de bancos de dados Oracle on-premises para o Amazon RDS para Oracle usando o Oracle Data Pump, um utilitário nativo da Oracle que é a forma preferida de migrar grandes workloads Oracle. Esses padrões geralmente envolvem a exportação de esquemas ou tabelas de aplicativos em arquivos de despejo, a transferência dos arquivos de despejo para um diretório de banco de dados no Amazon RDS para Oracle e, em seguida, a importação dos esquemas e dados do aplicativo dos arquivos de despejo.
Ao usar essa abordagem, a migração pode levar mais tempo, dependendo do tamanho dos dados e do tempo necessário para transferir os arquivos de despejo para a instância do Amazon RDS. Além disso, os arquivos de despejo residem no volume Amazon Elastic Block Store (Amazon EBS) da instância do Amazon RDS, que deve ser grande o suficiente para o banco de dados e os arquivos de despejo. Quando os arquivos de despejo são excluídos após a importação, o espaço vazio não pode ser recuperado, então você continua pagando pelo espaço não utilizado.
Esse padrão atenua esses problemas executando uma importação direta na instância do Amazon RDS usando a API do Oracle Data Pump (DBMS_DATAPUMP
) em um link de banco de dados. O padrão inicia um pipeline simultâneo de exportação e importação entre os bancos de dados de origem e de destino. Este padrão não exige o dimensionamento de um volume do EBS para os arquivos de despejo porque nenhum arquivo de despejo é criado ou armazenado no volume. Essa abordagem economiza o custo mensal do espaço em disco não utilizado.
Pré-requisitos e limitações
Pré-requisitos
Uma conta ativa da Amazon Web Services (AWS).
Uma nuvem privada virtual (VPC) configurada com sub-redes privadas em pelo menos duas zonas de disponibilidade, para fornecer a infraestrutura de rede para a instância do Amazon RDS.
Um banco de dados Oracle em um datacenter no on-premise.
Uma instância Oracle do Amazon RDS
existente em uma única zona de disponibilidade. Usar uma única zona de disponibilidade melhora o desempenho de gravação durante a migração. Uma implantação Multi-AZ pode ser habilitada de 24 a 48 horas antes da substituição. AWS Direct Connect
(recomendado para bancos de dados de grande porte). Regras de conectividade de rede e firewall no on-premises configuradas para permitir uma conexão de entrada da instância do Amazon RDS com o banco de dados Oracle on-premises.
Limitações
O limite de tamanho do banco de dados no Amazon RDS para Oracle é de 64 TiB (em dezembro de 2022).
Versões do produto
Banco de dados de origem: Banco de dados Oracle versão 10g Release 1 e posterior.
Banco de dados de destino: para obter uma lista de versionamentos e edições compatíveis no Amazon RDS, consulte Amazon RDS para Oracle na documentação da AWS.
Arquitetura
Pilha de tecnologia de origem
Banco de dados Oracle autogerenciado on-premises ou na nuvem
Pilha de tecnologias de destino
Amazon RDS para Oracle
Arquitetura de destino
O diagrama a seguir mostra a arquitetura para migrar de um banco de dados Oracle on-premises para o Amazon RDS para Oracle em um ambiente single-AZ. As direções das setas mostram o fluxo de dados na arquitetura. O diagrama não mostra qual componente está iniciando a conexão.
![""](images/pattern-img/d54e7777-dcd2-4039-9b76-97e1019ef112/images/78429a29-e110-485a-a501-9764decd7e92.png)
A instância do Amazon RDS para Oracle se conecta ao banco de dados Oracle de origem on-premises para realizar uma migração de carga completa pelo link do banco de dados.
O AWS DMS se conecta ao banco de dados Oracle de origem on-premises para realizar a replicação contínua usando a captura de dados de alteração (CDC).
As alterações do CDC são aplicadas ao banco de dados do Amazon RDS para Oracle.
Ferramentas
Serviços da AWS
O AWS Database Migration Service (AWS DMS) ajuda você a migrar armazenamentos de dados para a Nuvem AWS ou entre combinações de configurações na nuvem e on-premises. Esse padrão usa CDC e a configuração Replicar somente alterações de dados.
O AWS Direct Connect vincula a rede interna a um local do Direct Connect por meio de um cabo de fibra ótica Ethernet padrão. Com essa conexão, você pode criar interfaces virtuais diretamente para serviços públicos da AWS, ignorando provedores de serviço da internet no caminho da sua rede.
O Amazon Relational Database Service (Amazon RDS) para Oracle ajuda você a configurar, operar e escalar um banco de dados relacional Oracle na Nuvem AWS.
Outras ferramentas
O Oracle Data Pump
ajuda você a mover dados e metadados de um banco de dados para outro em alta velocidade. Ferramentas de cliente, como Oracle Instant Client
ou SQL Developer , são usadas para conectar e executar consultas SQL no banco de dados.
Práticas recomendadas
Embora o AWS Direct Connect
Uma rede privada virtual (VPN) usando o Site-to-Site VPN da Amazon ou uma conexão de IPsec entre a rede on-premises e a rede da AWS
Criptografia de rede nativa do banco de dados Oracle
configurada no banco de dados Oracle on-premises Criptografia usando TLS
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Configurar a conectividade de rede entre o banco de dados de destino e o banco de dados de origem. | Configure a rede e o firewall on-premises para permitir a conexão de entrada da instância de destino do Amazon RDS com o banco de dados Oracle de origem no local. | Administrador de rede, engenheiro de segurança |
Criar um usuário do banco de dados com os privilégios apropriados. | Criar um usuário de banco de dados no banco de dados Oracle de origem on-premises com privilégios para migrar dados entre a origem e o destino usando o Oracle Data Pump.
| DBA |
Preparar o banco de dados de origem on-premises para a migração do AWS DMS CDC. | (Opcional) Preparar o banco de dados Oracle de origem on-premises para a migração do AWS DMS CDC após a conclusão do Oracle Data Pump Full Load:
| DBA |
Instalar e configure o SQL Developer. | Instale e configure o SQL Developer | DBA, Engenheiro de migração |
Gerar um script para criar os espaços de tabela. | Use o exemplo de consulta SQL a seguir para gerar o script no banco de dados de origem.
O script será aplicado no banco de dados de destino. | DBA |
Gerar um script para criar usuários, perfis, funções e privilégios. | Para gerar um script para criar usuários, perfis, funções e privilégios do banco de dados, use os scripts do documento do Oracle Support Como extrair DDL para o usuário, incluindo privilégios e perfis, usando dbms_metadata.get_ddl (Doc ID 2739952.1) O script será aplicado no banco de dados de destino. | DBA |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Criar um link de banco de dados com o banco de dados de origem e verificar a conectividade. | Para criar um link de banco de dados para o banco de dados de origem on-premises, você pode usar o comando de exemplo a seguir:
Para verificar a conectividade, execute o comando SQL a seguir:
A conectividade será bem-sucedida se a resposta for | DBA |
Executar os scripts para preparar a instância de destino. | Executar os scripts gerados anteriormente para preparar a instância de destino do Amazon RDS para Oracle:
Isso ajuda a garantir que a migração do Oracle Data Pump possa criar os esquemas e respectivos objetos. | DBA, Engenheiro de migração |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Migrar os esquemas necessários. | Para migrar os esquemas necessários do banco de dados on-premises de origem para a instância de destino do Amazon RDS, use o código na seção Informações adicionais:
Para ajustar o desempenho da migração, você pode ajustar o número de processos paralelos executando o comando a seguir.
| DBA |
Coletar estatísticas do esquema para melhorar o desempenho. | O comando Coletar estatísticas do esquema retorna as estatísticas do otimizador de consultas Oracle coletadas para objetos de banco de dados. Ao usar essas informações, o otimizador pode selecionar o melhor plano de execução para qualquer consulta nesses objetos.
| DBA |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Capturar o SCN no banco de dados Oracle on-premises de origem. | Capturar o número de alteração do sistema (SCN) Para gerar o SCN atual do banco de dados de origem, use a instrução SQL a seguir.
| DBA |
Executar a migração de carga total dos esquemas. | Para migrar os esquemas necessários (
No código, substitua
Para ajustar o desempenho da migração, você pode ajustar o número de processos paralelos.
| DBA |
Desative os triggers nos esquemas migrados. | Antes de iniciar a tarefa exclusiva do AWS DMS CDC, desative o | DBA |
Coletar estatísticas do esquema para melhorar o desempenho. | O comando Coletar estatísticas do esquema retorna as estatísticas do otimizador de consultas Oracle coletadas para objetos de banco de dados. Ao usar essas informações, o otimizador pode selecionar o melhor plano de execução para qualquer consulta nesses objetos.
| DBA |
Usar o AWS DMS para realizar uma replicação contínua da origem para o destino. | Usar o AWS DMS para realizar uma replicação contínua do banco de dados Oracle de origem para a instância de destino do Amazon RDS para Oracle. Para obter mais informações, consulte Criar tarefas para replicação contínua usando AWS DMS e a publicação no blog Como trabalhar com o suporte nativo ao CDC no AWS DMS | DBA, Engenheiro de migração |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Ativar o multi-AZ na instância 48 horas antes da substituição. | Se for uma instância de produção, recomendamos habilitar a implantação Multi-AZ na instância do Amazon RDS para oferecer os benefícios de alta disponibilidade (HA) e recuperação de desastres (DR). | DBA, Engenheiro de migração |
Interromper a tarefa exclusiva do AWS DMS CDC (se o CDC estiver ativado). |
| DBA |
Ative os triggers. | Ative os TRIGGERS que você desativou antes da criação da tarefa do CDC. | DBA |
Recursos relacionados
AWS
Documentação da Oracle
Mais informações
Código 1: somente migração de carga total, esquema de aplicativo único
DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN(operation => 'IMPORT', job_mode => 'SCHEMA', remote_link => '<DB LINK Name to Source Database>', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'import_01.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''<schema_name>'')'); -- To migrate one selected schema DBMS_DATAPUMP.METADATA_FILTER (hdnl, 'EXCLUDE_PATH_EXPR','IN (''STATISTICS'')'); -- To prevent gathering Statistics during the import DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4); -- Number of parallel processes performing export and import DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
Código 2: somente migração de carga total, esquemas de múltiplos aplicativos
DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN(operation => 'IMPORT', job_mode => 'SCHEMA', remote_link => '<DB LINK Name to Source Database>', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'import_01.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'SCHEMA_LIST', '''<SCHEMA_1>'',''<SCHEMA_2>'', ''<SCHEMA_3>'''); -- To migrate multiple schemas DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'EXCLUDE_PATH_EXPR','IN (''STATISTICS'')'); -- To prevent gathering Statistics during the import DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4); -- Number of parallel processes performing export and import DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
Código 3: migração de carga total antes da tarefa somente do CDC, único esquema de aplicativo
DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN(operation => 'IMPORT', job_mode => 'SCHEMA', remote_link => '<DB LINK Name to Source Database>', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'import_01.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''<schema_name>'')'); -- To migrate one selected schema DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'EXCLUDE_PATH_EXPR','IN (''STATISTICS'')'); -- To prevent gathering Statistics during the import DBMS_DATAPUMP.SET_PARAMETER (handle => v_hdnl, name => 'FLASHBACK_SCN', value => <CURRENT_SCN_VALUE_IN_SOURCE_DATABASE>); -- SCN required for AWS DMS CDC only task. DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4); -- Number of parallel processes performing export and import DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
Código 4: migração de carga total antes da tarefa somente do CDC, múltiplos esquemas de aplicativos
DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN (operation => 'IMPORT', job_mode => 'SCHEMA', remote_link => '<DB LINK Name to Source Database>', job_name => null); DBMS_DATAPUMP.ADD_FILE (handle => v_hdnl, filename => 'import_01.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'SCHEMA_LIST', '''<SCHEMA_1>'',''<SCHEMA_2>'', ''<SCHEMA_3>'''); -- To migrate multiple schemas DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'EXCLUDE_PATH_EXPR','IN (''STATISTICS'')'); -- To prevent gathering Statistics during the import DBMS_DATAPUMP.SET_PARAMETER (handle => v_hdnl, name => 'FLASHBACK_SCN', value => <CURRENT_SCN_VALUE_IN_SOURCE_DATABASE>); -- SCN required for AWS DMS CDC only task. DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4); -- Number of parallel processes performing export and import DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
Cenário em que uma abordagem de migração mista pode funcionar melhor
Em raros cenários em que o banco de dados de origem contém tabelas com milhões de linhas e colunas LOBSEGMENT de tamanho muito grande, esse padrão retardará a migração. O Oracle migra LobSegments pelo link de rede, um por vez. Ele extrai uma única linha (junto com os dados da coluna LOB) da tabela de origem e insere a linha na tabela de destino, repetindo o processo até que todas as linhas sejam migradas. O Oracle Data Pump pelo link do banco de dados não oferece suporte ao carregamento em massa ou mecanismos de carregamento de caminho direto para LOBSEGMENTS.
Nesta situação, recomendamos o seguinte:
Ignorar as tabelas identificadas durante a migração do Oracle Data Pump adicionando o seguinte filtro de metadados.
dbms_datapump.metadata_filter(handle =>h1, name=>'NAME_EXPR', value => 'NOT IN (''TABLE_1'',''TABLE_2'')');
Usar uma tarefa do AWS DMS (migração de carga total, com replicação de CDC, se necessário) para migrar as tabelas identificadas. O AWS DMS extrairá várias linhas do banco de dados Oracle de origem e as inserirá em um lote na instância de destino do Amazon RDS, o que melhora o desempenho.