作为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)
本文永久更新链接地址:
,