Pular para o conteúdo
  • This topic has 12 replies, 2 voices, and was last updated 6 years, 8 months ago by Avatar photoJosé Laurindo Chiappa.
Viewing 13 posts - 1 through 13 (of 13 total)
  • Author
    Posts
  • #109207
    Avatar de acg1574acg1574
    Participant

      Pessoal, estou com um problema aqui que nao consigo resolver, ja tentei de tudo que foi jeito. se alguem ai puder me ajudar fico muito agradecido.
      quando vou fazer um backup com o expdp, ele me da o seguinte erro

      Connected to: Oracle Database 11g Release 11.2.0.4.0 – 64bit Production
      ORA-39001: invalid argument value
      ORA-39000: bad dump file specification
      ORA-31641: unable to create dump file “/backup/winesp/totvs.dmp”
      ORA-27040: file create error, unable to create file
      Linux-x86_64 Error: 22: Invalid argument
      Additional information: 2

      existe a pasta, ja olhei permissoes, esta tudo certo, mas tudo q faço da esse erro. obrigado.

      #109209
      Avatar photoJosé Laurindo Chiappa
      Moderator

        Blz ? Então, antes de te responder uma Obs crítica : *** dump Não é Backup !!! *** , então não chame um dump de BACKUP, sim sim ?? E isso vale para QUALQUER SGBD, https://www.savepoint.blog.br/2010/05/06/dump-nao-e-backup/ lista detalhadamente as Razões exemplificando com Postgre mas é EXATAMENTE O MESMO para Oracle , para SQLSERVER, para db2… DUMP NÃO É BACKUP, simples assim….
        Isso posto, é Claro que vc PODE e DEVE ter, EM CONJUNTO com seu backup REAL e VERDADEIRO, a geração de um dump, como uma medida extra : a Falha seria confiar só no dump, e chamar essa gambi de backup… No seu caso específico, a msg está clara :

        ORA-31641: unable to create dump file “/backup/winesp/totvs.dmp”

        Então o expdp não está conseguindo gravar o arquivo totvs.dmp na pasta /backup/winesp/ , é isso… Para troubleshoot, vc VAI logar no servidor Oracle, com o mesmo usuário que instalou o RDBMS Oracle e o executa (tipicamente esse usuário no Linux se chama oracle mesmo) e :

        a. faça uma VERIFICAÇÃO em /backup/winesp/ pra ver se vc tem espaço livre suficiente – pra isso, digite

        cd /backup/winesp/
        df -k .

        b. peça um ls -lia /backup/winesp e verifique que não existe nenhum arquivo com o mesmo nome do dumpfile e/ou do logfile

        c. permissão no SO : um modo rápido de checar que teu usuário ‘oracle’ consegue criar arquivos na pasta indicada é, logado no servidor como ele, pedir :

        touch /backup/winesp/teste.txt

        d. permissão no DIRECTORY dentro do database Oracle : o datapump EXIGE que, além de ter acesso completo ao mountpoint E as pastas que vc quer gravar, que vc tenha criado um objeto do tipo DIRECTORY no database que vai fazer o expdp – esse DIRECTORY é como se fosse um ‘sinônimo’ para a pasta aonde vc quer gravar, E é ESSE DIRECTORY que vc informa na linha de comando do expdp…
        Pra ver quem é o dono e confirmar que o DIRECTORY está criado, conecte no banco Oracle como SYSDBA e peça um :

        SELECT * FROM DBA_DIRECTORIES;

        ==> se o OWNER (o dono) do DIRECTORY que vc informa pro datapump é o mesmo username com o qual vc conecta no expdp ok : se não for, conecte no banco com o usuário dono do directory e dê permissão de READ e de WRITE no DIRECTORY pro usuário que vc conecta no datapump… Por exemplo, se eu conecto no expdp com o usuário SYSTEM e o DIrectory que quero gravar o dump file é DATA_PUMP_DIR e pertence ao SYS, eu conecto no banco como SYS e peço :

        GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO SYSTEM;

        E é isso … SE nenhuma destas opções te solucionar , CONFIRA que vc logou no Linux e está executando o expdp como usuário ‘dono do oracle’, CONFIRA que as variáveis ORACLE_HOME, ORACLE_SID (se vc não conecta com @hoststring) e PATH estão corretas , E MOSTRE PRA GENTE a linah de comando INTEIRA da chamada do expdp, que vc deve estar passando algum param errado, tem algum caracter inválido, algo neste sentido…

        []s

        Chiappa

        #109212
        Avatar de acg1574acg1574
        Participant

          jlchiappa bom dia.
          entao , isso tudo que vc falou ai em cima ja foi feito, vou lhe passar a linha do export.

          expdp TOTVS directory=BKPESP dumpfile=totvs.dmp logfile=totvs.log exclude=statistics schemas=TOTVS;

          ja sou acostumado a fazer esses dumps, e nunca tinha me deparado com essa situacao, na internet fala muita coisa sobre o assunto, mas nada eu consegui resolver.

          #109213
          Avatar de acg1574acg1574
          Participant

            segue em anexo arquivo permissao oracle.

            #109214
            Avatar de acg1574acg1574
            Participant

              parece que uma resposta minha nao foi, vou mandar os 2 anexos aqui.

              #109215
              Avatar photoJosé Laurindo Chiappa
              Moderator

                Opa : não, normalmente o Forum não deixa vc anexar arquivos : sobe prum site de compartilhamento um arquivo contendo os testes ** TODOS ** que pedi – ie, confirmação que vc está logado no servidor Oracle e tá fazendo o expdp com o usuário dono do Oracle, permissões da pasta NO SERVIDOR, ESPAÇO livre na pasta, evidência da Inexistência de arqs com esses mesmos nomes (tanto o dumpfile quanto o logfile), evidência de que ORACLE_HOME, ORACLE_SID e PATH estão setados (seria echo %variavel% se for Windows, echo $variável se for Linux/Unix), o RESULTADO de um select * from dba_directories conectado como SYSDBA, a execução de um GRANT READ, WRITE ON BKPESP TO TOTVS se esse usuário TOTVS não é o dono do diretório BKPESP, enfim, TUDO o que pedi – e manda a URL pra gente…

                []s

                Chiappa

                #109216
                Avatar photoJosé Laurindo Chiappa
                Moderator

                  E só três detalhes :

                  1. esse ; no final do expdp Não Existe

                  2. no 11g a senha é case-sensitive, tenha CERTEZA que vc está informando a senha correta inclusive maiusc/minusculas

                  3. no Linux para se criar um arquivo além de espaço livre é preciso que haja file handlers disponíveis E que não haja limitações na qtdade/tamanho do arquivo a ser criado : confirme com teu sysadmin Linux que os params de kernel estão OK, que há file handlers disponíveis no SO, etc

                  #109217
                  Avatar de acg1574acg1574
                  Participant

                    entao pessoal, o que acontece, eu compartilhei uma pasta num servidor windows
                    e mapeei ela no linux, no fstab, pra quando eu fizer o expdp ele ja gravar o dump la na pasta do windows, mas pelo jeito ele nao aceitou isso, eu nao tenho espaço no meu servidor oracle (linux) para gerar o expdp, e queria q ele criasse direto no servidor windows, mas, aparentemente ele nao faz isso, tentei criar um link virutal no linux tambem, mas tambem nao funcionou.

                    #109218
                    Avatar de acg1574acg1574
                    Participant

                      se alguem tiver uma outra sugestao agradeço, obrigado.

                      #109219
                      Avatar photoJosé Laurindo Chiappa
                      Moderator

                        Ah, além de TUDO o que foi falado, um QUARTO ponto : super-óbvio imho, nem lembrava dele por achar que isso é coisa básica de config mas de repente vc não o conhece e isso pode te ajudar… O fato é, ao gravar/ler num filesystem Linux, vc pode configurar o RDBMS Oracle para fazer um I/O direto e/ou asíncrono (bypassando journaling e caches do Sistema Operacional, via de regra MUITO mais rápido) através do parâmetro FILESYSTEMIO_OPTIONS , mas isso EXIGE que o filesystem tenha sido Montado com a flag de DIRECT I/O ativa…
                        Conecte no banco como SYSDBA via sqlplus e peça um :

                        show parameter filesystemio_options

                        SE estiver com qquer valor diferente de NONE (ie, O_DIRECT ou SETALL ou ASYNC ou qquer valor diferente de none) o Direct I/O VAI estar Ativado, vc TEM que pedir pro seu sysadmin Linux verificar quais foram as opções de montagem do filesystem onde esse mountpoint /backup reside, E ativar Direct I/O se não estiver….

                        Como TESTE adicional, se estiver diferente de NONE , conectado ainda como SYSDBA no sqlplus manda um :

                        alter system set filesystemio_options=none scope=spfile;

                        E depois restarte o banco (se vc tiver usando spfile, se tiver usando initfile altere o initfile, claro) e re-execute o expdp….

                        []s

                        Chiappa

                        #109220
                        Avatar de acg1574acg1574
                        Participant

                          hummmm , bacana, vou dar uma olhada nisso
                          valew, obrigado.

                          #109221
                          Avatar photoJosé Laurindo Chiappa
                          Moderator

                            Blz… A recomendação então é vc fazer (via linha de comando e via sqlplus) os testes TODOS que foram indicados, obter do sysadmin Linux as confirmações que citei, E vc pode também fazer ainda outro teste adicional que seria criar (nesse mesmo owner TOTVS) um directory apontando pra outro mountpoint num filesystem não-temporário e rodar o expdp com esse directory – se esse último teste funcionar vc Comprovou que é algum problema nesse mountpoint /backup ….
                            Em não funcionando, copia e cola TODOS os testes num arquivo-texto, sobe prum pastebin da vida e nos dá a url, E se funcionar nos diga qual foi o problema, para ficar registrada a solução…

                            []s

                            Chiappa

                            #109223
                            Avatar photoJosé Laurindo Chiappa
                            Moderator

                              E aí, conseguiu ?? Se não, além de mandar todo o material pra gente te ajudar, uma opção final para vc ter um expdp gravando na tua máquina Windows onde vc tem espaço em disco dados que vêm do banco Oracle lá no Linux poderia ser vc instalar uma base Oracle pequenininha qualquer nessa máquina Windows (XE, que seja, qquer coisinha pequena e grátis) e aí criar um DATABASE LINK nessa base Oracle da máquina Windows apontando pra máquina Linux, assim :

                              => na máquina Windows crio um database link, no caso conectando lá no banco Linux com o usuário SYSTEM, que tem as perms pra exportar qquer schema :

                              C:Usersjlchi_000>sqlplus chiappa/oracle

                              SQL*Plus: Release 11.2.0.2.0 Production

                              Conectado a:
                              Oracle Database 11g Express Edition Release 11.2.0.2.0 – 64bit Production

                              CHIAPPA:@XE:SQL>create database link O11G_LINUX connect to SYSTEM identified by oracle using ‘O11G_LINUX’;

                              Vínculo de banco de dados criado.

                              => prova que o dblink está funcionando :

                              CHIAPPA:@XE:SQL>SELECT * FROM SCOTT.DEPT@O11G_LINUX;

                              DEPTNO DNAME LOC
                              ———- ————– ————-
                              33 depto 33
                              10 ACCOUNTING NEW YORK
                              20 RESEARCH DALLAS
                              30 SALES CHICAGO
                              40 OPERATIONS BOSTON

                              CHIAPPA:@XE:SQL>exit
                              Desconectado de Oracle Database 11g Express Edition Release 11.2.0.2.0 – 64bit Production

                              C:Usersjlchi_000>

                              => Agora faço o export :

                              C:Usersjlchi_000>expdp chiappa/minhasenha network_link=O11G_LINUX dumpfile=expdp_scott.dmp logfile=expdp_scott.exp schemas=SCOTT directory=DATA_PUMP_DIR

                              Export: Release 11.2.0.2.0 – Production

                              Conectado a: Oracle Database 11g Express Edition Release 11.2.0.2.0 – 64bit Production
                              Iniciando “CHIAPPA”.”SYS_EXPORT_SCHEMA_01″: system/******** network_link=O11G_LINUX dumpfile=expdp_scott.dmp logfile=expdp_scott.exp schemas=SCOTT directory=DATA_PUMP_DIR
                              Estimativa em andamento com o método BLOCKS…
                              Processando o tipo de objeto SCHEMA_EXPORT/TABLE/TABLE_DATA
                              Estimativa total usando o método de BLOCKS: 95.87 MB
                              Processando o tipo de objeto SCHEMA_EXPORT/USER
                              Processando o tipo de objeto SCHEMA_EXPORT/SYSTEM_GRANT
                              Processando o tipo de objeto SCHEMA_EXPORT/ROLE_GRANT
                              Processando o tipo de objeto SCHEMA_EXPORT/DEFAULT_ROLE
                              Processando o tipo de objeto SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
                              Processando o tipo de objeto SCHEMA_EXPORT/SYNONYM/SYNONYM
                              Processando o tipo de objeto SCHEMA_EXPORT/TYPE/TYPE_SPEC
                              Processando o tipo de objeto SCHEMA_EXPORT/XMLSCHEMA/XMLSCHEMA
                              Processando o tipo de objeto SCHEMA_EXPORT/TABLE/TABLE
                              Processando o tipo de objeto SCHEMA_EXPORT/TABLE/INDEX/INDEX
                              Processando o tipo de objeto SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
                              Processando o tipo de objeto SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
                              Processando o tipo de objeto SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
                              Processando o tipo de objeto SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
                              . . exportou “SCOTT”.”DATA_STAGING_REPOS” 37.02 MB 28 linhas
                              . . exportou “SCOTT”.”BIG_TABLE” 16.49 MB 168621 linhas
                              . . exportou “SCOTT”.”DATA_STAGING_EVO” 10.99 MB 10000 linhas
                              . . exportou “SCOTT”.”DATA_STAGING_OTN” 11.06 MB 10000 linhas
                              . . exportou “SCOTT”.”DATA_STAGING_PTN” 11.02 MB 10000 linhas
                              . . exportou “SCOTT”.”DATA_STAGING_XQY” 10.96 MB 10000 linhas
                              . . exportou “SCOTT”.”STAT_TABLE” 36.78 KB 178 linhas
                              . . exportou “SCOTT”.”DEPT” 5.945 KB 5 linhas
                              . . exportou “SCOTT”.”EMP” 8.562 KB 14 linhas
                              . . exportou “SCOTT”.”SALGRADE” 5.859 KB 5 linhas
                              . . exportou “SCOTT”.”BONUS” 0 KB 0 linhas
                              Tabela-mestre “SYSTEM”.”SYS_EXPORT_SCHEMA_01″ carregada/descarregada com sucesso
                              ******************************************************************************
                              Conjunto de arquivos de dump para SYSTEM.SYS_EXPORT_SCHEMA_01 é:
                              C:ORACLEXEAPPORACLEADMINXEDPDUMPEXPDP_SCOTT.DMP
                              O job “CHIAPPA”.”SYS_EXPORT_SCHEMA_01″ foi concluído com sucesso em 19:07:35

                              C:Usersjlchi_000>

                              ==> taí, os dados do Linux exportados prum dumpfile na máquina Windows :

                              C:Usersjlchi_000>dir C:ORACLEXEAPPORACLEADMINXEDPDUMPEXPDP_SCOTT*.*
                              O volume na unidade C não tem nome.
                              O Número de Série do Volume é 340C-E794

                              Pasta de C:ORACLEXEAPPORACLEADMINXEDPDUMP

                              02/03/2018 19:07 102.842.368 EXPDP_SCOTT.DMP
                              02/03/2018 19:07 2.750 expdp_scott.exp
                              2 arquivo(s) 102.845.118 bytes
                              0 pasta(s) 140.322.643.968 bytes disponíveis

                              C:Usersjlchi_000>

                              []s

                              Chiappa

                              OBS : óbvio ULULANTE, o melhor seria vc BOTAR MAIS ESPAÇO EM DISCO na sua máquina Linux (a qual, até onde entendo, é a sua PRODUÇÂO, afinal de contas!!), e o segundo Melhor seria vc tentar estabelecer comunicação entre o Linux e o WIndows não via share windows (que RECONHECIDAMENTE tem fraquezas) mas sim via NFS – isso implicaria instalar um serviço NFS na máquina Windows mas não vejo grandes probs…
                              Esta opção do expdp via dblink é só SE não tiver outra Alternativa e vc COMPROVAR que os testes e settings todos que indiquei antes não deram certo…

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