一、Linux——定时备份数据库
公司linux的备份文件夹统一放在/opt下
1、创建存放目录
]# mkdir -p/opt/DB_bak/srcdmps/
]# cd opt/DB_bak/
2、查看oracle导出需要用到的环境变量
]#echo $ORACLE_BASE
]#echo $ORACLE_HOME
]#echo $ORACLE_SID
也可设置环境变量如:
exportORACLE_BASE="/opt/u01" (oracle存放路径)
改:
显示:
echo $ORACLE_BASE
环境变量用户下次登录才生效,若想立即生效:
source./bash_profile
3、编写任务脚本
DB_bak]# vilwsfmainbakup.sh
内容:
#设置环境变量,因为crontab定时调用时不会使用oracle用户的环境变量,所以要先把它们导进来.
export ORACLE_BASE=/opt/u01
export ORACLE_HOME=/opt/u01/oracle
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
#导出lwsfmain数据库当天的数据库文件以及日志
echo"-----------------------------------------------------------------------">>/opt/DB_bak/baklog
date +" %T %a %D :正在导出数据库文件以及日志文件...">>/opt/DB_bak/baklog
exp lwsfmain/1@orcl file=/opt/DB_bak/lwsfmain-`date +%y%m%d`.dmplog=/opt/DB_bak/lwsfmain-`date +%y%m%d`.log owner=lwsfmain
echo "---Done">>/opt/DB_bak/baklog
#打包并压缩数据库文件以及日志
date +" %T %a %D : 正在打包和压缩文件...">>/opt/DB_bak/baklog
cd /opt/DB_bak && tar -czf lwsfmain-`date+%y%m%d`.tar.gz lwsfmain-`date +%y%m%d`.dmp lwsfmain-`date +%y%m%d`.log #cd后再tar避免解压时解出绝对路径
echo "---Done">>/opt/DB_bak/baklog
#移动dmp源文件至目录/opt/DB_bak/srcdmps
date +" %T %a %D : 正在将dmp文件移动至opt/DB_bak/srcdmps...">>/opt/DB_bak/baklog
mv /opt/DB_bak/lwsfmain-`date +%y%m%d`.dmp/opt/DB_bak/srcdmps/lwsfmain-`date +%y%m%d`.dmp
echo "---Done">>/opt/DB_bak/baklog
#删除文件
date +" %T %a %D : 正在删除冗余文件...">>/opt/DB_bak/baklog
rm -f /opt/DB_bak/lwsfmain-`date +%y%m%d`.log
rm -f /opt/DB_bak/srcdmps/lwsfmain-`date -d -3day+%y%m%d`.dmp
rm -f /opt/DB_bak/lwsfmain-`date -d -3day+%y%m%d`.tar.gz #删除前第3天的数据(若每天执行则保留最近3天的文件)
echo "---Finish">>/opt/DB_bak/baklog
#end
!!!!!!!!!给脚本赋予执行权限:]#chmod 755 DBbakup.sh
4、设置周期性任务
]# crontab -e (进入编辑界面)
插入行:
59 23 * * * /opt/DB_bak/lwsfmainbakup.sh ( 每天23:59执行此备份脚本文件)
注:# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 -31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) ORsun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed
二、windows下定期备份数据库
1、编写备份脚本
新建一个txt文件,编写脚本内容如下
echo 开始备份数据库
#新建目录
if not exist F:\db_bak\files md F:\db_bak\files
if not exist F:\db_bak\logs md F:\db_bak\logs
#设置时间变量
setvar=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2% (说明变量:date
当前日期:2015-02-26周四
%date:~0,4% 从左到右舍弃0位,提取4位,即2015
%date:~5,2% 从左到右舍弃5位,提取2位,即02)
exp ora_user/ora_pwd@ora_conn file=F:\db_bak\files\xxxx_%var%.dmplog=F:\db_bak\logs\xxxx_%var%.log owner=(user1,user2)
echo 删除过久的(7天前的)备份记录
forfiles /p "F:\db_bak" /s /m *.dmp /d -7 /c "cmd /c del @path"
forfiles /p "F:\db_bak" /s /m *.log /d -7 /c "cmd /c del @path"
exit
2、设置定时任务
将脚本改为bat文件,使用任务计划执行此批处理文件(开始>附件>系统工具>任务计划)
http://wenku.baidu.com/link?url=0ReRCk6zOXdA-HMlYuns3niA21ICv3M47frNWB9jq_rcbo4jfb9lmL04EaDfEsrK8WC6fNLDTwnt7JUkLXACiFlvpkdp4CwUfrr70UaZA6K