有朋友提了一个需求:每天的晚上12点使用exp备份数据库到指定目录下面,并且自动删除在一个星期以前备份的数据为此写出下文,仅以记录并分享这个过程。
Linux平台下的Oracle自动备份案例(使用RMAN) 见
环境:
操作系统:RHEL5.4
数据库:Oracle 10.2.0
相关变量值:
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
备份的方案名:MAI
备份的目标目录:/backup
实现过程如下:
准备目录:
mkdir /backup
chown oracle:oinstall /backup
chmod 755 /backup
切换到oracle用户,在oracle家目录下面创建bin目录,新建文件on_time_backup.sh
mkdir bin
cd bin
touch on_time_backup.sh
chmod 755 on_time_backup.sh
编辑on_time_backup.sh文件,添加如下内容:
#!/bin/bash
source /home/oracle/.bash_profile
/u01/app/oracle/product/10.2.0/db_1/bin/exp userid=mai/mai file=/backup/BACKUP_SCHEMA_MAI_`date +%Y%m%d%H%M`.dmp log=/backup/BACKUP_SCHEMA_MAI_`date +%Y%m%d%H%M`.log
/usr/bin/find /backup -mtime +7 -exec rm -rf {} ;
使用oracle用户添加例行任务:
crontab -e
新打开的窗口中添加一下内容:
0 24 * * * /home/oracle/bin/on_time_backup.sh
(*/1 * * * * /home/oracle/bin/on_time_backup.sh)
注,括号内的可以是做测试的时候用的,每分钟执行一次备份
可以通过监控/var/log/cron文件来查看脚本是否执行了,至于是否执行了就要看在/backup目录下面是否有相应的备份文件了:
-rw-r--r-- 1 oracle oinstall 16384 Jul 5 13:33 BACKUP_SCHEMA_MAI_201207051333.dmp
-rw-r--r-- 1 oracle oinstall 1800 Jul 5 13:33 BACKUP_SCHEMA_MAI_201207051333.log
-rw-r--r-- 1 oracle oinstall 16384 Jul 5 13:35 BACKUP_SCHEMA_MAI_201207051335.dmp
-rw-r--r-- 1 oracle oinstall 1800 Jul 5 13:35 BACKUP_SCHEMA_MAI_201207051335.log
-rw-r--r-- 1 oracle oinstall 16384 Jul 5 13:36 BACKUP_SCHEMA_MAI_201207051336.dmp
-rw-r--r-- 1 oracle oinstall 1800 Jul 5 13:36 BACKUP_SCHEMA_MAI_201207051336.log
-rw-r--r-- 1 oracle oinstall 16384 Jul 5 13:37 BACKUP_SCHEMA_MAI_201207051337.dmp
-rw-r--r-- 1 oracle oinstall 1800 Jul 5 13:37 BACKUP_SCHEMA_MAI_201207051337.log
-rw-r--r-- 1 oracle oinstall 16384 Jul 5 13:38 BACKUP_SCHEMA_MAI_201207051338.dmp
-rw-r--r-- 1 oracle oinstall 1800 Jul 5 13:38 BACKUP_SCHEMA_MAI_201207051338.log
推荐阅读:
Oracle基础教程之通过RMAN复制数据库
RMAN备份策略制定参考内容
RMAN备份学习笔记
Oracle数据库备份加密 RMAN加密