Pular para o conteúdo
  • Este tópico contém 13 respostas, 3 vozes e foi atualizado pela última vez 16 anos, 9 meses atrás por David Siqueira.
Visualizando 14 posts - 1 até 14 (de 14 do total)
  • Autor
    Posts
  • #87470
    Anônimo

      Ola pessoal

      Estou tendo um problema em relação ao exp na versão 8.0.6, acontece o seguinte :

      Quando rodo o comando exp abaixo via prompt ele roda direitinho, o problema é que ao colocá-lo no crontab ele não funciona, segue o comando exp abaixo :

      exp system/manager full=y file=>(split -b 1536m – /hotbackup/logico/pmc_bkplogico.dmp-) log=/hotbackup/logico/pmc
      _bkplogico.log feedback=1000000 buffer=5000000 >> /hotbackup/log.log

      Ao colocá-lo esse mesmo comando no crontab ele simplesmente não funciona.

      Meu ambiente é esse :

      SO – Solaris 8
      Banco de Dados: 8.0.6

      Alguem tem alguma idéia do que possa ser

      Agradeço a atenção

      Att

      Marco Aurelio

      #87471
      Anônimo

        Pessoal,

        Só corrigindo

        Meu SO é o Solaris 5.7

        #87476
        David Siqueira
        Participante

          Opa e ai parceiro?
          Tu já experimentou colocar toda essa linha de comando dentro de um arquivo SHELL e agendar esse arquivo SHELL no seu CRONTAB?

          Abraço.

          #87478
          Anônimo

            Ola David

            Obrigado pela sua atenção.

            Eu executei esse comando via SHELL, entrentanto o ocorreu um erro diferente do vinha ocorrendo, vou te postar o erro abaixo pra ver se você tem alguma ideía do pode ser.

            . /export/home/oracle/Backup_diario/logico.sh

            produced the following output:

            sh: syntax error at line 8: `(‘ unexpected

            Lembrando que executando o comando no prompt ele executa sem problemas.

            Abraços

            Marco Aurelio

            #87479
            Marcos Braga
            Participante

              Oi Marco,

              Seguinte, pelo que observei, o shell está interpretando os parênteses.

              Tenta efetuar a seguinte alteração na linha de comando dentro do teu script:

              exp system/manager full=y file=>(split -b 1536m – /hotbackup/logico/pmc_bkplogico.dmp-) log=/hotbackup/logico/pmc
              _bkplogico.log feedback=1000000 buffer=5000000 >> /hotbackup/log.log

              A barra invertida (“”) que inseri antes dos parênteses informam ao shell que o próximo caracter é literal, portanto o shell não tenta interpretá-lo.

              Também indicaria tratar o sinal de maior “>”, se ocorrer um erro parecido, mostrando esse caracter. Pode fazer o seguinte então:

              exp system/manager full=y file=>(split -b 1536m – /hotbackup/logico/pmc_bkplogico.dmp-) log=/hotbackup/logico/pmc
              _bkplogico.log feedback=1000000 buffer=5000000 >> /hotbackup/log.log

              (OBS.: o último “>>” não comentei porque ele é realmente isso e não faz parte do comando oracle).

              Creio que esses procedimentos irão lhe ajudar.

              []s
              Braga

              #87481
              Anônimo

                Ola camarada

                Obrigado pela sua dica.

                Executei o comendo conforme você me orientou, entratanto ainda ocorre erro, embora seja um outro tipo de erro, estou reportando abaixo o comando utilizado e o erro.

                echo|$ORACLE_HOME/bin/exp system/manager full=y file=>(split -b 1536m – /hotbackup/logico/pmc_bkplogico.dmp-) log=/hotbackup/logico/pmc_bkplogico.log feedback=1000000 buffer=5000000 >> /hotbackup/log.log

                o erro ocorrido apoós executar o comando é esse:
                LRM-00101: unknown parameter name ‘b’

                EXP-00019: falha ao processar parâmetros; digite ‘EXP HELP=Y’ para obter ajuda
                EXP-00000: Exportação encerrada sem êxito

                Você tem alguma ideia do que pode estar ocorrendo.

                Abraços

                Marco Aurelio

                #87482
                David Siqueira
                Participante

                  Opa!..deixa eu te fazer uma pergunta..
                  Esse sinal de “>”, que você usa é para que?

                  Você esta querendo delimitar o tamanho dos seus arquivos de DUMP? Se for isso , porque você não usa o parametro FILESIZE existente nas opções de EXPORT, com isso serão gerados “N” arquivos de DUMP com o tamanho determinado por você.

                  Abraço.

                  #87483
                  Marcos Braga
                  Participante

                    Oi Marco Aurelio,

                    Creio que sei sim o que é.

                    O shell está interpretando também o sinal de “-“.

                    Efetua essa alteração:

                    exp system/manager full=y file=>(split -b 1536m – /hotbackup/logico/pmc_bkplogico.dmp-) log=/hotbackup/logico/pmc_bkplogico.log feedback=1000000 buffer=5000000 >> /hotbackup/log.log

                    Observe que dentro do parênteses é necessário comentar qualquer caracter que o shell possa interpretar. Foi o que fiz.

                    Observe se funciona agora.

                    []s
                    Braga

                    #87484
                    David Siqueira
                    Participante

                      Se a sua idéia é fazer um SPLIT mesmo , eis aqui o script retirado dessa fonte :

                      [url]http://www.informit.com/articles/article.aspx?p=30348&seqNum=3
                      [/url]

                      Listing 3.6 splitZxport_ux
                      ######################################################################

                      PROGRAM NAME: splitZxport_ux

                      #

                      PURPOSE: Performs export of the database

                      Compresses the export file on the fly while splitting.

                      Useful if the size of export file goes beyond 2GB

                      USAGE: $splitZxport_ux SID OWNER

                      INPUT PARAMETERS: SID(Instance name), OWNER(Owner of instance)

                      ######################################################################

                      #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

                      funct_verify(): Verify that database is online

                      #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

                      funct_verify(){
                      STATUS=´ps -fu ${ORA_OWNER} |grep -v grep| grep ora_pmon_${ORA_SID}´
                      funct_chk_unix_command_status "Database is down for given SID($ORA_SID),
                      Owner($ORA_OWNER). Can't perform export "
                      }

                      #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

                      funct_cleanup(): Cleanup interim files

                      #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

                      funct_cleanup() {
                      rm –f ${PIPE_DEVICE}
                      rm –f ${SPLIT_PIPE_DEVICE}
                      }

                      #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

                      funct_splitcompress_pipe(): Creates pipe for compressing and

                      splitting of file
                      #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

                      funct_splitcompress_pipe() {

                      Creates pipe for compressing

                      if [ ! -r ${PIPE_DEVICE} ]; then
                      /etc/mknod ${PIPE_DEVICE} p
                      fi

                      #Creates pipe for splitting
                      if [ ! -r ${SPLIT_PIPE_DEVICE} ]; then
                      /etc/mknod ${SPLIT_PIPE_DEVICE} p
                      fi

                      Splits the file for every 500MB

                      As it splits it adds aa,bb,cc ... zz to the name

                      nohup split -b1000m - ${ZFILE} < ${SPLIT_PIPE_DEVICE} &
                      nohup compress ${SPLIT_PIPE_DEVICE} &
                      }

                      #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

                      funct_build_parfile(): Creates parameter file

                      #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

                      funct_build_parfile() {

                      This line makes sure that it always creates a new parameter file

                      echo " " >${PARFILE}
                      echo "userid=system/manager">>${PARFILE}
                      echo "Full=Y">>${PARFILE}
                      #echo "tables=scott.t1">>${PARFILE}
                      echo "Grants=Y">>${PARFILE}
                      echo "Indexes=Y">>${PARFILE}
                      echo "Rows=Y">>${PARFILE}
                      echo "Constraints=Y">>${PARFILE}
                      echo "Compress=N">>${PARFILE}
                      echo "Consistent=Y">>${PARFILE}
                      echo "File=${PIPE_DEVICE}">>${PARFILE}
                      echo "Log=${EXPORT_DIR}/${ORA_SID}.exp.log">>${PARFILE}
                      }

                      #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

                      funct_export(): Export the database

                      #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

                      funct_export() {

                      Remove old export file

                      rm -f ${ZFILE}

                      ${ORACLE_HOME}/bin/exp parfile=${PARFILE}
                      if [ $? != 0 ]; then
                      echo ´date´ >> $LOGDIR/${ORA_SID}.log
                      echo "EXPORT_FAIL: ${ORA_SID}, Export Failed" >> $LOGDIR/${ORA_SID}.log
                      funct_cleanup
                      exit 1
                      fi
                      }

                      #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

                      funct_chk_parm(): Check for input parameters

                      #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

                      funct_chk_parm() {
                      if [ ${NARG} -ne 2 ]; then
                      echo "EXPORT_FAIL: ${ORA_SID}, Not enough arguments passed"
                      exit 1
                      fi
                      }

                      #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

                      funct_chk_bkup_dir(): Create backup directories if not already existing

                      #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

                      funct_chk_bkup_dir() {
                      EXPORT_DIR=${BACKUPDIR}
                      if [ ! -d ${EXPORT_DIR} ]; then mkdir -p ${EXPORT_DIR}; fi
                      if [ ! -d ${DYN_DIR} ]; then mkdir -p ${DYN_DIR}; fi
                      if [ ! -d ${LOGDIR} ]; then mkdir -p ${LOGDIR}; fi
                      ZFILE="${EXPORT_DIR}/${ORA_SID}.dmp.Z"
                      }

                      #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

                      funct_get_vars(): Get environment variables

                      #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

                      funct_get_vars(){
                      ORA_HOME=´sed /#/d ${ORATABDIR}|grep -i ${ORA_SID}|nawk -F ":" '{print $2}'´
                      ORA_BASE=´echo ${ORA_HOME}|nawk -F "/" '{for (i=2; i> ${LOGDIR}/${ORA_SID}.log
                      echo "EXPORT_FAIL: ${1} " >> ${LOGDIR}/${ORA_SID}.log
                      exit 1
                      fi
                      }

                      #######################################

                      MAIN

                      #######################################

                      NARG=$#
                      ORA_SID=$1
                      ORA_OWNER=$2

                      Set up environment

                      BACKUPDIR="/u02/${ORA_SID}/export"
                      ORATABDIR=/etc/oratab
                      TOOLS="/u01/oracomn/admin/my_dba"

                      DYN_DIR="${TOOLS}/DYN_FILES"
                      PARFILE="${DYN_DIR}/export.par"
                      LOGDIR="${TOOLS}/localog"

                      PIPE_DEVICE="/tmp/export_${ORA_SID}pipe"
                      SPLIT_PIPE_DEVICE="/tmp/split
                      ${ORA_SID}_pipe"

                      echo "... Now exporting .... ${ORA_SID}"

                      funct_chk_parm
                      funct_get_vars
                      funct_verify
                      funct_chk_bkup_dir
                      funct_splitcompress_pipe
                      funct_build_parfile
                      funct_export
                      funct_cleanup
                      

                      echo ´date´ >> $LOGDIR/${ORA_SID}.log
                      echo "${ORA_SID}, export completed successfully" >> $LOGDIR/${ORA_SID}.log

                      ####################### END MAIN ###############################

                      Abraço!!!!

                      #87485
                      Marcos Braga
                      Participante

                        Também concordo com o Ricardo no sentido de usar o parâmetro do exp para limitar o tamanho dos arquivos, não precisando assim, efetuar o “split” que está efetuando.

                        []s
                        Braga

                        #87486
                        Anônimo

                          Eu não uso o paramtero filesize por que na versão do oracle que tenho (Oracle8 Enterprise Edition Release 8.0.6.1.0 – Production) não existe esse parametro, em virtude disso, precisei usar o split e quanto ao sinal de > foi o que achei recomendado para uso do split.

                          Abraços

                          Marco Aurelio

                          #87487
                          David Siqueira
                          Participante

                            Ok!…faz tempo que não uso essa release, não sabia dizer com exatidão se tinha ou não, portanto use o script que passei, acredito que ele atenda as suas exigencias…

                            Abraço

                            #87488
                            Anônimo

                              Ola David

                              Muito obrigado pela sua ajuda, vou usar o script que você me postou, valeu mesmo, eu te informo se consegui, ok

                              Abraços

                              Marco Aurelio

                              #87490
                              David Siqueira
                              Participante

                                Fico no aguardo Peres.

                                Abraço!!

                              Visualizando 14 posts - 1 até 14 (de 14 do total)
                              • Você deve fazer login para responder a este tópico.