Apagando todos objetos de um esquema

É muito comum ter várias aplicações numa única base do Oracle organizadas por esquemas. Se for este o seu caso, você se verá com alguma frequência para migrar um esquema inteiro da base de produção para homologação, do teste para homologação e por aí vai. Exportar os objetos e importar é muito simples, tanto com utilizando o IMP e EXP comuns até a versão 9i como com o Data Pump no 10g em diante:

Com o imp e exp:

Com o data pump:

Bom, até aí não há muito motivo para espanto, é algo trivial. O detalhe é quando você precisa apagar todos os objetos já existentes antes de importar os novos. Para isso, um pouco de SQL sempre ajuda:

É claro que você poderia criar uma função para fazer tudo isso (limpar os objetos e importar o dump) numa tacada só. Mas eu diria que dois comandos SQLs não são motivo para tanto. 🙂

1 comentário

  1. Duarte Responder

    Muito bom. Resolveu, muito bem, um problema muito comum no dia-a-dia.

  2. Alex Responder

    Bah, muito interessante o script. Fácil e eficaz. Resolveu completamente meu problema!

    Parabéns!

  3. Luiz Responder

    Nossa… vc manja muito de oracle para estar escrevendo um artigo heim!!
    Ja pensou em utilizar o comando: DROP USER “usuario” cascade ??

  4. telles Autor do postResponder

    Já pensei sim. Em alguns casos isso é uma boa alternativa. Em outros não. Aqui o objetivo é importar objetos atualizados para o mesmo usuário. Se eu apagar ele, vou ter de recriar com a mesma senha, perfil, permissões e db-links. Já não é tão simples assim.

    Você deveria ser mais cuidadoso ao postar comentários. Sim escrevo artigos há muito tempo. Já passei por muita coisa como DBA. Sei que em alguns momentos escrevo besteira e eu até já me corrigi publicamente. Mas acho que não foi o caso aqui. Não sei se eu manjo muito de Oracle, estou sempre aprendendo coisas novas. Uma coisa que eu aprendi é que temos que conhecer bem nossos limites como DBA. E saber até onde estamos seguros com o que estamos fazendo. Ter ciência dos nossos limites. Quando eu era ainda um DBA Júnior, tomei a decisão mais importante da minha vida como DBA. Avisei que não sabia resolver o problema e chamei uma pessoa mais experiente para ajudar. Isso é o que me torna um bom profissional, entende?

  5. Vinicius Martins Rosa Responder

    Melhor que o artigo foi a resposta que deu ao sabichão acima!
    Parabéns, me ajudou bastante!

    obs.: Eu sei que o artigo é bem antigo, mas só vi o mesmo hoje rs

  6. Antonio Pereira Responder

    Luiz, você é um imbecil! Deveria procurar o melhor ponto turístico de sua cidade e cometer o suicídio lá, sem esquecer, é claro, de evidenciar que o motivo foi esse seu comentário infeliz aqui. Poderia optar também em se retratar publicamente, é claro. Se você não tem capacidade de criar uma vírgula sequer em prol da comunidade, não queira ofuscar o brilho alheio.
    Parabéns, Telles! São pessoas como você que nos orgulha. Tanto pela simplicidade quanto pela disponibilidade em ajudar. Por fim, pela humildade frente aos ataques de pessoas que só pensam em pisar os outros.

  7. Fabio Busnello Responder

    sei que o post é antigo mas vou tentar mesmo assim, com esse comando é só executar o imp novamente?

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *