[cron_recover.sh]
-------------------------------------------------------------
#!/bin/sh
DIRNM="/u01/app/oracle/oradata"
$DIRNM/recover.sh aaa
if [ "$?" -ne "0" ]; then
echo "Oracle Srv's recover process was failed. SCHG" | mail -s "Recover Error(aaa)" test1@mail.com,test2@mail.com
fi
$DIRNM/recover.sh bbb
if [ "$?" -ne "0" ]; then
echo "Oracle Srv's recover process was failed. SCHG_INFO" | mail -s "Recover Error(bbb)" test1@mail.com,test2@mail.com
fi
exit 0
-------------------------------------------------------------
[recover.sh]
-------------------------------------------------------------
#!/bin/sh
if [ $# -ne 1 ]; then
exit 1
fi
# expdp
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1
export ORACLE_SID=sis
export LANG="ja_JP.UTF-8"
export NLS_LANG="Japanese_Japan.AL32UTF8"
#DATETIME=`date +%Y%m%d%H%M%S`
#CURRENT_DATE=`date +%Y%m%d`
if [ $1 == "aaa" ]; then
FILENM="${1}_2*"
else
FILENM="${1}*"
fi
DMPEXT=".dmp"
LOGEXT=".log"
mountpoint -q /mnt/share
CHK_MOUNT=$?
if [ $CHK_MOUNT -ne 0 ] ; then
mount 192.168.1.xx:/volume1/IT/BK_Folder /mnt/share
mountpoint -q /mnt/share
CHK_MOUNT=$?
if [ $CHK_MOUNT -ne 0 ] ; then
echo "mount shippai"
exit 1
fi
fi
cd /mnt/share/
DMP=`ls -rt $FILENM$DMPEXT | tail -n 1`
cp -rp "/mnt/share/${DMP}" "/u01/app/oracle/oradata/"
cd /u01/app/oracle/oradata
umount -l /mnt/share
DMP=`ls -rt $FILENM$DMPEXT | tail -n 1`
LOG=$DMP$LOGEXT
su -oracle -c `${ORACLE_HOME}/bin/impdp system/abc\$\@hkschg DIRECTORY=ORA_DATA DUMPFILE=${DMP} CONTENT=DATA_ONLY TABLE_EXISTS_ACTION=TRUNCATE LOGFILE=${LOG}`
echo "Recover report for text DB server(xxx)" | mail -a ${LOG} -s "Recover report(xxx)" test1@mail.com,test2@mail.com
#remove todays old data
find $ORACLE_BASE/oradata/ -name $DMP -delete
#remove log files 10 days ago
find $ORACLE_BASE/oradata/ -type f -name "aaa_*.log" -mtime +10 -delete
#find $ORACLE_BASE/oradata/ -type f -name "IMPORT_*.log" -mtime +30 | xargs rm -f
exit 0
-------------------------------------------------------------
[Auto Run]
-------------------------------------------------------------
# crontab -e
30 3 * * * /u01/app/oracle/oradata/cron_recover.sh
# systemctl restart crond
-------------------------------------------------------------