Eu tenho algumas máquinas Linux e cada uma delas tem alguns bancos de dados Oracle. Em cada máquina temos 2 shell scripts para executar os backups. O planejador do TSM chama um script que chama um script de backup diferente para cada banco de dados na máquina.
O problema é que, se eu criar uma matriz de SIDs e criar um loop pelos SIDs, o backup falhará.
#!/bin/bash
LEVEL="$1"
declare -a SIDS=('SID1' 'SID2' 'SID3')
su - oracle
for SID in ${SIDS[@]}
do
ORACLE_SID=$SID; export ORACLE_SID
export ORACLE_HOME='/u01/app/oracle/product/10.2.0.2'
ORAENV_ASK=NO
. /usr/local/bin/oraenv
LD_LIBRARY_PATH=$ORACLE_HOME/lib; export LD_LIBRARY_PATH
/usr/local/adm/backup-incrn.sh $LEVEL $SID 35
done
Não há erro nos Logs no servidor TSM e é quase como se os scripts nunca fossem chamados. Os logs que estão na máquina não são atualizados com nenhuma mensagem de erro.
Se eu usar essa sintaxe os backups funcionarão perfeitamente
su - oracle -c "/usr/local/adm/backup-incrn.sh $LEVEL SID1 35"
su - oracle -c "/usr/local/adm/backup-incrn.sh $LEVEL SID2 35"
Acho que deve ser um erro no meu script, alguma variável não sendo configurada corretamente.
Alguém pode ver o erro óbvio que cometi e apontá-lo para mim?
Gisli