DATA PUMP Modos de Exportação
Imagine o Oracle Data Pump como um centro logístico moderno, onde diferentes tipos de pacotes precisam ser enviados para diversos destinos. Cada modo de exportação representa uma estratégia eficiente para organizar e transferir seus dados. Neste artigo, vamos desvendar os modos de exportação disponíveis no Data Pump, explicando cada um de forma clara, com exemplos práticos e objetivos que você pode aplicar diretamente no seu ambiente Oracle.
O Oracle Data Pump utiliza uma sintaxe padronizada para facilitar a execução de exportações. Aqui estão 2 exemplos de estrutura básica:
EXPDP USUARIO/SENHA@SERVICE_NAME \
DIRECTORY=NOME_DIRECTORY \
DUMPFILE=DUMPFILE.DMP \
LOGFILE=LOGFILE.LOG \
MODO_DE_EXPORTACAO
usuario/senha@service_name: Informa o usuário e a senha para conexão ao banco, além do nome do serviço.
Exemplo: USR_FULANO/SENHA@ORCL.
DIRECTORY=nome_directory: Especifica o diretório previamente registrado no banco onde os arquivos serão armazenados.
Exemplo: DIRECTORY=DATA_PUMP_X.
DUMPFILE=dumpfile.dmp: Define o nome do arquivo dump que será gerado.
Exemplo: DUMPFILE=meu_dump.dmp.
LOGFILE=logfile.log: Define o nome do arquivo de log que armazenará informações do processo.
Exemplo: LOGFILE=meu_log.log.
modo_de_exportacao: Especifica o modo de exportação, como FULL=Y, SCHEMAS=USR_FULANO ou TABLES=EMPLOYEES.
Outra forma válida de especificar os arquivos é utilizando a notação de diretório dentro dos parâmetros DUMPFILE e LOGFILE:
EXPDP USUARIO/SENHA@SERVICE_NAME \
DUMPFILE=NOME_DIRECTORY:DUMPFILE.DMP \
LOGFILE=NOME_DIRECTORY:LOGFILE.LOG \
MODO_DE_EXPORTACAO
Estando em nível de sistema operacional, fora do banco. Vamos a prática:
EXPDP USR_FULANO/senha@ORCL DUMPFILE=DATA_PUMP_X:EXP_TESTE.DMP LOGFILE=DATA_PUMP_X:EXP_TESTE.LOG FULL=Y
DUMPFILE=DATA_PUMP_X:exp_teste.dmp: Salva o arquivo dump no diretório DATA_PUMP_X com o nome exp_teste.dmp.
LOGFILE=DATA_PUMP_X:exp_teste.log: Armazena o log no mesmo diretório com o nome exp_teste.log.
FULL=Y: Exporta todo o banco de dados. Essa flexibilidade permite gerenciar com precisão onde os arquivos são armazenados e como o processo é configurado.
Modos de Exportação do Oracle Data Pump
O Oracle Data Pump Export oferece cinco modos principais de exportação. Cada um é projetado para atender a necessidades específicas de administração de dados.
1/5 Full Mode
O banco inteiro é exportado. Para usá-lo é necessário que o usuário de exportação tenha garantida a role DATAPUMP_EXP_FULL_DATABASE;
Indicamos um full mode através do parâmetro FULL=Y:
Exporta o banco de dados inteiro. Imagine enviar todo o conteúdo de um armazém para um novo local.
expdp USR_FULANO/senha@PDB01 DIRECTORY=DATA_PUMP_X DUMPFILE=dump_Full_Mode.dmp LOGFILE=log_Full_Mode.log JOB_NAME=job_Full_Mode FULL=Y
FULL MODE
Foi preciso fazer uma edição na imagem por ser uma exportação FULL a lista é longa.
VÁRIOS USUÁRIOS OBJETOS
A imagem acima mostra de maneira didática que ao aplicar a cláusula “FULL=Y” são exportados todos os objetos, esquemas e tabelas de todos os usuários existentes do banco, tudo de tudo. E de forma natural este processo leva um tempo considerado.
Nota: Esse modo requer o privilégio DATAPUMP_EXP_FULL_DATABASE. Todos os objetos, esquemas e tabelas serão incluídos.
2/5 Schema Mode
Exporta objetos pertencentes a um ou mais esquemas. É como organizar pacotes de uma seção específica do armazém. Lembrando que o usuário que está executando este comando tem o privilégio de DATAPUMP_EXP_FULL_DATABASE só assim será possível exportar schemas fora o seu próprio schema, se não tiver este privilégio só será possível exportas seu próprio shema, sem o privilégio o comando não gerará um erro não mas irá exportar seu próprio schema.
Schema mode: especificamos um ou mais schemas a serem exportados. Caso nenhum modo de exportação seja especificado, o padrão é uma exportação schema mode do usuário de exportação;
Caso o usuário de exportação tenha a role DATAPUMP_EXP_FULL_DATABASE, podem ser especificados mais de um schema para exportação;
Indicamos um schema mode através do parâmetro SCHEMAS:
SCHEMA MODE
E aqui a imagem acima demonstra que foram somente exportados os objetos pertencentes ao usuário HR, diferente da exportação anterior.
Dica: Útil para mover objetos específicos entre ambientes.
3/5. Table Mode
Exporta tabelas específicas e seus objetos dependentes, como índices e constraints. Ideal para transferir dados selecionados. Table Mode especificamos uma ou mais tabelas a serem exportadas. Todas as partições e objetos dependentes também são exportados;
Qualquer objeto necessário para criação da tabela durante a importação precisa existir no banco destino, como schema e tablespaces;
Caso o usuário de exportação tenha a role DATAPUMP_EXP_FULL_DATABASE, podem ser especificados tabelas que não fazem parte do seu schema;
Indicamos um table mode através do parâmetro TABLES:
expdp USR_FULANO/senha@PDB01 TABLES=HR.EMPLOYEES,USR_FULANO.CORRIDA DIRECTORY=DATA_PUMP_X LOGFILE=LOG_TABLE_MOD.log DUMPFILE=DUMP_TABLE_MOD.dmp JOB_NAME=JOB_TABLE_MODE
TABLE MODE
Na imagem acima percebam que foram exportados 2 tabelas a tabela EMPLOYEES e a tabela CORRIDA de usuários diferentes sendo EMPLOYEES do usuário HR e a tabela CORRIDA do usuário USR_FULANO.
Nota: Com o privilégio DATAPUMP_EXP_FULL_DATABASE, você pode exportar tabelas de outros esquemas.
4/5. Tablespace Mode
Exporta todas as tabelas e objetos dependentes em uma ou mais tablespaces. É como mover todos os pacotes armazenados em um contêiner específico.
Tablespace mode: especificamos uma ou mais tablespaces a serem exportadas. Todas as tabelas contidas no conjunto de tablespaces especificado são exportadas, juntamente com seus objetos dependentes.
Caso o usuário de exportação tenha a role DATAPUMP_EXP_FULL_DATABASE, todas as tabelas da tablespaces são exportadas. Caso contrário, apenas as tabelas do seu schema serão.
Indicamos um tablespace mode através do parâmetro TABLESPACES:
SELECT OWNER, TABLE_NAME FROM DBA_TABLES WHERE TABLESPACE_NAME='TBS_DATA';
TABLESPACE TBS_DATA USER A imagem acima demonstra que as tablespaces existem no banco, e seus respectivos proprietários, vamos exportá-las
expdp USR_FULANO/senha@PDB01 TABLESPACES=TBS_DATA DIRECTORY=DATA_PUMP_X LOGFILE=LOG_TABLESPACE_MOD.LOG DUMPFILE=DUMP_TABLESPACE_MOD.DMP JOB_NAME=JOB_TABLE_MODE
TABLESPACE MODE
O curioso neste tipo de exportação fica claro na imagem acima são salvos tudo que está vinculado a tablespace exportado, ou seja tudo que reside dentro da tablesapace.
E aqui vale a mesma regra de que o usuário que irá realizar esta exportação deve ter o privilégio de DATAPUMP_EXP_FULL_DATABASE caso não tenha este privilégio não será gerado um erro porem o usuário somente conseguirá exportar seu próprios objetos, no caso especificado ele tem os privilégios necessários para exportar schemas de outros usuários, como demonstrado acima ele tem sucesso ao exportar objetos vinculados ao usuário HR
Importante: Certifique-se de que os objetos dependentes estejam completamente contidos nas tablespaces especificadas.
5/5. Transportable Tablespace Mode
Exporta apenas os metadados das tabelas nas tablespaces especificadas. Imagine transportar um contêiner inteiro, enquanto a carga (arquivos de dados) é movida separadamente.
Transportable Tablespace mode apenas os metadados das tabelas contidas no conjunto de tablespaces especificado é exportado. Os data files da tablespace são copiados em uma outra operação, e sua localização deve ser especificada durante a importação. Nesse modo é preciso que a tablespace esteja em modo READ ONLY.
Nesse modo, todos os segmentos da tabela e seus índices precisam estar contidos no conjunto de tablespaces especificado.
Durante o processo de importação deve ser especificado o local dos data files;
Indicamos um transportable tablespace mode através do parâmetro TRANSPORT_TABLESPACES:
O primeiro passo para este tipo de exportação é deixar a tablespace em modo READ ONLY, estando conectado como usuário SYS executamos o seguinte comando:
ALTER TABLESPACE USERS READ ONLY;
TABLESPACE USERS READ ONLY
Deixando assim a tablespace USER no modo READ ONLY vamos transportar a tablespace, com o seguinte comando.
expdp USR_FULANO/senha@PDB01 TRANSPORT_TABLESPACES=USERS DUMPFILE=DATA_PUMP_X:TRANSPORTABLE_TABLESPACE_MODE.DMP LOGFILE=DATA_PUMP_X:TRANSPORTABLE_TABLESPACE_MODE.LOG JOB_NAME=JOB_TRANSPORTABLE_TABLESPACE_MODE
TRANSPORTABLE TABLESPACE MODE
Aqui ele não está exportando os dados mas sim os metadados.
Dica: Durante a importação, especifique o caminho dos arquivos de dados copiados.
Conclusão
Tomei alguns cuidados para que fique o mais didático possível e um destes cuidados foi aplicar a senha do usuário junto no comando não é o mais recomendado em um ambiente produtivo.
O Oracle Data Pump oferece uma maneira flexível e eficiente de gerenciar exportações de dados. Neste artigo, exploramos:
- Configurações iniciais para preparar o ambiente.
- Os cinco modos de exportação e suas aplicações práticas.
- Exemplos detalhados para ajudá-lo a implementar essas estratégias no seu ambiente Oracle.
Com esses conceitos, você pode otimizar suas operações de administração de dados, fazendo a coisa certa do jeito certo do modo certo garantindo maior controle e eficiência.
Nos próximos artigos, vamos nos aprofundar nos diferentes tipos de exportação, transformando o Data Pump em uma ferramenta indispensável para o seu ambiente Oracle!