Data Pump – Explorando o Paralelismo (PARALLEL)
Imagine que você está coordenando a carga de caminhões em um depósito. Quanto mais caminhões você usar simultaneamente, mais rápido poderá transportar os itens. No Oracle Data Pump, o parâmetro PARALLEL funciona como esses caminhões, permitindo que múltiplos processos trabalhem juntos para exportar dados de maneira mais rápida e eficiente.
O parâmetro PARALLEL define o número máximo de processos que executam uma exportação no Oracle Data Pump. Por padrão, apenas um processo (DWnn) será usado. No entanto, ao configurar PARALLEL com valores maiores, você pode dividir o trabalho entre vários processos, reduzindo significativamente o tempo de execução.
- Cada processo escreve em um dump file separado.
- É necessário usar placeholders (%U ou %L) para nomear os arquivos de dump e evitar conflitos.
- O paralelismo é limitado pelo número de CPUs disponíveis na máquina.
A configuração básica para exportação paralela é:
expdp USR_FULANO/senha@PDB01 FULL=Y PARALLEL=2 DIRECTORY=DATA_PUMP_X LOGFILE=LOG_PARALLEL.LOG DUMPFILE=DUMP_PARALLEL_%U.DMP
- FULL=Y: Exporta todo o banco de dados.
- PARALLEL=2: Configura dois processos de exportação em paralelo.
- DIRECTORY=DATA_PUMP_X: Especifica o diretório onde os arquivos serão salvos.
- LOGFILE=LOG_PARALLEL.LOG: Gera um log do processo.
- DUMPFILE=DUMP_PARALLEL_%U.DMP: Nomeia os arquivos de dump, com %U criando sufixos numéricos para cada processo.
expdp USR_FULANO/senha@PDB01 FULL=Y PARALLEL=2 DIRECTORY=DATA_PUMP_X LOGFILE=LOG_PARALLEL.LOG DUMPFILE=DUMP_PARALLEL_%U.DMP
A exportação será dividida entre dois processos, cada um escrevendo em um arquivo de dump separado (dump_PARALLEL_01.dmp e dump_PARALLEL_02.dmp). Durante o processo, você pode observar os processos ativos com os seguintes comandos:
Ao executar os comandos abaixo, podemos verificar os processos ativos que estão operando durante a exportação paralela:
ps aux | grep dw
ps aux | grep ora_dm
Na imagem acima, podemos observar o que acabamos de configurar. Veja que:
Processos DW (ora_dw): Dois processos (ora_dw00_orcl e ora_dw01_orcl) estão ativos. Isso confirma que o parâmetro PARALLEL=2 foi aplicado corretamente. Cada processo DW é responsável por escrever em um arquivo dump específico, dividindo o trabalho de exportação e acelerando a conclusão do job.
Processo DM (ora_dm): Há apenas um processo ativo (ora_dm00_orcl), que atua como a tabela mestre dessa operação. Ele coordena as atividades dos processos DW, garantindo que todas as partes da exportação sejam realizadas com precisão e organizadas corretamente.
Esse comportamento reflete a eficiência da exportação paralela: enquanto os processos DW realizam a exportação de dados, o processo DM gerencia e supervisiona o progresso, como um maestro organizando sua orquestra.
Monitore esses processos durante a execução de jobs paralelos para confirmar que os recursos do sistema estão sendo bem utilizados e que não há processos inativos.
Existem algumas limitações e Restrições
Embora o PARALLEL seja poderoso, ele tem algumas limitações importantes:
Disponível apenas no Oracle Database Enterprise Edition 11g ou superior.
O usuário deve ter a role DATAPUMP_EXP_FULL_DATABASE.
Objetos não exportados em paralelo:
- TRIGGER
- VIEW
- SEQUENCE
- CONSTRAINT
- REF_CONSTRAINT
Transportable tablespaces não podem ser exportados em paralelo.
Parâmetro NETWORK_LINK não suporta exportação paralela de metadados.
Uma das funcionalidades mais impressionantes do Data Pump é a possibilidade de ajustar o valor do parâmetro PARALLEL de forma dinâmica enquanto a exportação está em andamento. Isso permite adaptar o job às condições do ambiente, seja aumentando a paralelização para aproveitar recursos disponíveis, seja reduzindo-a para evitar sobrecarga.
Cenário Prático: Aumentando o PARALLEL Durante a Execução
Vamos simular um cenário onde iniciamos uma exportação com PARALLEL=2 e, durante o processo, aumentamos esse valor para 4 usando o modo interativo.
[oracle@oriondata ~]$ expdp USR_FULANO/senha@PDB01 FULL=Y PARALLEL=2 DIRECTORY=DATA_PUMP_X LOGFILE=LOG_PARALLEL.LOG DUMPFILE=DUMP_PARALLEL_%U.DMP
O comando acima inicia uma exportação completa (FULL=Y) com dois processos paralelos (PARALLEL=2). No início, cada processo DW escreve em seu próprio arquivo dump, conforme definido pelo placeholder %U no nome dos arquivos (DUMP_PARALLEL_%U.DMP).
Durante a exportação, pressionamos CTRL+C para entrar no modo interativo, onde é possível ajustar parâmetros sem interromper o job.
Export> PARALLEL=4
Export> CONTINUE_CLIENT
- PARALLEL=4: O valor do paralelismo é alterado de 2 para 4, dobrando o número de processos DW.
- CONTINUE_CLIENT: Retoma a execução do job com as novas configurações aplicadas.
Resultado Imediato,após o ajuste, podemos verificar que o número de processos DW aumentou de dois para quatro. Veja como isso é refletido nos processos ativos:
Os quatro processos ora_dw (DW00 a DW03) indicam que o paralelismo foi expandido com sucesso.
Cada processo DW está trabalhando simultaneamente para dividir e acelerar o trabalho de exportação.
O processo ora_dm continua único, atuando como a tabela master da exportação. Ele gerencia as operações e garante a coordenação entre os processos DW
Ao concluir a exportação, observamos que os dumps foram divididos entre os quatro processos DW. Cada arquivo dump contém uma parte dos dados exportados:
Essa divisão permite que o job seja concluído com maior eficiência e rapidez.
- Se houver trabalho disponível para ser dividido, o aumento do paralelismo ocorre de forma imediata.
- Reduzir o paralelismo evita sobrecarga em ambientes limitados e pode liberar recursos para outras operações.
- A alteração do parâmetro é dinâmica e não interrompe o job em execução, garantindo continuidade nas operações.
Com essa flexibilidade, o Data Pump demonstra ser uma ferramenta robusta, permitindo ajustes em tempo real para atender às demandas de diferentes cenários e recursos disponíveis.
Não é uma regra mas seria bom o uso de
- Use placeholders (%U ou %L): Essenciais para exportação paralela.
- Verifique o número de CPUs: Use o comando lscpu para confirmar o limite de paralelismo.
- Teste antes em ambientes menores: Avalie o impacto de diferentes valores de PARALLEL.
- Armazenamento compartilhado: Certifique-se de que os arquivos de dump estejam em um local acessível por todas as instâncias em ambientes RAC.
O parâmetro PARALLEL é uma ferramenta essencial para otimizar exportações no Oracle Data Pump. Ele reduz o tempo de execução ao dividir o trabalho entre múltiplos processos, aproveitando ao máximo os recursos disponíveis. Compreender suas limitações e melhores práticas permite um uso eficiente e seguro, especialmente em ambientes corporativos complexos.
Explore o poder do PARALLEL em seu laboratório e veja como ele pode transformar suas operações de exportação de dados!