| 
 ---- 1 引言   ---- ORACLE数据库是一种大型关系型的数据库,可以存贮达到存贮TB的数据,那么如何保证这些数据的安全尤其至关重要,我们从1991年开始使用ORACLE数据库,通过这些年的使用,我们制定了一整套的ORACLE数据库的备份制度。现在把我们的备份制度介绍给大家,供大家参考。
 php程序员站 ---- 2 根据实际需要决定数据库的运行方式
 www~phperz~com ---- ORACLE数据库有两种运行方式:一是归档方式(ARCHIVELOG),归档方式的目的是当数据库发生故障时最大限度恢复所有已提交的事物;二是不归档方式(NOARCHIVELOG),恢复数据库到最近的回收点。我们根据数据库的高可用性和用户可承受丢失的工作量的多少,把我们正式运行的数据库采用为归档方式;那些正在开发和调试的数据库采用不归档方式。
 phperz.com ---- 3 如何改变数据库的运行方式
 phperz.com ---- 3.1在创建数据库时设置数据库的运行的方式   phperz~com
 ---- 在创建数据库时,作为创建数据库的一部分,就决定了数据库初始的存档方式。一般情况下为NOARCHIVELOG方式。当数据库创建好以后,根据我们的需要把需要运行在归档方式的数据库改成ARCHIVELOG方式。
 phperz~com ---- 3.2改变不归档方式为为归档方式
 php程序员站 关闭数据库,备份已有的数据   www.phperz.com
 改变数据库的运行方式是对数据库的重要改动,所以要对数据库做备份,对可能出现的问题作出保护。   php程序员站  启动Instance ,Mount数据库但不打开数据库,来改变归档方式
 php程序员站 sqldba lmode=y(svrmgrl)    www~phperz~com sqldba>;connect internal    php程序员之家 sqldba>;startup mount    php程序员之家 sqldba>;alter database archivelog;   phperz.com     php程序员站 使能自动存档   phperz.com  在初始化文件init*.ora(一般放ORACLE根目录的下层目录dbs下)加参数:    php程序员之家 log_archive_start=true    www~phperz~com 指定存档的重做登录文件名和存放的位置   www.phperz.com
 同样是在初始化文件init*.ora中加入下面的参数:    php程序员站 log_archive_format=%S.arc    www~phperz~com log_archive_dest=/arch12/arch (arch12 是日志文件存放的目录)    phperz.com    php程序员站 关闭数据库,重新启动数据库,归档方式转换完成。   phperz.com  ---- 4 回收制度    www~phperz~com ---- 4.1根据数据库的运行方式和可承受丢失的工作量来决定数据库的回收制度对于不归档方式,我们用的是ORACLE数据库的逻辑备份Export ,回收的制度是:一个月作一次全备份(x01.dmp),一周作一次累积备份(c*.dmp),一天一次增量备份(I*.dmp),具体的是星期一到星期五作增量备份,星期六做累积备份或全备份,每次做完备份后自动传到其它的机器上存储。这些备份都是自动执行的,后面给出程序文本。   phperz.com  ---- 对于归档方式,我们用的是ORCALE的物理备份:当数据库创建好以后,做一次物理上的全备份,平时在不关闭数据库的前提下,一个星期对经常改变的数据文件做联机的数据库数据文件的物理备份;当数据库的结构发生改变,如:增加表空间,加数据文件等,如允许关机,正常关闭数据库,重新做数据库全备份,否则,备份控制文件,备份数据文件照常。联机的日志文件我们是写在阵列上的,不用镜象和备份。   www~phperz~com
 ---- 4.2回收的方法
 www~phperz~com ---- 4.2.1不归档方式
 php程序员站 ---- 我们拿曙光AIX操作系统为例,来讲解以下如何做自动备份:
 phperz~com ---- a.首先建UNIX用户 demo/demo
 php程序员站 ---- b.拷贝oracle用户下的 .profile 到 demo 用户下,以保证 demo 用户可以用 Export命令
 phperz~com ---- c.用root用户登录,编辑 /var/adm/cron/cron.allow 加入用户名demo,这样demo用户就有权自动执行数据库备份的shell程序;
 phperz.com ---- d.创建数据库备份程序,放到本用户的下层目录bin下,并且这些文件要有可 执行权文件zlbf1:(增量备份1,星期一执行的程序)
 phperz.com . /u11/demo/.profile
 php程序员站 exp system/manager inctype=INCREMENTAL file=i01.dmp   www~phperz~com  ftp -n< < !   php程序员之家  open 10.10.10.40    www~phperz~com user demo demo   php程序员之家  binary   phperz.com  prompt   phperz.com  cd backup40   www~phperz~com  put i01.dmp   php程序员之家  close    php程序员之家 bye    php程序员站 !    php程序员站 文件zlbf2:(增量备份2, 星期二执行的程序)   phperz.com  . /u11/demo/.profile    phperz.com exp system/manager inctype=INCREMENTAL file=i02.dmp    www~phperz~com ftp -n< < !   phperz.com  open 10.10.10.40   phperz~com  user demo demo    www~phperz~com binary   phperz.com  prompt   php程序员站  cd backup40    php程序员站 put i02.dmp    phperz.com close    www.phperz.com bye    www.phperz.com !   php程序员之家  文件zlbf3:(增量备份3, 星期三执行的程序)    php程序员之家 . /u11/demo/.profile    phperz~com exp system/manager inctype=INCREMENTAL file=i03.dmp   php程序员站  ftp -n< < !    www.phperz.com open 10.10.10.40   php程序员站  user demo demo   php程序员之家  binary   www.phperz.com  prompt    www~phperz~com cd backup40   www~phperz~com  put i03.dmp   php程序员站  close   php程序员站  bye   php程序员站  !    phperz.com 文件zlbf4:(增量备份4, 星期四执行的程序)   php程序员站  . /u11/demo/.profile    www.phperz.com exp system/manager inctype=INCREMENTAL file=i04.dmp   php程序员站  ftp -n< < !    phperz.com open 10.10.10.40    php程序员之家 user demo demo   phperz.com  binary   phperz~com  prompt    www~phperz~com cd backup40   www.phperz.com  put i04.dmp   www.phperz.com  close   phperz.com  bye    php程序员之家 !   phperz.com  文件zlbf5:(增量备份5, 星期五执行的程序)    www.phperz.com . /u11/demo/.profile   www.phperz.com  exp system/manager inctype=INCREMENTAL file=i05.dmp    php程序员站 ftp -n< < !   phperz.com  open 10.10.10.40    www.phperz.com user demo demo    php程序员站 binary    phperz.com prompt    php程序员站 cd backup40   phperz~com  put i05.dmp    www.phperz.com close    php程序员站 bye   www.phperz.com  !    www~phperz~com 文件zlbf6:(增量备份6, 星期六执行的程序)   www~phperz~com  . /u11/demo/.profile   phperz.com  js=`ls c*.dmp|wc -l`   www.phperz.com  if test $js = 0   phperz.com  then    php程序员站 exp system/manager inctype=CUMULATIVE file=c01.dmp    www.phperz.com ftp -n< < !   www~phperz~com  open 10.10.10.40   php程序员站  user demo demo    www.phperz.com binary    phperz.com prompt    phperz~com cd backup40    phperz.com put c01.dmp   php程序员站  close   www~phperz~com  bye   php程序员之家  !    php程序员站 fi   www~phperz~com  if test $js = 1   phperz.com  then   www.phperz.com  exp system/manger inctype=CUMULATIVE file=c02.dmp   phperz.com  ftp -n< < !    php程序员之家 open 10.10.10.40   www.phperz.com  user demo demo    php程序员之家 binary    phperz~com prompt   www~phperz~com  cd backup40    php程序员站 put c02.dmp   www.phperz.com  close    phperz.com bye   www.phperz.com  !   php程序员之家  fi    www.phperz.com if test $js = 2   phperz~com  then    php程序员之家 exp system/maneger inctype=CUMULATIVE file=c03.dmp    php程序员站 ftp -n< < !    php程序员站 open 10.10.10.40   php程序员站  user demo demo    php程序员之家 binary    php程序员站 prompt   phperz~com  cd backup40    php程序员站 put c03.dmp   php程序员站  close    www.phperz.com bye   phperz.com  !   php程序员之家  fi   phperz~com  if test $js = 3    php程序员之家 then   php程序员站  exp system/manager inctype=COMPLETE file=x01.dmp   phperz.com  ftp -n< < !   php程序员站  open 10.10.10.40   php程序员站  user demo demo    php程序员站 binary   www.phperz.com  prompt    www.phperz.com cd backup40    phperz.com put x01.dmp    php程序员站 close   phperz~com  bye    php程序员站 !   www.phperz.com  rm c*.dmp    php程序员站 fi    php程序员站 ---- e.在demo 用户下建一个文件,假如叫:cron.demo,文件内容如下   php程序员站
 59 22 * * 1 bin/zlbf1    php程序员站 59 22 * * 2 bin/zlbf2    phperz~com 59 22 * * 3 bin/zlbf3    phperz.com 59 22 * * 4 bin/zlbf4    php程序员站 59 22 * * 5 bin/zlbf5   php程序员之家  59 22 * * 6 bin/zlbf6    php程序员站 ---- f.在demo用户下执行下面的命令:
 php程序员站 crontab cron.demo 执行的结果放到    php程序员站 /var/spool/cron/crontabs/demo文件里    phperz.com ---- g.重新启动cron 进程,命令:kill -1 进程号
 www.phperz.com ---- h.执行结果放在本用户的邮件里   php程序员站  ---- i.查看结果是否执行,请看:/var/adm/cron/log文件
 phperz.com ---- 4.2.2归档方式   phperz.com
 ---- a. 找到要回收的数据文件、联机重做登录文件、控制文件和参数文件   www~phperz~com
 ---- b. 正常关闭数据库,作一次全回收(用操作系统的TAR命令,可以写成shell程序),然后打开数据库供正常使用,shell程序如下:   www.phperz.com
 tar cvf /dev/rmt/ctape2 /u1/oracle/dbs/ctrl1ora7.ctl\
 php程序员站 /u1/oracle/dbs/ctrl2ora7.ctl\   www.phperz.com  /u1/oracle/dbs/ctrl3ora7.ctl\    php程序员之家 /u1/oracle/dbs/systora7.dbf\    phperz~com /u1/oracle/dbs/rbsora7.dbf\    phperz~com /u1/oracle/dbs/tempora7.dbf\    phperz~com /u1/oracle/dbs/toolora7.dbf\   phperz.com  /u1/oracle/dbs/usrora7.dbf\   php程序员之家  /ls1/ls1.dbf\   www.phperz.com  /u1/oracle/dbs/log1ora7.dbf\    php程序员站 /u1/oracle/dbs/log2ora7.dbf\    www.phperz.com /u1/oracle/dbs/log3ora7.dbf    phperz.com ---- a. 经常作联机的表空间和数据文件的部分回收   www.phperz.com  首先标记联机表空间回收的开始   www.phperz.com  alter tablespace 表空间名 begin backup;    www~phperz~com 用操作系统命令备份数据文件   phperz.com  最后标记联机的表空间回收结束   php程序员之家
 alter tablespace 表空间名 end backup    phperz.com ---- 多个表空间可以一起做标记,备份做标记的所有数据文件后,一起标记结束。    phperz~com ---- d. 当数据库结构发生改变后,要对它的控制文件做回收   www.phperz.com  sqldba >;alter database backup   www.phperz.com
 controlfile to ’文件名’ reuse;    phperz.com ---- 5 结束语
 www~phperz~com ---- 一套完善的备份制度是数据库安全运行的有利保障,文章所介绍的可供同行们参考。
 php程序员站 
 |