LINUX.ORG.RU

AIX crontab DB2 backup

 , ,


0

2

Есть задача по резервированию БД под AIX. Из под пользователя db2inst1 при помощи crontab -e завел 2 задачи. 2 скрипта bash один резервирует БД online, с ним все в порядке. Второй резервирует БД-x offline. С ним как раз проблема в логе пишет (т.е. почему-то выполняется из под root):

Date is: 2016-05-23:01:00:00
------DB SMDB  is being backed up  on: 2016-05-23:01:00:05 -----
   Database Connection Information
 Database server        = DB2/AIX64 9.7.7
 SQL authorization ID   = ROOT
 Local database alias   = SMDB
SQL1092N  "ROOT" does not have the authority to perform the requested command 
or operation.
DB20000I  The TERMINATE command completed successfully.
db2 backup database SMDB to /dbbackup/db without prompting
SQL1092N  "ROOT" does not have the authority to perform the requested command 
or operation.

Сам скрипт offline_bkp.sh

#!/bin/bash
#set -x
BACKUPDIR=/dbbackup/db
LOGDIR=/LOG
DATE=/$(date +%d%m%Y)
BACKUPILES=$BACKUPDIR/*
LOGFILE=$BACKUPDIR$LOGDIR$DATE.offline.log
DBLIST=("SMDB")

touch  $LOGFILE
echo Date is: `date +%Y-%m-%d:%H:%M:%S` >$LOGFILE
for index in ${!DBLIST[*]}
do
	 echo "------DB ${DBLIST[$index]}  is being backed up  on:" `date +%Y-%m-%d:%H:%M:%S` "-----" >> $LOGFILE
 /opt/IBM/db2/v9.7/bin/db2 connect to ${DBLIST[$index]} >> $LOGFILE
 /opt/IBM/db2/v9.7/bin/db2 quiesce database immediate force connections >> $LOGFILE
 /opt/IBM/db2/v9.7/bin/db2 terminate >> $LOGFILE

echo  db2 backup database ${DBLIST[$index]} to $BACKUPDIR without prompting >> $LOGFILE
 /opt/IBM/db2/v9.7/bin/db2 backup database ${DBLIST[$index]} to $BACKUPDIR without prompting >> $LOGFILE

 /opt/IBM/db2/v9.7/bin/db2 connect to ${DBLIST[$index]} >>$LOGFILE
 /opt/IBM/db2/v9.7/bin/db2 unquiesce database >>$LOGFILE
 /opt/IBM/db2/v9.7/bin/db2 terminate >>$LOGFILE
         echo "------DB ${DBLIST[$index]}  is end backed up on date:" `date +%Y-%m-%d:%H:%M:%S` " ------" >> $LOGFILE
done
#set +x

Настройка crontab (из под пользователя db2inst1):

bash-4.2$ crontab -l
10 0 * * * /home/db2inst1/scripts/offline_bkp.sh
30 0 * * * /home/db2inst1/scripts/online_bkp.sh

Переменные окружения при запуске из cron и «просто из консоли» различаются. Например $HOME из cron'a может указывать на /, а это хомедир рута

futurama ★★★★★ ()
Ответ на: комментарий от futurama

то что переменные окружения при запуске cron съедаются это я уже понял, поэтому прописал везде абсолютные пути до исполняемого файла и файлов архивных копий и журнальных. Вопрос в том том что водном случае он выполняет все из под правильного пользователя а в другом нет.

crocorus ()
Ответ на: комментарий от anonymous

Дак вот же он :)

#!/bin/bash
#set -x
BACKUPDIR=/dbbackup/db
LOGDIR=/LOG
DATE=/$(date +%d%m%Y)
BACKUPILES=$BACKUPDIR/*
LOGFILE=$BACKUPDIR$LOGDIR$DATE.online.log
DBLIST=("DB1" "DB2" "DB3" "DB4")


touch  $LOGFILE
echo Date is: `date +%Y-%m-%d:%H:%M:%S` >$LOGFILE

for index in ${!DBLIST[*]}
do
   whoami >> $LOGFILE
   echo "------DB ${DBLIST[$index]}  is being backed up  on:" `date +%Y-%m-%d:%H:%M:%S` "-----" >> $LOGFILE
   #echo "db2 backup database" ${DBLIST[$index]} "online to " $BACKUPDIR "compress include logs" 
   /opt/IBM/db2/v9.7/bin/db2 connect to ${DBLIST[$index]} >> $LOGFILE
   echo "db2 backup database" ${DBLIST[$index]} "online to " $BACKUPDIR "compress include logs" >>$LOGFILE
   /opt/IBM/db2/v9.7/bin/db2 backup database ${DBLIST[$index]} online to  $BACKUPDIR compress include logs  >> $LOGFILE
   echo "------DB ${DBLIST[$index]}  is END  backed up on:" `date +%Y-%m-%d:%H:%M:%S` "-----" >> $LOGFILE
done

#set +x

crocorus ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.