linux 下定时备份Oracle数据库
备份Oracle数据库
Linux: cron
cron 命令用来实现定时任务的完成 如每日执行一次的任务 进程
cron 命令是不应该手工启动的 一般情况下 cron 命令在系统启动时就由一
个 shell 脚本自动启动 启动后 cron 命令会搜索/var/spool/cron 目录 寻找
以/etc/passwd 文件中的用户名命名的 crontab 文件 被找到的这种文件将载
入内存 例如一个用户名为 user 的用户它所对应的 crontab 文件就应该是
也就是说 以 该 用 户 命 名 的 crontab 文 件 存 放 在
/var/spool/cron/user
/var/spool/cron 目录下面 cron 命令还将搜索/etc/crontab 文件 这个文件是
用不同的格式写成的 cron 启动以后它将首先检查是否有用户设置了 crontab
文件 如果没有就转入休眠状态 释放系统资源 它每分钟醒过来一次查看
当前是否有需要运行的命令
可以使用 crontab –l 命令查看目前已经存在的 cron 任务
在linux里安装Oracle10G 将会自动有个Oracle 的用户名存在。在/var/spool/cron 建个oracle 里面写
1 20 * * * /home/oracle/databak/bakup.sh > /dev/null 2>&1
0 22 * * * /home/oracle/databak/delbak.sh > /dev/null 2>&1
然后bakup.sh 如下:
#!
#bakup.sh
##系统名称(XX系统)
sysname=gdnyw
syspath=/home/oracle/databak/$sysname/
v_date=$(date '+%Y%m%d%H%M%S')
logfile=$syspath/backup.$v_date.log
echo backup_time>>$logfile
date '+%Y-%m-%d %H:%M:%S' >> $logfile
#数据库使用情况
echo "backup gdnyw">>$logfile
echo "start_time">>$logfile
date '+%Y-%m-%d %H:%M:%S' >> $logfile
cd /home/oracle/product/10.2.0
export ORACLE_HOME=/home/oracle/product/10.2.0
export PATH=$PATH:/home/oracle/product/10.2.0/bin
export ORACLE_SID=EJETDB
echo $syspath
v_date=$(date '+%Y%m%d%H%M%S')
exp gdnyw/gdnywserver file=$syspath/gdnyw$v_date.dmp compress=n >> $logfile
echo "end_time">>$logfile
date '+%Y-%m-%d %H:%M:%S'>>$logfile
#压缩备份的数据文件
gzip $syspath/*.dmp
delbak.sh 如下:
#!
#delbak.sh
##系统名称(XX系统)
sysname=gdnyw
syspath=/home/oracle/databak/$sysname/
find "$syspath" -name "*.gz" -mtime +5 -exec rm {} \;