ORACLE定时备份方案
ORACLE定时备份方案
采用ORACLE的EXP工具,实现ORACLE的备份;采用LINUX的服务crond实现定时功能。
1 编辑SH,实现备份功能
#vi oracle_backup.sh,输入以下内容
#!/bin/sh
ORACLE_BACKUP_HOME=/home/oracle/backup #定义ORACLE备份根目录
BACKUP_DATA=$ORACLE_BACKUP_HOME/day #定义ORACLE备份数据文件根目录
BACKUP_LOG=$BACKUP_DATA/log #定义ORACLE备份日志文件根目录
export ORACLE_BACKUP_HOME BACKUP_DATA BACKUP_LOG
DATA_FILE_NAME=data_backup #定义ORACLE备份日志文件名字前缀
LOG_FILE_NAME=log_backup #定义ORACLE备份日志文件名字前缀
export DATA_FILE_NAME LOG_FILE_NAME
BACKUP_AMOUNT=4 #定义ORACLE备份文件保存数量
export BACKUP_AMOUNT
datafile_amount=$(find $BACKUP_DATA -type f -name $DATA_FILE_NAME'_'*.dmp|wc -l) #查询ORACLE备份数据文件根目录下备份数据文件的数量
logfile_amount=$(find $BACKUP_LOG -type f -name $LOG_FILE_NAME'_'*.log|wc -l) #查询ORACLE备份日志文件根目录下备份日志文件的数量
del_datafile_count=$(($datafile_amount-$BACKUP_AMOUNT+1)); #计算需要删除ORACLE备份数据文件的数量
del_logfile_count=$(($datafile_amount-$BACKUP_AMOUNT+1)); #计算需要删除ORACLE备份日志文件的数量
if(($datafile_amount>=$BACKUP_AMOUNT));then
echo $BACKUP_DATA"路径下文件太多,正在清除备份数据文件"
for((i=0;i<$del_datafile_count;i++))
do
ls -t $BACKUP_DATA/$DATA_FILE_NAME'_'*.dmp| awk 'END{if(NR>=$BACKUP_AMOUNT){system("rm -rf "$NF);system("echo $BACKUP_DATA路径下,已删除文件"$NF)}}'#删除修改时间最早的一个数据文件
done
fi
if(($logfile_amount>=$BACKUP_AMOUNT));then
echo $BACKUP_LOG"路径下文件太多,正在清除备份日志文件"
for((i=0;i<$del_logfile_count;i++))
do
ls -t $BACKUP_LOG/$LOG_FILE_NAME'_'*.log| awk 'END{if(NR>=$BACKUP_AMOUNT){system("rm -rf "$NF);system("echo $BACKUP_LOG路径下,已删除文件"$NF)}}'#删除修改时间最早的一个日志文件
done
fi
rq=`date +"%Y%m%d%s"` #获取当前系统时间
su - oracle -c "/oracle/product/10.2.0/db_1/bin/exp sgedptwo/sgdb321@SGEMDP file=$BACKUP_DATA/$DATA_FILE_NAME'_'$rq.dmp log=$BACKUP_LOG/$LOG_FILE_NAME'_'$rq.log" #备份ORACLE数据库并记录日志
2 授予ORACLE用户使用备份目录权限
# mkdir /home/oracle/backup
# mkdir /home/oracle/backup/day
# mkdir /home/oracle/backup/day/log
#chown –R /home/oracle/backup
3 使用crond定制定时任务
#ps-ef|grep crond #查看crond服务是否开启
#service crond start|stop|restart #crond服务启动|停止|重启命令
#crontab –e,输入以下内容
0 0 * * * /oracle/oracle_backup.sh #每天00:00执行任务
0 0 1 * * /oracle/oracle_backup.sh #每月1号00:00执行任务
注释:
* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 6) (Sunday=0 )
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)
最新文章
- 设计模式(七)适配器模式(Adapter Pattern)
- MYSQL(一)
- 外壳exe通过反射调用dll时
- java SE 常用的排序算法
- Linux下ejabberd安装配置
- 【干货分享】Node.js 中文资料导航
- J2EE笔记3
- Flash图表控件FusionCharts如何自定义图表上的垂直线
- 二维树状数组(水题) POJ1195
- PAT 1008
- Arc engine - Geodatabase.
- 一段代码说明javascript闭包执行机制
- Android中ViewStub组件使用
- UU农场平台开发 UU农场拆复利系统
- PS 滤镜算法原理——染色玻璃
- 显著性检测(saliency detection)评价指标之sAUC(shuffled AUC)的Matlab代码实现
- Request.ServerVariables参数说明
- Ubuntu无法连接WiFi
- (一)flutter第一天
- 2870: 最长道路tree