Artigo no estilo Mentoring
Mentoring:Existem diversas razões pelas quais será necessária a extração de grande volume de dados, a principal e muito utilizada é para backup. No entanto, existem diversas outras, como salvar arquivos históricos antes de serem removidos, atualização de ambientes DW (Data Warehouse), atualizar ambientes de desenvolvimento de homologação e afins. O artigo expõe conceitos e práticas de uso do utilitário Oracle Data Pump Export (EXPDP) e Data Pump Import (IMPDP) na atualização de schemas, geração de backup e outros em servidores demonstrativos de produção, homologação e desenvolvimento. O artigo é muito útil para entender melhor sobre os conceitos de exportação e importação de dados no Oracle e conhecer, na prática, alguma das possibilidades de utilização dessa ferramenta, que é bastante útil no dia a dia de um DBA.

No curso normal dos eventos em um banco de dados, os comandos DMLs (INSERT, UPDATE e DELETE) e SELECT são utilizados para extrair e inserir dados no banco de dados, porém há situações em que será necessário um método muito mais rápido e eficiente para realizar operações de grande volume.

Antes da versão Oracle 10g, era utilizado o utilitário export e import, que realizava a extração/importação dos dados como um processo de usuário no sistema operacional, usando uma sessão para recuperar os dados e transformá-los em arquivos, para depois salvá-los no sistema operacional.

Após a chegada da versão Oracle 10g, o utilitário padrão passou a ser o Oracle Data Pump usando os clientes expdp e impdp, que rodam como um processo de servidor. Isso melhora consideravelmente o desempenho da extração e importação de dados, pois, por ser um processo de servidor, o acesso aos arquivos de dados e a SGA serão diretos, não sendo mais necessário recuperar os mesmos através de uma sessão como era realizado nos utilitários anteriores.

O Oracle Data Pump é também base para muitos outros recursos-chave no banco de dados Oracle, como AWR, replicação Streams-Based, Logical Standby, Grid e em tablespaces transportáveis (Transportable tablespace). No entanto, não é o objetivo deste artigo detalhar cada um desses recursos.

Além do ganho em performance, os utilitários expdp e impdp trouxeram ganho na administração. É possível gerenciar o andamento de vários jobs se conectando a eles através de um usuário e senha que foram utilizados na execução da rotina ou com algum usuário que tenha os privilégios necessários para administrar o job.

Após conectado a um determinado job, o mesmo poderá ser consultado, pausado, reiniciado, interrompido, ou até mesmo ter alguns parâmetros alterados. Iremos realizar a administração de um job mais adiante.

Quando um job do Data Pump é iniciado, ao menos dois processos se iniciam: um processo Data Pump Master (DMnn) e um ou mais processos Worker (DWnn). Como o nome sugere, o processo mestre irá controlar os outros processos workers. Se for utilizado paralelismo, cada DWnn poderá fazer uso de dois ou mais servidores de execução paralela (Pnnn). O processo interno do Oracle Data Pump não é o escopo desse artigo, sendo assim, não entraremos em mais detalhes referentes ao funcionamento interno do utilitário.

Modos de exportação usando Oracle Data Pump

O Oracle Data Pump possui alguns modos específicos de exportação de dados que podem ser especificados na linha de comando ou usando o arquivo de parâmetros. Os modos que estão disponíveis para o Data Pump Export são:

  • "FULL EXPORT MODE";
  • "SCHEMA MODE";
  • "TABLE MODE";
  • "TABLESPACE MODE";
  • "TRANSPORTABLE TABLESPACE MODE".

Neste artigo iremos utilizar alguns desses modos, os demais poderão ser consultados na documentação de referência da Oracle 11gR2.

O modo "FULL EXPORT MODE" equivale à exportação completa do banco de dados, todos os dados e meta dados que estiverem no banco de dados, sendo uma exportação de todos os schemas e objetos presentes no banco. Para a execução do Data Pump Export nesse nível, é necessário que o usuário que estiver executando a rotina de exportação tenha o privilégio DATA PUMP_EXP_FULL_DATABASE.

O modo de exportação por schema, "SCHEMA MODE", ocorre quando é especificado o parâmetro schemas e equivale à exportação específica de alguns determinados que forem especificados na linha de comando ou através dos arquivos de parâmetro. Esse modo é o padrão, sendo necessário ter o privilégio DATA PUMP_EXP_FULL_DATABASE para então poder especificar uma lista de schemas a serem exportados.

Se o usuário utilizado na execução da rotina não tiver os privilégios necessários para exportação completa (FULL) do banco de dados, o mesmo poderá somente exportar seu próprio schema.

Objetos que estejam cruzados entre schemas, como uma trigger que está habilitada para uma tabela residente em um determinado schema, mas que pertence a outro que não for especificado no momento da exportação, não serão exportados. A menos que o schema em que o objeto pertence esteja ou seja adicionado na lista dos exportados. É possível especificar todos eles da lista um a um ou através do parâmetro "FULL", o qual irá exportá-los no banco, exceto se houver alguma restrição utilizada com o parâmetro EXCLUDE.

O modo de exportação conhecido como “TABLE MODE” é especificado utilizando o parâmetro TABLES. Nesse modo, somente aquelas tabelas que forem especificadas serão exportadas além de outros objetos pertencentes ao schema em questão. Para utilização desse modo, também é necessário que o usuário tenha o privilégio DATA PUMP_EXP_FULL_DATABASE para exportar tabelas que não estejam no próprio schema, caso contrário, o usuário poderá export ...

Quer ler esse conteúdo completo? Tenha acesso completo