terça-feira, 20 de dezembro de 2011

Particionando arquivos de exportação no Oracle

O utilitário exp do oracle é muitas vezes utilizado como uma ferramenta auxiliar para estratégias de backup.
Algumas vezes o espaço disponível em um único disco não é suficiente para armazenar todo o conteúdo exportado pelo utilitário, o texto abaixo explica como resolver esta situação e complementa uma dúvida que recebi por e-mail que perguntava como particionar o arquivo de exportação em vários arquivos.
Como exemplo considere que o exp deva gerar um arquivo de 9G e precisaria quebrar em três arquivos de 3G.

Para resolver esta situação utilize os parâmetros file e filesize:

File - relacione os nomes dos três arquivos que devem ser gerados, separados por vírgulas.
Filesize - indique o tamanho máximo dos arquivos que serão gerados.

Exemplo:
   exp usuario/senha file=/tmp/arq01.dmp,/tmp1/arq02.dmp,/tmp2/arq03.dmp log=/tmp/exporta.log filesize=3G

Quando a exportação precisar gerar um quarto arquivo (exportação maior do que 9G), se não estiver previsto no parâmetro file, o utilitário irá solicitar o nome dele na tela.

4 comentários:

  1. Abaixo comentário do Miguel sobre os utilitários expdp e impdp:

    A Oracle recomenda utilizar o expdp e impdp a partir da versão 10.

    O mesmo comando ficaria:

    expdp usuario/senha dumpfile=/tmp/arq%U.dmp log=/tmp/exporta.log filesize=3G

    Isto permitiria criar tantos arquivos qto necessários, chamados arq01, arq02, arq03, arq04, ...

    Cesar Blumm

    ResponderExcluir
  2. select vacinas.designacao, count(*)
    from vacinas, tomas
    where vacinas.id_vacina=tomas.id_vacina
    group by vacinas.id_vacina
    order by designacao;

    ResponderExcluir
  3. select nome
    from enfermeiros
    where
    (select count(*) from enfermeiros)=(select count(*) from tomas where enfermeiros.id_enfermeiro=tomas.id_enfermeiro);

    ResponderExcluir
  4. select enfermeiros.*, count(*)
    from enfermeiros, tomas
    where enfermeiros.id_enfermeiro=tomas.id_enfermeiro
    group by enfermeiros.id_enfermeiro
    having count(*)>=5;

    ResponderExcluir