实现Oracle数据库的每天的自动备份

    发表于:2007-11-15     阅读:



相信为数不少的系统管理员每天都在做着同一样的工作——对数据进行备份。一旦哪一天疏忽了,而这一天系统又恰恰发生了故障,需要进行数据恢复,那么此时就无能为力了。假如每天设定一个固定的时间,系统自动进行备份,那该多好啊!下面笔者结合实践经验,谈一谈UNIX环境下Oracle数据库的自动备份,以起到抛砖引玉的作用。

我们计划让数据库在晚上23点做export导出备份,在凌晨2点将备份文件拷贝到磁带上,在凌晨4点将备份文件拷贝到另一台UNIX机器上,为此我们可进行如下操作:

一、导出数据库

export命令将数据库中的数据备份成一个二进制文件,它通常有三种模式:用户模式、表模式和整个数据库模式。本文拟采用用户模式,备份之前,应先建立一个备份目录,以容纳备份文件,比如可建一个/backup目录。接着我们可在UNIX的Oracle目录下(也可以是其它目录)分别建立两个文件ora—backup,tar—backup。需要说明的是,前一个文件需要对Oracle的参数进行初始化,为了方便起见,我们不妨将初始化命令放到一个文件中(文件名姑且定为ora—env),再由第一个文件调用它。

1. ora—env文件对Oracle的参数进行初始化,其内容如下:

  
  ORACLE—HOME=$ORACLE—HOME;export ORACLE—HOME
  
  ORACLE—SID=ora73;export ORACLE—SID
  
  ORACLE—TERM=sun;export ORACLE—TERM
  
  LD—LIBRARY—PATH=$ORACLE—HOME/lib;export LD—LIBRARY—PATH
  
  ORA—NLS32=$ORACLE—HOME/ocommon/nls/admin/data;export ORA—NLS
  
  PATH=.:/usr/ccs/bin:/usr/ucb:$ORACLE—HOME/bin:$PATH;export PATH
  
  DISPLAY=host1:0;export DISPLAY
  
  NLS—LANG=american—america.zhs16cgb231280;export NLS—LANG
  

2. ora—backup文件对数据库做export导出,导出的文件名可以任意定,本文定为字母“xx”加当天日期,即假如当天日期是12月10号,则导出的文件名为“xx1210.dmp”,以区别于其它日期的备份文件。

ora—backup文件内容:

 

 
  ./oracle/ora—env
  
  #初始化Oracle数据库
  
  rq=′date +″%m%d″ ′
  
  #把当天日期赋予变量rq
  
  rm /backup/
  
  # 清空 /backup目录
  
  exp test/test file=/backup/xx$rq.dmp log=/backup/xx$rq.log
  

本命令用于在$提示符下,导出test用户的数据(其口令亦为test),导出文件及日志均放在/backup目录下。

二、磁带备份

tar—backup文件将用export命令导出的数据文件拷贝到磁带上。

tar—backup文件内容:

 

 
  tar rvf /dev/rmt/0n/backup/
 
 

本命令可将/backup目录下当天产生的文件备份到磁带上。本文件中,tar命令使用了三个参数,其中r选项表示向磁带上拷入文件而不破坏磁带原来内容,v选项表示在拷贝过程中显示文件信息,f选项后面加上磁带设备名,指定文件向何处拷贝,n选项表示磁带机不倒带。/dev/rmt/0表示UNIX主机第一个磁带驱动器,同理,/dev/rmt/1则表示UNIX主机第二个磁带驱动器,依此类推。

 

 
  ora—env、ora—backup、tar—backup文件编写完成后,分别使用下述命令:
  
  chmod 755 ora—env
  
  chmod 755 ora—backup
  
  chmod 755 tar—backup
  

这样,三个文件就都变成了可执行文件。


雅虎收藏夹 百度收藏 Google书签 Yahoo书签 新浪ViVi 搜狐网摘 365Key网摘 天极网摘 diglog 和讯网摘 POCO网摘 YouNote网摘 博拉网 天下图摘 Del.icio.us digg reddit spurl BlinkList blogmarks

相关文章