博客已迁移,请看签名

新博客:http://www.51it.wang

Oracle自动备份脚本并自动删除2周前备份内容

1.环境

系统:centos6.9

oracle版本:11g 11.2.0

oracle安装目录:/home/u01/app/oracle/product/11.2.0/dbhome_1

备份目录:/home/u01/app/oracle/oradata/bak

脚本位置:/home/oraclebak/oraclebak.sh


2.脚本代码

脚本内容如下,有注释,请自行修改

------------------------------

#2018.04.17刘修改

#oracle自动备份脚本

#/bin/sh

export ORACLE_SID=orcl

export ORACLE_HOME=/home/u01/app/oracle/product/11.2.0/dbhome_1

export NLS_LANG=american_america.zhs16gbk

export DATA_DIR=/home/u01/app/oracle/oradata/bak

#获取系统时间,精确到秒

now=`date +%Y%m%d%H%M%S`

#获取打包时间精确到小时

ziptime=`date +"%Y%m%d%H"`

#获取删除时间,当前时间的前2周

deletetime=`date -d "2 week ago" +"%Y%m%d%H"`

#删除2周前的zip包

rm -rf /home/u01/app/oracle/oradata/bak/db_$deletetime.zip

echo start exp $dmpfile ...

/home/u01/app/oracle/product/11.2.0/dbhome_1/bin/expdp dbservice/123456 DUMPFILE=dbservice$now.dmp DIRECTORY=DPDATA1 schemas=dbservice

/home/u01/app/oracle/product/11.2.0/dbhome_1/bin/expdp dbcount/123456 DUMPFILE=dbcount$now.dmp DIRECTORY=DPDATA1 schemas=dbcount

/home/u01/app/oracle/product/11.2.0/dbhome_1/bin/expdp dbcenter/123456 DUMPFILE=dbcenter$now.dmp DIRECTORY=DPDATA1 schemas=dbcenter

/home/u01/app/oracle/product/11.2.0/dbhome_1/bin/expdp dboperation/123456 DUMPFILE=dboperation$now.dmp DIRECTORY=DPDATA1 schemas=dboperation

/home/u01/app/oracle/product/11.2.0/dbhome_1/bin/expdp dbcms/123456 DUMPFILE=dbcms$now.dmp DIRECTORY=DPDATA1 schemas=dbcms

/home/u01/app/oracle/product/11.2.0/dbhome_1/bin/expdp db_resource/123456 DUMPFILE=db_resource$now.dmp DIRECTORY=DPDATA1 schemas=db_resource

/home/u01/app/oracle/product/11.2.0/dbhome_1/bin/expdp dbcas/123456 DUMPFILE=dbcas$now.dmp DIRECTORY=DPDATA1 schemas=dbcas


zip -r /home/u01/app/oracle/oradata/bak/db_$ziptime.zip  /home/u01/app/oracle/oradata/bak/*.dmp

rm -rf /home/u01/app/oracle/oradata/bak/*.dmp


------------------------------

3.脚本是按照表空间导出的

若需要全库或者某用户导出,请参考我的另外一篇文章:

https://lcryblog.lofter.com/post/1e131973_11eb1eda


4.设置定时任务

vi /etc/crontab

若无该文件请执行yum安装crond命令:yum install crontabs

末尾添加一行:

00 03 * * * oracle /home/oraclebak/oraclebak.sh

以上意思为每天3:00分执行一次备份


查看定时任务日志:tail -f /var/log/cron

注:一定要手动执行一次看是否成功,内容比较多可以注释掉,只导出一个数据少的库做测试。



上一篇 下一篇
评论
©博客已迁移,请看签名 | Powered by LOFTER