日期:2014-05-16  浏览次数:20339 次

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 {} \;