脚本写好了,可云盘下载,分Linux和windows
链接:https://pan.baidu.com/s/1pYt0GTzlDn0hBTLqLAqGew
提取码:fily
Oracle数据库自动备份手册
1 目的
在linux环境下使用exp备份数据库,该方法适合于备份数据级别小余1TB的数据库,版本10g、11g皆可。
经测试,该方法在redhat5.x,redhat6.x,centos6.x等64位环境下正常执行。
2 系统用户一览
序号 1.
用户 root
所在组 root
权限 超级用户
密码 root123
2.
oracle
oinstall
dba
orcl
3 Oracle环境变量
标题
内容
ORACLE目录
/home/oracle
ORACLE_BASE
/usr/local/oracle/
ORACLE_HOME
/usr/local/oracle/product/1120
ORACLE_SID
orcl
4 备份方法
4.1.1 创建备份目录
使用oracle创建备份文件存储目录
su oracle
df –hl 查询/home下空闲磁盘空间,保证空间充足
mkdir /home/oracle/backup
4.1.2 创建备份脚本
使用oracle用户创建自动备份脚本
cd /home/oracle
vi backup.sh
脚本内容如下,其中的红色部分需要根据实际情况调整
当前备份设置删除1个月之前的备份文件
#! /bin/sh
export LANG="en_US.UTF-8"
export NLS_LANG="Simplified Chinese_china".ZHS16GBK
export ORACLE_BASE=/usr/local/oracle/
export ORACLE_HOME=/usr/local/oracle/product/1120
export ORACLE_SID=orcl
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
#设置备份文件格式
#设置删除备份文件的格式,当前为删除1个月前的备份
backuptime=`date +"%Y%m%d%H"`
deletetime=`date -d "1 month ago" +"%Y%m%d%H"`
#开始删除1个月前的备份
rm -f /home/oracle/backup/orcl_$deletetime.dmp
rm -f /home/oracle/backup/orcl_$deletetime.log
#开始备份
exp count/count file=/home/oracle/backup/orcl_$backuptime.dmp log=/home/oracle/backup/orcl_$backuptime.log full=y
注意:date -d "1 month ago" 命令代表获取当前1个月之前的时间
date -d "1 week ago"命令代表获取当前1周之前的时间
date -d "1 day ago"命令代表获取当前1天之前的时间
提升权限
chmod +x backup.sh #需要先设置为可执行脚本,只需要设置一次
手动测试一下
./backup.sh
4.1.3 设置脚本定时执行
使用root执行
vi /etc/crontab
#在最后一行添加
10 17 * * * oracle /home/oracle /backup.sh #每天的17:10执行/home/oracle /backup.sh
命令用法
l * * * * * :代表执行时间间隔
分别表示:
分钟:0-59
小时:1-23
日期:1-31
月份:1-12
星期:0-6(0表示周日)
还可以用一些特殊符号:
*: 表示任何时刻
,: 表示分割
-:表示一个段,如第二端里: 1-5,就表示1到5点
/n : 表示每个n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1.
一些示例
43 21 * * * 21:43 执行
15 05 * * * 05:15 执行
0 17 * * * 17:00 执行
0 17 * * 1 每周一的 17:00 执行
0,10 17 * * 0,2,3 每周日,周二,周三的 17:00和 17:10 执行
0-10 17 1 * * 毎月1日从 17:00到7:10 毎隔1分钟 执行
0 0 1,15 * 1 毎月1日和 15日和 一日的 0:00 执行
42 4 1 * * 毎月1日的 4:42分 执行
0 21 * * 1-6 周一到周六 21:00 执行
0,10,20,30,40,50 * * * * 每隔10分 执行
*/10 * * * * 每隔10分 执行
* 1 * * * 从1:0到1:59 每隔1分钟 执行
0 1 * * * 1:00 执行
0 */1 * * * 毎时0分 每隔1小时 执行
0 * * * * 毎时0分 每隔1小时 执行
2 8-20/3 * * * 8:02,11:02,14:02,17:02,20:02 执行
30 5 1,15 * * 1日 和 15日的 5:30 执行
在实际使用过程中需要根据数据库膨胀的速度考虑备份定时的时间,一般膨胀越快,备份越频繁,如每天一次晚上23:00备份;数据库文件较大时,可适当降低备份频率,如2天或3天备份一次,同时增加删除频率,如只保留最近10天的数据。需要注意备份路径所在的磁盘空间大小,一般使用 df –hl 查询,如果空间太小需要及时手动清理或增大空间。
l oracle :执行脚本的用户
l /home/oracle /backup.sh:执行脚本的路径