Linux自动备份Oracle10

ku8089 贡献于2012-10-24

作者 Administrator  创建于2009-07-01 13:01:00   修改者Administrator  修改于2009-08-10 09:36:00字数2065

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

  一、导出数据库   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命令来查看。   cron表中的内容如下:   00 08 * * 6 /oracle/product/9.2.0.4/DBA/script/exp_JTCW.sh   # 每周六上午8点对数据库执行备份   00 14 * * 6 ftp -i host2   # 每周六下午2点启动远程传输,将文件备份到另一台主机上   经过以上的操作后,系统每周六8:00开始产生一个本地备份,并在周六下午2:00启动远程传输,自动将备份文件分别拷贝到对应县公司的远程主机上。其余三个数据库的配置也类似,从而实现了核心数据库的自动远程异地备份,系统管理员需要做的工作是定期清理远程备份主机的备份目录。该系统在浙江绍兴烟草分公司运行近8个月,目前系统整体状况良好,极大提高了绍兴烟草的数据安全性,其实用性、稳定性、安全性得到充分的验证。

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 5 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档