`
hugang357
  • 浏览: 182660 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

备份恢复详谈

阅读更多
1:备份如何分类
  逻辑备份:exp/imp
  物理备份:
  RMAN备份
  full backup/incremental backup(累积/差异)
  热备份:alter tablespace begin/end backup;
  冷备份:脱机备份(database shutdown)
  2:归档是什么含义
  关于归档日志:Oracle要将填满的在线日志文件组归档时,则要建立归档日志(archived redo log)。
  其对数据库备份和恢复有下列用处:
  数据库后备以及在线和归档日志文件,在操作系统和磁盘故障中可保证全部提交的事物可被恢复。
  在数据库打开和正常系统使用下,如果归档日志是永久保存,在线后备可以进行和使用。
  数据库可运行在两种不同方式下:
  NOARCHIVELOG方式或ARCHIVELOG 方式数据库在NOARCHIVELOG方式下使用时,不能进行在线日志的归档,如果数据库在ARCHIVELOG方式下运行,可实施在线日志的归档。
    3:如果一个表在2004-08-04 10:30:00 被drop,在有完善的归档和备份的情况下,如何恢复?

  手工拷贝回所有备份的数据文件
  startup mount;
  sql alter database recover automatic until time '2004-08-04:10:30:00';
  alter database open resetlogs;
  4:rman是什么,有何特点?
  RMAN(Recovery Manager)是DBA的一个重要工具,用于备份、还原和恢复oracle数据库, RMAN 可以用来备份和恢复数据库文件、归档日志、控制文件、系统参数文件,也可以用来执行完全或不完全的数据库恢复。RMAN有三种不同的用户接口:
  COMMAND LINE方式、GUI 方式(集成在OEM 中的备份管理器)、API 方式(用于集成到第三方的备份软件中)。
  具有如下特点:
  1)功能类似物理备份,但比物理备份强大N倍;
  2)可以压缩空块;
  3)可以在块水平上实现增量;
  4)可以把备份的输出打包成备份集,也可以按固定大小分割备份集;
  5)备份与恢复的过程可以自动管理;
  6)可以使用脚本(存在Recovery catalog 中)
  7)可以做坏块监测
  5:standby的特点
  备用数据库(standby database):ORACLE推出的一种高可用性(HIGH AVAILABLE)数据库方案,
  在主节点与备用节点间通过日志同步来保证数据的同步,备用节点作为主节点的备份
  可以实现快速切换与灾难性恢复,从920开始,还开始支持物理与逻辑备用服务器。
  Oracle 9i中的三种数据保护模式分别是:
  1)、MAXIMIZE PROTECTION :最大数据保护与无数据分歧,LGWR将同时传送到备用节点,
  在主节点事务确认之前,备用节点也必须完全收到日志数据。如果网络不好,引起LGWR不能传送数据,将引起严重的性能问题,导致主节点DOWN机。
  2)、MAXIMIZE AVAILABILITY :无数据丢失模式,允许数据分歧,允许异步传送。
  正常情况下运行在最大保护模式,在主节点与备用节点的网络断开或连接不正常时,自动切换到最大性能模式,
  主节点的操作还是可以继续的。在网络不好的情况下有较大的性能影响。
  3)、MAXIMIZE PERFORMANCE:这种模式应当可以说是从8i继承过来的备用服务器模式,异步传送,
  无数据同步检查,可能丢失数据,但是能获得主节点的最大性能。9i在配置DATA GUARD的时候默认就是MAXIMIZE PERFORMANCE
  6:对于一个要求恢复时间比较短的系统(数据库50G,每天归档5G),你如何设计备份策略
  rman/每月一号 level 0 每周末/周三 level 1 其它每天level 2
详解Oracle RMAN物理备份技术
RMAN备份技术之RMAN增量备份
  我们可以用RMAN进行数据库、表空间和数据文件的增量备份。
  如果数据库运行在归档模式,在数据库OPEN状态我们可以进行增量备份;如果数据库处于非归档方式,在数据库CLOSE状态我们也可以进行增量备份。增量备份只备份上次备份以来变化过的数据块。
  每个数据块都包含一个system change number (SCN),记录着该数据块的最后改变。在进行增量备份的时候,RMAN将没给数据块的SCN和父级增量备份的CHECKPOINT SCN进行比较,如果该数据块的SCN大于等于父级的CHECKPOINT SCN,RMAN将备份该数据块。
  为了提高数据库增量备份的性能,我们可以指定变化跟踪文件来监控数据块的改变:
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING;
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE 'd:/rman_change.f'      REUSE;
            SQL> ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;


  可以通过以下命令查询:
SQL> SELECT FILENAME,STATUS FROM V$BLOCK_CHANGE_TRACKING


  移动跟踪文件:
SQL>SELECT filename FROM V$BLOCK_CHANGE_TRACKING;
SQL>SHUTDOWN IMMEDIATE;
SQL>HOST COPY OLDFILE NEWFILE
SQL>STARTUP MOUNT;
SQL>ALTER DATABASE RENAME FILE ‘OLDFILE' TO ‘NEWFILE’;
SQL>ALTER DATABASE OPEN;
          


  如果不能关闭数据库,必须禁用跟踪文件然后移动跟踪文件:
ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE 'new_location';
          


  增量备份分为两种:差异增量备份和累积增量备份。缺省的增量备份是差异增量备份。
  差异增量备份:备份同级或者上级(如果有同级备份,先找同级)备份(差异或者累积)以来变化的数据块。如果找不到同级或者上级(知道 LEVEL0),如果ORACLE版本>=10.0.0,RMAN将COPY从数据文件创建开始所有的数据块作为LEVEL1备份;如果 ORACLE版本<10.0.0,RMAN将生成LEVEL0备份。
  如下图所示。
  周日:RMAN备份所有被使用过的数据块。周一至周六:RMAN备份自从上次LEVEL0或者LEVEL1备份以来变化的数据块。
  累积增量备份:备份上级备份以来变化的数据块。
  如下图所示:    

  周日:RMAN备份所有被使用过的数据块。
  周一至周六:RMAN备份自从上次LEVEL0备份以来变化的数据块。    

  我们可以看出累积增量备份备份文件要比差异增量备份文件大,因为累积增量备份重复备份了同级别备份的数据块。
  制定一个恰当的备份策略是很重要的,通常我们在有50%的数据块改变的时候,进行一次LEVEL0级别的备份。可以通过以下查询来获得数据块增量备份已经备份50%以上的数据块。
SELECT FILE#, INCREMENTAL_LEVEL, COMPLETION_TIME, BLOCKS, DATAFILE_BLOCKS
  FROM V$BACKUP_DATAFILE
  WHERE INCREMENTAL_LEVEL > 0
  AND BLOCKS / DATAFILE_BLOCKS > .5
  ORDER BY COMPLETION_TIME;
          


  增量备份示例:
RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE;
RMAN> BACKUP INCREMENTAL LEVEL 1 TABLESPACE SYSTEM DATAFILE
                                 'ora_home/oradata/ tools01.dbf';
RMAN> BACKUP INCREMENTAL LEVEL = 1 CUMULATIVE TABLESPACE users;
          


  增量追加备份:前滚镜像拷贝
  ORACLE文档原文:Incrementally Updated Backups: Rolling Forward Image Copy Backups.
  增量追加备份工作原理:首先创建一个文件镜像拷贝,然后定期把从上次镜像拷贝最大SCN以来变化的数据块追加到镜像拷贝文件中。增量追加备份可以达到快速恢复的目的,如果是每天进行增量追加的话,在进行恢复的时候,我们最多应用一天的REDO数据就可以完成恢复。
  创建增量追加备份,格式如下:
BACKUP... FOR RECOVER OF COPY WITH TAG


  一个基础的增量追加备份示例:简称basic脚本:
RUN ...{
   RECOVER COPY OF DATABASE WITH TAG 'incr_update';
   BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'incr_update'
       DATABASE;
   }
          


  为了理解上述脚本,我们先看一下如果没有数据文件拷贝和增量备份运行这两个脚本的情况。
  1、如果没有LEVEL0备份或者备份文件拷贝,执行BACKUP INCREMENTAL LEVEL 1…… FOR RECOVER OF COPY WITH TAG……不能产生LEVEL1增量备份文件,但是RMAN会按照指定的tag在DATAFILE对应的目录下创建一分镜像文件拷贝。
  2、如果没有LEVEL0备份或者备份文件拷贝,执行RECOVER COPY OF DATABASE WITH TAG……则生成一些信息但是不产生错误。
  我们看一下整个basic脚本的执行情况:
  第一次运行该脚本没有数据文件拷贝和增量备份所以执行RECOVER COPY OF DATABASE WITH TAG 'incr_update'没有任何结果;执行BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'incr_update' DATABASE将产生数据文件的镜像文件拷贝。
  第二次运行该脚本,由于第一次运行的时候BACKUP INCREMENTAL LEVEL 1…… FOR RECOVER OF COPY WITH TAG……命令产生一个镜像文件拷贝,但是没有LEVEL1的增量备份,所以执行RECOVER COPY OF DATABASE WITH TAG 'incr_update'还是没有任何结果;执行BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'incr_update' DATABASE将产生LEVEL1增量备份。
  第三次运行该脚本,执行RECOVER COPY OF DATABASE WITH TAG 'incr_update'命令将把第二次执行该脚本产生的LEVEL1增量备份追加到镜像文件拷贝,同时又产生一个新的LEVEL1增量备份文件。
  以后再执行该脚本都是把上次产生的LEVEL1的增量备份追加到镜像文件拷贝,然后再产生一个新的LEVEL1的增量备份文件。
  如果需要恢复,我们首先恢复镜像文件拷贝和最后一次LEVEL1增量备份,最后应用REDO.


Oracle数据库有三种标准的备份方法
racle数据库有三种标准的备份方法:
导出/导入(EXP/IMP)、热备份和冷备份。
一、 导出/导入(Export/Import)
利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。
1、 简单导出数据(Export)和导入数据(Import)
Oracle支持三种方式类型的输出:
(1)、表方式(T方式),将指定表的数据导出。
(2)、用户方式(U方式),将指定用户的所有对象及数据导出。
(3)、全库方式(Full方式),将指定数据库中的所有对象导出。
数据导入(Import)的过程是数据导出(Export)的逆过程,分别将数据文件导入数据库和将数据库数据导出到数据文件。
2、 增量导出/导入
增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。在进行此种导出时,系统不要求回答任何问
题。导出文件名缺省为export.dmp,如果不希望自己的输出文件定名为export.dmp,必须在命令行中指出要用的文件名。
(1)“完全”增量导出(Complete)
即备份三个数据库,比如:exp system/manager inctype=complete file=040731.dmp
(2)“增量型”增量导出
备份上一次备份后改变的数据,比如:exp system/manager inctype=incremental file=040731.dmp
(3)“累积型”增量导出 比如:exp system/manager inctype=cumulative file=040731.dmp
数据库管理员可以排定一个备份日程表,用数据导出的三个不同方式合理高效的完成。
比如数据库的被封任务可以做如下安排:
      星期一:完全备份(A)
      星期二:增量导出(B)
      星期三:增量导出(C)
      星期四:增量导出(D)
      星期五:累计导出(E)
      星期六:增量导出(F)
      星期日:增量导出(G)
如果在星期日,数据库遭到意外破坏,数据库管理员可按以下步骤来恢复数据库:
第一步:用命令CREATE DATABASE重新生成数据库结构;
第二步:创建一个足够大的附加回滚。
第三步:完全增量导入A:
imp system/manager inctype=RESTORE FULL=y FILE=A
第四步:累计增量导入E:
imp system/manager inctype=RESTORE FULL=Y FILE=E
第五步:最近增量导入F
imp system/manager inctype=RESTORE FULL=Y FILE=F
二、 冷备份
      冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份是将关键性文件拷贝到另外的位置的
一种说法。对于备份Oracle信息而言,冷备份是最快和最安全的方法。冷备份的优点是:
      1、 是非常快速的备份方法(只需拷文件)
      2、 容易归档(简单拷贝即可)
      3、 容易恢复到某个时间点上(只需将文件再拷贝回去)
      4、 能与归档方法相结合,做数据库“最佳状态”的恢复。
      5、 低度维护,高度安全。
但冷备份也有如下不足:
      1、 单独使用时,只能提供到“某一时间点上”的恢复。
      2、 在实施备份的全过程中,数据库必须要作备份而不能作其他工作。也就是说,在冷备份过程中,数据库必须是关闭状态。
      3、 若磁盘空间有限,只能拷贝到磁带等其他外部存储设备上,速度会很慢。
      4、 不能按表或按用户恢复。
如果可能的话(主要看效率),应将信息备份到磁盘上,然后启动数据库(使用户可以工作)并将备份的信息拷贝到磁带上(拷贝的同时,数
据库也可以工作)。冷备份中必须拷贝的文件包括:
      1、 所有数据文件
      2、 所有控制文件
      3、 所有联机REDO LOG文件
      4、 Init.ora文件(可选)
    值得注意的是冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的。
下面是作冷备份的完整例子。
(1) 关闭数据库
sqlplus /nolog
sql> connect /as sysdba
sql> shutdown normal;
2) 用拷贝命令备份全部的时间文件、重做日志文件、控制文件、初始化参数文件
sql> cp <file>    <backup directory>;
(3) 重启Oracle数据库
sql>startup
三、 热备份
      热备份是在数据库运行的情况下,采用archivelog mode方式备份数据库的方法。所以,如果你有昨天夜里的一个冷备份而且又有今天的热
备份文件,在发生问题时,就可以利用这些资料恢复更多的信息。热备份要求数据库在Archivelog方式下操作,并需要大量的档案空间。一旦
数据库运行在archivelog状态下,就可以做备份了。热备份的命令文件由三部分组成:
1. 数据文件一个表空间一个表空间的备份。
      (1) 设置表空间为备份状态
      (2) 备份表空间的数据文件
      (3) 回复表空间为正常状态
2. 备份归档log文件
      (1) 临时停止归档进程
      (2) log下那些在archive rede log目标目录中的文件
      (3) 重新启动archive进程
      (4) 备份归档的redo log文件
3. 用alter database bachup controlfile命令来备份控制文件
热备份的优点是:
      1. 可在表空间或数据库文件级备份,备份的时间短。
      2. 备份时数据库仍可使用。
      3. 可达到秒级恢复(恢复到某一时间点上)。
      4. 可对几乎所有数据库实体做恢复
      5. 恢复是快速的,在大多数情况下数据库仍工作时恢复。
热备份的不足是:
      1. 不能出错,否则后果严重
      2. 若热备份不成功,所得结果不可用于时间点的恢复
      3. 因难于维护,所以要特别仔细小心,不允许“以失败告终”。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics