linux下和win7下定时备份oracle数据库

20 篇文章 0 订阅

一、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存放路径)

改:

ORACLE_BASE="/opt/u01/u01"

显示:

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值