Pular para o conteúdo
  • This topic has 10 replies, 3 voices, and was last updated 8 years, 1 month ago by Avatar photoJosé Laurindo Chiappa.
Viewing 11 posts - 1 through 11 (of 11 total)
  • Author
    Posts
  • #108430
    Avatar de Edgar Rombesso RisolaEdgar Rombesso Risola
    Participant

      Olá…
      Tenho uma base 10g e uma instancia com 60 schemas, n tabelas, n indeces, n procedures, n views, trigers, funcoes e por ae vai…
      Preciso fazer a exclusão de todos os objetos dessa instancia, exceto os usuários, pois depois irei efetuar um impdp full.
      Tem como?

      #108431
      Avatar de rmanrman
      Participant

        @Edgar Rombesso Risola

        Eu ainda faria assim:


        DROP USER MYSCHEMA01 CASCADE;
        DROP USER MYSCHEMA02 CASCADE;
        DROP USER MYSCHEMA03 CASCADE;
        ...
        DROP USER MYSCHEMA60 CASCADE;

        Não entendi porque não fazer o DROP USER.

        #108432
        Avatar de Edgar Rombesso RisolaEdgar Rombesso Risola
        Participant

          é que estou na duvida…se eu fizer o DROP USER na hora que fizer o impdp do arquivo .dmp se ele irá recriar todos os objetos incluindo o user…pois o expdp foi full…

          #108433
          Avatar de rmanrman
          Participant

            @Edgar Rombesso Risola

            Sim, vai recriar o USER.

            Eu não faria o impdp FULL, eu faria impdp SCHEMAS

            #108434
            Avatar de Edgar Rombesso RisolaEdgar Rombesso Risola
            Participant

              blz..vou tentar esse procedimento…é que são muitos schemas…

              #108435
              Avatar photoJosé Laurindo Chiappa
              Moderator

                Edgar, algumas coisas que podem te ajudar :

                => primeiro, saiba que se vc quiser, o impdp É CAPAZ de RECRIAR os objetos que já existem no bnco-destino, veja a opção REPLACE do comando TABLE_EXISTS_ACTION na Documentação e como exemplo em http://www.acehints.com/2012/05/datapump-impdp-tableexistsaction-append.html – teste direitinho essa opção e veja se isso te ajuda, Evitando a necessidade de dropar antes do import….
                ESSA foi uma das principais melhorias do impdp sobre o imp tradicional…

                => ** SAIBA ** que é *** ROTINA *** no trabalho de administração de um database Oracle vc Automatizar operações repetitivas – NINGUÉM tem tempo e paciência para digitar na munheca dezenas de comandos…. Isso é trabalho de LOUCO MANSO, lento, difícil e Absolutamente propenso ao erro…

                Entre as muitas técnicas para isso, a minha Preferida é a técnica Amiga do DBA inteligente, que é vc gerar um SCRIPT com os comandos através do sqlplus , via comando SPOOL para gravar arquivo e com SELECTs gerando a string dos arquivos.
                Por exemplo, digamos que eu queira dropar todos os usuários exceto o SYS, o SYSTEM e um punhadinho de outros, ao invés de digitar na mão (loucura!!) eu gero os comandos necessários (espertamente!) conectando no sqlplus com um usuário com poder de administrador e digitando :

                set term off feedback off verify off pages 0 lines 500 trimspool on head off
                spool diretoriodesejado/nomedoarquivo.sql
                select ‘DROP USER ‘ || owner || ‘;’
                from dba_users
                where owner not in (‘SYS’, ‘SYSTEM’, ‘demaisusuariosquevcqermanter’)
                order by 1;
                spool off

                aí é só editar o arquivo gravado para conferir a lista, tirar alguma eventual linha em branco, mensagem do sistema ou coisinha assim gerada e executar o script com @diretoriodesejado/nomedoarquivo.sql …. mais fácil que andar pra frente, rápido e simples…
                Nem preciso dizer que se vc quiser automatizar operações em prompt de comando, vc PODE usar a técnica também, basta gerar um (ou até vários, se for o caso) shell script/.BAT/whateverseuSistemaOperacionalpermita com o SPOOL…

                => a idéia de vc fazer vários imports de schema em cima de um dump file FULL faz sentido se vc tem um dump file grande/volumoso e precisa ACELERAR AO MÁXIMO a importação, pois aí vc vai poer abrir múltiplas janelas e ter um import de schema diferente em cada janela, todos rodando ao mesmo tempo : via de regra uma máquina Profissional tem capacidade de I/O, memória e CPU suficientes para isso…
                Nesse caso, , para que o database não reclame de constraints inter-schemas (ie, constraints que usam/referenciam objetos em OUTRO schema afora do que está sendo importado), vc deverá indicar a opção de EXCLUDE de constraints , e aí no fim de tudo vc importa só as constraints que ficaram faltando, E (se houver objetos, sinônimos e/ou programas que referenciam objetos de outros schemas) recompilar tudo…

                => falando de performance há muitas possibilidades (como usar Parallel clause na importação, importar só os dados e depois recriar as constraints com NOVALIDATE – já que OBVIAMENTE os dados já foram validados na origem, imagino!), recriar os índices com parallel ddl…
                Não as vou detalhar todas aqui mas para Grandes Volumes, pode ser interessante as aplicar…

                []s

                Chiappa

                #108436
                Avatar de Edgar Rombesso RisolaEdgar Rombesso Risola
                Participant

                  Legal…eu já estava usando o replace…mas mesmo assim encontrei algumas barreiras na aplicação…
                  a questão de codificar comando repetitivos é legal…e eu ia fazer isso mesmo…mas é que antes de montar o script para isso eu prefiro fazer 1x manualmente e me certificar que irá atender minhas necessidades…pois depois esse procedimento irá se tornar padrão até que eu tenha tempo de implementar algo mais moderno e automatizado…
                  Na verdade o que fiz foi fazer um expdp full de um ambiente de produção e agora quero restaurar ele no ambiente de homologacao…mas ainda tenho encontrado vários erros…mesmo usando o replace…

                  #108437
                  Avatar photoJosé Laurindo Chiappa
                  Moderator

                    Mostra pra gente ** exatamente ** como vc fez o export E o import, bem como as mensagens TODAS, que a gente pode palpitar – tem vários pontos que podem dar diferença quando vc importa dados em outra máquina (o REPLACE só recria objetos/segmentos físicos, e não usuários, nem muda paths para datafiles, por exemplo)…
                    Imagino que vc deve estar caindo num deles, mas só vendo, mostra aí E (importante!!) nos detalha as diferenças (sistema Operacional, hardware, paths, etc) entre a origem e o Destino….

                    []s

                    Chiappa

                    #108440
                    Avatar de Edgar Rombesso RisolaEdgar Rombesso Risola
                    Participant

                      Blz…vou colocar todos os dados e erros

                      #108459
                      Avatar de Edgar Rombesso RisolaEdgar Rombesso Risola
                      Participant

                        expdp system/man1 schemas=acesso directory=bkp dumpfile=acesso.dmp logfile=acess.log content=data_only

                        exp acesso/man1@prod file=access.dmp log=access.log owner=acesso grants=N indexes=N triggers=N constraints=N

                        #108461
                        Avatar photoJosé Laurindo Chiappa
                        Moderator

                          Colega, *** não entendi **** a sua resposta : vc ficou de postar o resultado/erros do import full, vindo de um export full que estava tentando fazer (parafraseando o que vc disse antes , “Na verdade o que fiz foi fazer um expdp full de um ambiente de produção e agora quero restaurar ele no ambiente de homologacao…”), e mostra exports de schemas SEPARADOS ???? Uma coisa é uma coisa e OUTRA COISA é outra coisa – se vc diz uma coisa mas tá fazendo outra, fica mega-difícil te ajudar…..

                          SE vc quer fazer export e import full (para obter Além dos dados o DDL de criação de tablespaces, objetos públicos tais como Sinônimos, constraints inter-schemas, etc) a sintaxe demanda que vc adicione um FULL=Y e ** não ** indique o(s) schema(s)!!!
                          Já ** SE **, ao ** CONTRÁRIO ** do que vc Repetiu diversas vezes na thread, o seu export Não É FULL, mas sim é por schemas, aí sim tá explicado os “erros” que vc diz que recebe , pois export de schema Não Cria (de jeito nenhum, use vc a sintaxe que usar) objetos Públicos, como Sinônimos por exemplo, Não Cria tablespaces, Não Cria constraints que referenciem objetos que residem em outro schema….. E o meu Feeling é que isso Esteja Acontecendo aí, pois (tipicamente) schemas com nomes tipo ‘acesso’, ‘conexão’ ou similares NÂO POSSUEM os objetos, mas sim apenas SINÔNIMOS (ás vezes Públicos) que residem num schema próprio separado, muitas vezes chamado de APP, APP_OWNER, ou coisa assim….

                          Sendo assim, diga o que vc quer (ie, se é um export+import FULL ** ou ** se é de schemas vários) , mostre os erros Exatos que vc está tendo que a gente pode tentar te orientar mais, mas podemos dizer que :

                          => de modo geral, se vc fazer um exp FULL + imp full, as únicas chances de obter erros são se as versões de banco dorem diferentes , os bancos estiverem diferentemente configurados, ou o hardware (principalmente os paths para os datafiles e demais arquivos do banco) for diferente….
                          Não havendo essas diferenças, vc especificando REPLACE e (por via das dúvidas) pedindo um DROP das tablespaces e dos schemas afora SYS/SYSTEM/internos do Oracle já existentes (já que não existe REPLACE para tablespaces) não vejo que tipo de erro vc poderia estar tendo

                          => se por qquer motivo vc, ao contrário do que tinha dito, na verdade precise/queira fazer exps+imps de schemas separados, para vc obter o DDL dos objetos que não estão contidos nos schemas exportados uma opção seria vc fazer um export FULL=Y CONTENT=METADATA_ONLY além dos exports de schemas, aí vc depois importa só os sinônimos, tablespaces e demais objetos não pertencentes aos schemas exportados….

                          []s

                          Chiappa

                        Viewing 11 posts - 1 through 11 (of 11 total)
                        • You must be logged in to reply to this topic.
                        plugins premium WordPress