您现在的位置:主页 > 数据库 > ORACLE >

Oracle自动异地远程数据备份研究

来源:建站吧 责任编辑:Jzq8 发表时间:2011-12-24 点击:
 当前随着行业改革的不断深入,数据逐步向地市公司集中,业务经营、政务管理对于信息系统和核心数据的依赖程度也越来越高,如何保障核心数据的安全就显得尤为重要,相信很多单位均已实现了本地的磁盘与磁带的双备份,很好的保障了对核心数据的安全管理。

  但本地备份一般将数据保留在机房内,当本地机房整体物理环境遭到破坏,如发生火灾地震等意外事件时,数据有可能也会损伤。美国“911”事件让许多公司的商务资料在瞬间毁于一旦足以证明远程数据备份的重要性,但是建立一个完备的支持实时数据恢复功能的远程备份系统的投入是非常昂贵的。本文结合工作实际,充分利用县公司机房中现有的存储条件,借助oracle自动备份和ftp自动传输技术,实现了核心Oracle数据库的自动远程异地备份,当本地机房物理环境遭到破坏时,能最大限度的保护好我们的数据。

  一、设计思路

  当前支撑绍兴烟草营销、呼叫、专卖、财务、OA等核心系统运行的主要是TradeCtr、QueryCtr、JTCW、OA四个Oracle数据库,运行在两台HP8420小型机上,每个数据库的备份大约为30G左右,考虑到今后两年内的数据增长可能会达到50-60G左右。绍兴烟草下属四个县公司,每个公司均具备充分的存储空间,网络实际可利用带宽均为6Mbit/s左右,完成一个备份文件的数据传输大约需要10-20个小时,考虑到网络带宽、传输时间及工作时间对业务经营的影响,我们将数据备份及远程传输放在星期六进行,每个单位对应一个数据库进行远程备份,备份周期为每周一次,每周六下午开始。备份中主要用到数据库导出、ftp自动传输、HP UNIX 定时作业等技术,下面以财务数据库JTCW为例来说明具体实现方式。

  二、导出数据库

  export命令将数据库中的数据备份成一个二进制文件,它通常有三种模式:用户模式、表模式和整个数据库模式。本文拟采用用户模式,备份之前,应先建立一个备份目录,以在本机容纳备份文件,比如可建一个/localbak目录。我们将JTCW数据库在用户模式下备份,备份保留周期为一天,具体脚本如下,保留在exp_JTCW.sh文件中:

  export EXP_HOME=/localbak  #设置环境变量EXP_HOME

  export ORACLE_SID=JTCW#设置环境变量ORACLE_SID

  exp system/password owner=hsa6 file=$EXP_HOME/JTCW$(LC_ALL=C date +%y%m%d).dmp log=$EXP_HOME/JTCW$(LC_ALL=C date +%y%m%d).log statistics=none#备份数据以日期方式命名

  find /oradata/cwdata/backup -type f -mtime 3 -exec rm {} \;#保留周期为三天

  三、自动数据传输

  我们知道,通常可用FTP命令在两台主机间传输数据,但一般是通过交互方式实现的,即需要手工输入目标主机的IP地址、用户名、口令等。显然,这不符合自动备份的要求。所幸的是,在HP UNIX平台下我们可以通过编写一个.netrc的文件来达到目标。这一文件必须命名为.netrc,且必须存放在启动FTP命令的机器上的用户注册目录中,该文件的权限应禁止组内或其它用户进行读访问。这样,当用户使用FTP命令的时候,系统将会在该用户的注册目录中寻找.netrc文件,如果能够寻找到,将会首先执行该文件,否则,会交互式地提示用户输入用户名、口令等。

  在使用FTP命令之前,应先在对应县公司一台作备份用的机器上开启ftp服务并建立上传文件目录,以容纳备份文件,本文建立的目录是/remotebak。为了加快备份速度,.netrc文件内容如下:

  machine host2  # host2为作备份用的主机名

  login ftpuser  # ftpuser为远程备份主机上的一个用户

  password ftpuser  # ftpuser用户的口令为ftpuser

  macdef init  #定义一个名为init的宏,它将在自动注册进程的最后被执行

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

  lcd /localbak  #进入本地工作目录/localbak

  cd /remotebak  #进入远程备份主机目录/remotebak

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

  bye #退出FTP会话进程

  .netrc文件编写完成后,使用下述命令:

  chmod 600 .netrc

  这样,.netrc文件就只能被该用户所访问

  四、启动备份进程

  HP UNIX平台下,Cron是一个永久进程,它由/etc/rc.local启动执行。Cron检查/var/spool/cron/crontabs/目录中的文件,找到所要执行的任务和执行任务的时间。

  Crontab文件的每一行由六个域(minutes、hours、day of month、month、day of week、 command)组成,域之间用空格或Tab分开,其中:

  minutes:分钟域,值的范围是0到59

  hours:小时域,值的范围是0到23

  day of month:日期,值的范围是1到31

  month:月份,值的范围是1到12

  day of week:星期,值的范围是0到6,星期日值为0

  command:所要运行的命令

  如果一个域是空,表明命令可以在该域所有可能的取值范围内执行。

  如果一个域是由连字符隔开的两个数字,表明命令可以在两个数字之间的范围内执行(包括两个数字本身)。

  如果一个域是由逗号隔开的一系列值组成的,表明命令可以在这些值组成的范围内执行。 如果日期域和星期域都有值,则这两个域都有效。

  现在,我们编写一个文件,用以启动自动备份进程。值得注意的是,该文件只能在Oracle用户名下用crontab -e 命令来编辑,否则将不会被定时执行,文件名定为Oracle,文件将放在/var/spool/cron/crontabs 目录下。编辑完成后,可以在Oracle的$提示符下,用crontab -l命令来查看。

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片

今日头条

更多>>

推荐图文

  • oracle 多行合并一行
  • 图解访问Oracle11g的步骤
  • Oracle10G关于表操作常用语句详解及随想
  • Oracle中使用PL/SQL操作COM对象
  • ORACLE实现分布式数据库应用的例子
  • 教你如何克隆Oracle10g数据库,冷备份方式(图文版)
  • Oracle发送Email的方法,Oracle发送邮件
  • Oracle应用服务器实现JavaCORBA
  • 控制文件对于Oracle的重要性
Alexa - 客户服务 - 联系方法 - 招聘信息 - 友情链接 - 网站地图 - TAG标签 - RSS订阅
Copyright © 2010-2012 JZQ8.COM. 建站吧|建站去吧 版权所有
冀ICP备09002514号
冀ICP备09002514号 网络报警 企业法人营业执照 中国互联网协会 支付宝付款 网银在线付款