Crontab não executa o scrpit [RESOLVIDO]

1. Crontab não executa o scrpit [RESOLVIDO]

Rafael Trajano de Andrade
RafaTrajano

(usa Red Hat)

Enviado em 03/10/2014 - 18:24h

Olá pessoal, td bom???

Estou com um problema em um agendamento de tarefas (crontab).. Tenho 3 scripts que preciso que sejam executados de forma agendada, quando executo manualmente os scripts eles funcionam, porém, quando crio um crontab para fazer a execução automática desses scripts não acontece simplesmente nada... =\\

Já fiz de tudo pra tentar achar o erro ou forçar de alguma forma a execução dos scripts pela cron.. Mas não encontrei nenhuma forma...

Segue um dos scripts de fiz:

#!/bin/bash
export ORACLE_SID=DWB
v=v\\$instance
data=$(date +%d-%m-%y-%HH-%MM)
echo \" \"
echo \" \"
echo \" \"
echo \"Instancia ativa no sistema: \" $ORACLE_SID
echo \" \"
echo \" \"
echo \" \"
echo \" \"
echo \"Acessando banco de dados...\"
sleep 4
sqlplus / as \"sysdba\" <<EOF
host echo Verificando existencia e status da intancia: $ORACLE_SID;
host sleep 3
select instance_name, status from v\\$instance;
exit
EOF
echo \" \"
echo \" \"
echo \" \"
echo \"Iniciando sessao no RMAN...\"
sleep 5
rman target / log=/u01/logs_rman/log_rman_bkp_level_0_$data.log <<EOF
backup incremental level 0 database;
exit
EOF
echo \" \"
echo \" \"
echo \" \"
echo \"Gerando arquivo de log do backup...\"
sleep 5
echo \" \"
echo \" \"
echo \" \"
echo \"Pasta de destino: /u01/logs_rman/\"
echo \"Arquivo de log: log_rman_bkp_level_0_$data.log\"
echo \" \"
echo \" \"
echo \" \"


Segue cron que criei para fazer um teste:

[oracle@dw.blackscreen.com.br:/u01/scripts_bkp]$ crontab -e

# Cron de teste
30 18 * * * /u01/scripts_bkp/bkp_oracle_level_0.sh
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
:wq

[oracle@dw.blackscreen.com.br:/u01/scripts_bkp]$ crontab -e
no crontab for oracle - using an empty one
crontab: installing new crontab
[oracle@dw.blackscreen.com.br:/u01/scripts_bkp]$

Por favor me ajudem!!!

PS: tentei como root e também não executou.


Grato pela ajuda,

Rafael Trajano.



  


2. Re: Crontab não executa o scrpit [RESOLVIDO]

Adriano Araujo Valumin
xDhii

(usa Ubuntu)

Enviado em 03/10/2014 - 20:43h

Boa noite.
Qual distro você usa?
Poderia anexar ambos os arquivos para mim poder dar uma analisada com calma?
Talvez consiga de ajudar.

Abraços.


3. Re: Crontab não executa o scrpit [RESOLVIDO]

Rafael Trajano de Andrade
RafaTrajano

(usa Red Hat)

Enviado em 03/10/2014 - 21:54h

xDhii escreveu:

Boa noite.
Qual distro você usa?
Poderia anexar ambos os arquivos para mim poder dar uma analisada com calma?
Talvez consiga de ajudar.

Abraços.




Então, a distro é RHEL 5.8 x86_64

Versão de Kernel: 2.6.18-308.el5

Script 1 (responsável por fazer backup level 0 em um banco de dados Oracle 11g R2):

#!/bin/bash
export ORACLE_SID=DWB
v=v\$instance
data=$(date +%d-%m-%y-%HH-%MM)
echo " "
echo " "
echo " "
echo "Instancia ativa no sistema: " $ORACLE_SID
echo " "
echo " "
echo " "
echo " "
echo "Acessando banco de dados..."
sleep 4
sqlplus / as "sysdba" <<EOF
host echo Verificando existencia e status da intancia: $ORACLE_SID;
host sleep 3
select instance_name, status from v\$instance;
exit
EOF
echo " "
echo " "
echo " "
echo "Iniciando sessao no RMAN..."
sleep 5
rman target / log=/u01/logs_rman/log_rman_bkp_level_0_$data.log <<EOF
backup incremental level 0 database;
exit
EOF
echo " "
echo " "
echo " "
echo "Gerando arquivo de log do backup..."
sleep 5
echo " "
echo " "
echo " "
echo "Pasta de destino: /u01/logs_rman/"
echo "Arquivo de log: log_rman_bkp_level_0_$data.log"
echo " "
echo " "
echo " "


Script 2 (responsável por fazer backup incremental level 1 em um banco de dados Oracle 11g R2):

#!/bin/bash
export ORACLE_SID=DWB
v=v\$instance
data=$(date +%d-%m-%y-%HH-%MM)
echo " "
echo " "
echo " "
echo "Instancia ativa no sistema: " $ORACLE_SID
echo " "
echo " "
echo " "
echo " "
echo "Acessando banco de dados..."
sleep 4
sqlplus / as "sysdba" <<EOF
host echo Verificando existencia e status da intancia: $ORACLE_SID;
host sleep 3
select instance_name, status from v\$instance;
exit
EOF
echo " "
echo " "
echo " "
echo "Iniciando sessao no RMAN..."
sleep 5
rman target / log=/u01/logs_rman/log_rman_bkp_level_1_$data.log <<EOF
backup incremental level 1 database;
exit
EOF
echo " "
echo " "
echo " "
echo "Gerando arquivo de log do backup..."
sleep 5
echo " "
echo " "
echo " "
echo "Pasta de destino: /u01/logs_rman/"
echo "Arquivo de log: log_rman_bkp_level_1_$data.log"
echo " "
echo " "
echo " "


Script 3 (responsável por fazer a validação dos backups em caso de recovery em banco de dados Oracle):

#!/bin/bash
export ORACLE_SID=DWB
v=v\$instance
data=$(date +%d-%m-%y-%HH-%MM)
echo " "
echo " "
echo " "
echo "Instancia ativa no sistema: " $ORACLE_SID
echo " "
echo " "
echo " "
echo " "
echo "Validando backup..."
sleep 15
rman target / log=/u01/logs_rman/valida_bkp_$data.log <<EOF
restore database validate;
restore archivelog all validate;
exit
EOF
echo " "
echo " "
echo " "
echo "Pasta de destino: /u01/logs_rman/"
echo "Arquivo de log: valida_bkp_$data.log"
echo " "
echo " "
echo " "


Os scripts se executados manualmente funcionam perfeitamente, mas quando crio um cron pra agendar a execução automática desses scripts a cron não executa os mesmos...

A minha ideia é fazer com que cada script de backup seja executado a cada dois dias..

Exemplo: Domingo executa o script de backup level 0 na segunda executa o de backup incremental level 1 na terça novamente executa o script de backup level 0 e assim sucessivamente, pois, é assim que foi definida a política de backup do banco de dados e a janela de recuperação está apenas para dois dias, ou seja, na terça quando for feito novamente o backup level 0 o backup feito no domingo também level 0 se torna obsoleto sendo então excluído automaticamente pelo Oracle...


O agendamento que eu fiz foi apenas a critério de teste pra ver se funcionaria, mas, não funcionou..


Obrigado,

Rafael


4. Re: Crontab não executa o scrpit [RESOLVIDO]

Fábio Berbert de Paula
fabio

(usa Debian)

Enviado em 04/10/2014 - 09:37h

RafaTrajano escreveu:

$ crontab -e

# Cron de teste
30 18 * * * /u01/scripts_bkp/bkp_oracle_level_0.sh


Duas alternativas:

1. Verificar se o script é executável:

$ ls -lh /u01/scripts_bkp/bkp_oracle_level_0.sh

Se não for, dê um "chmod +x" para torná-lo.


2. (a mais indicada) Adicionar o interpretador antes do comando:


# Cron de teste
30 18 * * * /bin/bash /u01/scripts_bkp/bkp_oracle_level_0.sh



5. Re: Crontab não executa o scrpit [RESOLVIDO]

Rafael Trajano de Andrade
RafaTrajano

(usa Red Hat)

Enviado em 06/10/2014 - 14:56h

fabio escreveu:

RafaTrajano escreveu:

$ crontab -e

# Cron de teste
30 18 * * * /u01/scripts_bkp/bkp_oracle_level_0.sh


Duas alternativas:

1. Verificar se o script é executável:

$ ls -lh /u01/scripts_bkp/bkp_oracle_level_0.sh

Se não for, dê um "chmod +x" para torná-lo.


2. (a mais indicada) Adicionar o interpretador antes do comando:


# Cron de teste
30 18 * * * /bin/bash /u01/scripts_bkp/bkp_oracle_level_0.sh




Cara o script de backup ainda não rodou mesmo fazendo sua alteração, porém, fiz um outro script para testar na cron com a alteração que você indicou...

Segue script:

[root@dw teste]# cat teste.sh
#!/bin/bash

touch /home/oracle/cron_funcionou.txt
[root@dw teste]#

Este script a cron executou sem nenhum problema... Criou o arquivo no diretório /home/oracle/

Não sei porque motivo o script de backup não está funfando quando colocado na cron, porque se ele for executado manualmente ele funciona perfeitamente...



Sabe me dizer o que pode estar acontecendo???



Grato,

Rafael Trajano.


6. Re: Crontab não executa o scrpit [RESOLVIDO]

Rafael Trajano de Andrade
RafaTrajano

(usa Red Hat)

Enviado em 09/10/2014 - 14:21h

Caros,



Consegui localizar o "erro", na verdade dentro do script de backup eu deveria ter adicionado também as variáveis de ambiente do ORACLE...

por exemplo:


#!/bin/bash

export TMP=/tmp
export ORACLE_SID=DWB
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export ORACLE_TERM=xterm
export PATH=$PATH:$ORACLE_HOME/bin:$PATH:$GRID_HOME/bin:/usr/bin:/sbin:/usr/sbin:$ORACLE_HOME/OPatch
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

## É necessário exportar todas essas variáveis de ambiente para que o script funcione corretamente
## dentro da cron, essas variáveis são as mesmas que estão presentes no arquivo .bash_profile do Oracle
## e também presente na documentação de instalação do banco de dados em ambiente linux.

v=v\$instance
data=$(date +%d-%m-%y-%HH-%MM)
echo " "
echo " "
echo " "
echo "Instancia ativa no sistema: " $ORACLE_SID
echo " "
echo " "
echo " "
echo " "
echo "Acessando banco de dados..."
sleep 4
sqlplus / as "sysdba" <<EOF
host echo Verificando existencia e status da intancia: $ORACLE_SID;
host sleep 3
select instance_name, status from v\$instance;
exit
EOF
echo " "
echo " "
echo " "
echo "Iniciando sessao no RMAN..."
sleep 5
rman target / log=/u01/logs_rman/log_rman_bkp_level_0_$data.log <<EOF
backup incremental level 0 database;
exit
EOF
echo " "
echo " "
echo " "
echo "Gerando arquivo de log..."
sleep 5
echo " "
echo " "
echo " "
echo "Pasta de destino: /u01/logs_rman/"
echo "Arquivo de log: log_rman_$data.log"
echo " "
echo " "
echo " "



Obrigado pela força!!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts