- Este tópico contém 13 respostas, 3 vozes e foi atualizado pela última vez 16 anos, 9 meses atrás por
David Siqueira.
-
AutorPosts
-
23 de junho de 2009 às 7:00 pm #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.logAo colocá-lo esse mesmo comando no crontab ele simplesmente não funciona.
Meu ambiente é esse :
SO – Solaris 8
Banco de Dados: 8.0.6Alguem tem alguma idéia do que possa ser
Agradeço a atenção
Att
Marco Aurelio
23 de junho de 2009 às 7:04 pm #87471Anônimo
Pessoal,
Só corrigindo
Meu SO é o Solaris 5.7
23 de junho de 2009 às 8:34 pm #87476David Siqueira
ParticipanteOpa 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.
23 de junho de 2009 às 8:57 pm #87478Anô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
23 de junho de 2009 às 9:21 pm #87479Marcos Braga
ParticipanteOi 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.logA 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
Braga23 de junho de 2009 às 9:46 pm #87481Anô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 êxitoVocê tem alguma ideia do que pode estar ocorrendo.
Abraços
Marco Aurelio
23 de junho de 2009 às 10:36 pm #87482David Siqueira
ParticipanteOpa!..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.
23 de junho de 2009 às 10:43 pm #87483Marcos Braga
ParticipanteOi 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
Braga23 de junho de 2009 às 10:44 pm #87484David Siqueira
ParticipanteSe 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
fiSplits 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=$2Set 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_cleanupecho ´date´ >> $LOGDIR/${ORA_SID}.log
echo "${ORA_SID}, export completed successfully" >> $LOGDIR/${ORA_SID}.log####################### END MAIN ###############################
Abraço!!!!
23 de junho de 2009 às 10:45 pm #87485Marcos Braga
ParticipanteTambé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
Braga23 de junho de 2009 às 10:52 pm #87486Anô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
23 de junho de 2009 às 11:40 pm #87487David Siqueira
ParticipanteOk!…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
23 de junho de 2009 às 11:43 pm #87488Anô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
24 de junho de 2009 às 12:57 am #87490David Siqueira
ParticipanteFico no aguardo Peres.
Abraço!!
-
AutorPosts
- Você deve fazer login para responder a este tópico.