Crontab实现Oracle自动备份数据

Windows中有计划任务,可以添加自动执行某某任务,unix中也有此功能,cron进程可以完成周期性地自动执行命令,从而实现自动执行作业的功能,下面就介绍一下用crontab实现oracle自动备份:

一、用crontab自动执行作业

现在用oracle用户登陆,

$crontab -e oracle

00 22 * * * /export/home/oracle9/backup.sh

00 02 * * * ftp -i server2

也就是每天晚上22点自动执行/orabak/下的backup.sh脚本,这个shell脚本的功能就是实现自动备份oracle数据库,每天2点自动执行ftp作业,来进行异地备份,稍后会介绍这些内容

二、实现自动备份的shell脚本

backup.sh脚本如下:

#!/usr/bin/ksh

 

ORACLE_HOME=/exprort/home/oracle9/app/oracle/product/9.2.0.1/

ORACLE_BASE=/export/home/oracle9/app/oracle/

ORACLE_SID=ora9i

export ORACLE_HOME ORACLE_BASE ORACLE_SID

PATH=$ORACLE_HOME/bin:/usr/bin:/etc:/usr/sbin:.

 

rm /orabak/backup9.dmp

mv /orabak/backup8.dmp /orabak/backup9.dmp

mv /orabak/backup7.dmp /orabak/backup8.dmp

mv /orabak/backup6.dmp /orabak/backup7.dmp

mv /orabak/backup5.dmp /orabak/backup6.dmp

mv /orabak/backup4.dmp /orabak/backup5.dmp

mv /orabak/backup3.dmp /orabak/backup4.dmp

mv /orabak/backup2.dmp /orabak/backup3.dmp

mv /orabak/backup1.dmp /orabak/backup2.dmp

mv /orabak/autobak.dmp /orabak/backup1.dmp

exp system/oracle@ora9 owner=testfile=/orabak/autobak.dmp log=/orabak/exp.log

 

  shell脚本的开头一段是引了oracle用的.profile的文件内容来定义环境变量,接着为了实现保留多个时间的备份文件,在备份之前用一段shell命令将备份文件按次序挨个改名,保留的备份文件个数可自由设置,这样就实现了滚动备份,系统永远只保留最近的备份,避免时间一长硬盘空间不够的问题.最后exp导出数据库,根据需要后面还可以加cp命令把备份的文件拷贝到本地的其它磁盘中.

 

   脚本编辑好了以后,执行以下命令chmod 755 /orabak/backup.sh使这个shell脚本变为可执行文件.这样自动备份的脚本就完成.按照前面的crontab里的计划时间每天晚上22点就会自动执行此文件来进行备份了.

 

三、用ftp实现自动异地备份

  为了数据更加安全,可能会需要将备份文件放到别的机器的磁盘里保存,这时可以用ftp实现自动上传.

  ftp通常是通过交互方式实现的,即需要手工输入目标主机的IP地址﹑用户名﹑口令等等.但是这种方式不能满足自动备份的要求,我们可以通过编写一个.netrc文件来实现自动传输文件.

在自己的home目录下名为.netrc的文件,内容是:

machine 10.70.13.9 login oracle9 password test

修改文件权限为600

#chmod 600 .netrc

这样以后你每次ftp10.70.13.9的时候,系统都会帮你以用户名oracle9,密码test登录。

利用这个特征可以实现自动ftp。

建立一个文件ftp_cmd,内容为:

bin                #文件的传输方式设为二进制

lcd   /oradata/backup     #进入本地的工作目录/orabak

cd /export/home5/oildatabak/      #进入目标主机的工作目录/orabak

mput *.dmp   #将/orabak目录下的所有dmp备份文件传输至目标主机

bye  #退出ftp会话进程

然后使用crontab -e设置定时任务:

0 5 * * * ftp 10.70.13.9< ftp_cmd

 

   经过以上的这些操作,系统每天晚上将会自动备份数据库,并且将自动备份的文件拷贝到远程主机上.这里只是简单的介绍一下,也算是对最近研究的东东的一些总结,这里并没有涉及到增量备份的一些概念,估计这个不会再去研究了


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14293828/viewspace-1429018/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14293828/viewspace-1429018/

你可能感兴趣的:(Crontab实现Oracle自动备份数据)