Linux系统中Oracle自动备份方案

php中文网
发布: 2016-06-07 16:50:52
原创
915人浏览过

作为DBA,每次全库备份几乎都要等别人不用数据库的时候才可以进行(我知道还有其他方式,本文暂时只考虑export),通过下面2部分

作为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)

本文永久更新链接地址:

linux

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号