Linux系統中Oracle自動備份方案

來源:互聯網
上載者:User

Linux系統中Oracle自動備份方案

作為DBA,每次全庫備份幾乎都要等別人不用資料庫的時候才可以進行(我知道還有其他方式,本文暫時只考慮export),通過下面2部分的就可以輕鬆實現半夜無值守備份啦。

Linux export 命令

 

第一部分:編寫Oracle備份shell指令碼(分常規方式和資料泵方式,根據需要選擇一種,建立shell指令檔:autobackup.sh)
/********************************exp常規方式的shell指令碼部分*********************************/
#! /bin/sh
#set environment variable
export  LANG="en_US.UTF-8"
export NLS_LANG="Simplified Chinese_china".ZHS16GBK
export ORACLE_BASE=/home/app/oracle
export ORACLE_HOME=/home/app/oracle/product/11.2.3/db_1
export ORACLE_SID="YAGDB"
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
#set backupfile format
backuptime=`date +"%Y%m%d"`
#remove overdue backup--刪除曆史備份,此處根據需要保留或去除
deletetime=`date -d "1 week ago" +"%Y%m%d"`
rm -rf /data/AUTOBACKUP/YAGDBBAK$deletetime
#backup start
cd /data/AUTOBACKUP
mkdir /data/AUTOBACKUP/YAGDBBAK$backuptime
touch /data/AUTOBACKUP/YAGDBBAK$backuptime/FMIS9999_EXP.dmp
touch /data/AUTOBACKUP/YAGDBBAK$backuptime/FMIS9999_EXP.log
touch /data/AUTOBACKUP/YAGDBBAK$backuptime/FMISTMP_EXP.dmp
touch /data/AUTOBACKUP/YAGDBBAK$backuptime/FMISTMP_EXP.log
touch /data/AUTOBACKUP/YAGDBBAK$backuptime/ODS_EXP.dmp
touch /data/AUTOBACKUP/YAGDBBAK$backuptime/ODS_EXP.log
chmod 777 /data/AUTOBACKUP/*.*
chmod 777 /data/AUTOBACKUP/YAGDBBAK$backuptime
chmod 777 /data/AUTOBACKUP/YAGDBBAK$backuptime/*.*
exp 'FMIS9999/FMIS9999@10.51.11.150/YAGDB' file=/data/AUTOBACKUP/YAGDBBAK$backuptime/FMIS9999_EXP.dmp log=/data/AUTOBACKUP/YAGDBBAK$backuptime/FMIS9999_EXP.log owner=FMIS9999 statistics=NONE
exp 'FMIS9999/FMIS9999@10.51.11.150/YAGDB' file=/data/AUTOBACKUP/YAGDBBAK$backuptime/FMISTMP_EXP.dmp log=/data/AUTOBACKUP/YAGDBBAK$backuptime/FMISTMP_EXP.log owner=FMISTMP statistics=NONE
exp 'FMIS9999/FMIS9999@10.51.11.150/YAGDB' file=/data/AUTOBACKUP/YAGDBBAK$backuptime/ODS_EXP.dmp log=/data/AUTOBACKUP/YAGDBBAK$backuptime/ODS_EXP.log owner=ODS sTatistics=NONE


/******************************expdp資料泵方式的shell指令碼部分******************************/
#! /bin/sh
#set environment variable
export  LANG="en_US.UTF-8"
export NLS_LANG="Simplified Chinese_china".ZHS16GBK
export ORACLE_BASE=/home/app/oracle
export ORACLE_HOME=/home/app/oracle/product/11.2.3/db_1
export ORACLE_SID="YAGDB"
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
#set backupfile format
backuptime=`date +"%Y%m%d"`
# remove overdue backup--刪除曆史備份,此處根據需要保留或去除
deletetime=`date -d "1 week ago" +"%Y%m%d"`
rm -rf /data/AUTOBACKUP/YAGDBBAK$deletetime
#backup start
cd /data/AUTOBACKUP
# create pump forder
mkdir /data/AUTOBACKUP/YAGDBBAK$backuptime
# enduing policy with pump forder
chmod 777 /data/AUTOBACKUP/*.*
chmod 777 /data/AUTOBACKUP/YAGDBBAK$backuptime
# expdp command
expdp 'FMIS9999/FMIS9999@10.51.11.150/YAGDB' directory=dump_dir dumpfile=FMIS9999_EXP.dmp logfile=FMIS9999exp.log schemas=FMIS9999 exclude=statistics
expdp 'FMIS9999/FMIS9999@10.51.11.150/YAGDB' directory=dump_dir dumpfile=FMISTMP_EXP.dmp logfile=FMISTMPexp.log schemas=FMISTMP exclude=statistics
expdp 'FMIS9999/FMIS9999@10.51.11.150/YAGDB' directory=dump_dir dumpfile=ODS_EXP.dmp logfile=ODSexp.log schemas=ODS exclude=statistics

#註:資料泵方式需建立directory ,可在自己本地建立

/******************************************************************************************/

第二部分:設定按需定時執行備份指令碼
set autorun
# vi /etc/crontab
#在最後一行添加
0 3 * * 6 root /data/AUTOBACKUP/autobackup.sh      #每周六的3:00執行/data/AUTOBACKUP/autobackup.sh

Linux中利用crontab建立計劃任務

Linux中用crontab例行工作安排

Linux crontab不執行問題排查

Ubuntu使用crontab定時任務

Linux計劃任務(at batch crontab anacron)

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.